TFTP-Server

Das Trivial File Transfer Protocol ist ein vereinfachtes Protokoll zur Dateiübertragung über ein Netzwerk. Anders als FTP oder SFTP bietet TFTP nur grundlegende Funktionen. TFTP kommt häufig zum Einsatz, um Firmware-Updates, Konfigurationsdateien oder Startdateien von einem TFTP-Server zu einem TFTP-Client zu übertragen.

Da TFTP keine Authentifizierung, Verschlüsselung oder Komprimierung der übertragenen Daten unterstützt, wird es normalerweise nur in geschlossenen und vertrauenswürdigen Netzwerken verwendet.

Der TFTP-Server stellt opsi-Boot-Images für die opsi-Clients zur Verfügung. Der Standard-TFTP-Server für opsi heißt opsi-tftpd-hpa; das Paket wird automatisch als Abhängigkeit zum Paket opsi-server-full installiert.

Der opsi-tftpd-hpa startet in der Voreinstellung automatisch beim Systemstart. Um ihn zu stoppen, geben Sie den Befehl sudo systemctl stop opsi-tftpd-hpa.service ein; sudo systemctl start opsi-tftpd-hpa.service startet den Dienst wieder.

Für gewöhnlich startet der TFTP-Dienst mit einem Verbose-Parameter, der für ausführliche Informationen in den Logfiles sorgt. Zur Fehlersuche oder zur Analyse können Sie den Loglevel anpassen. Dazu verwenden Sie den folgenden Befehl:

sudo systemctl edit --full opsi-tftpd-hpa.service

Suchen Sie im Texteditor nach der Zeile, die mit ExecStart beginnt und ersetzen Sie -v durch --verbosity <log-level>, z. B. --verbosity 7 für sehr viele Details. Danach starten Sie den Dienst neu:

sudo systemctl restart  opsi-tftpd-hpa.service

TFTP-Ports und Firewall-Konfiguration

Der Client stellt zunächst eine Verbindung zu Port 69 des Servers für die TFTP-Kommunikation her. Der Server verwendet Port 69 jedoch nicht, um Pakete zurückzusenden. Stattdessen wählen sowohl der Client als auch der Server eindeutige Transaktionskennungen (TIDs) für ihre nachfolgenden Kommunikationen. Eine TID ist eine Kennung, die zur eindeutigen Identifizierung von Transaktionen verwendet wird. Diese TIDs entsprechen UDP-Ports, die von 1024 bis 65535 reichen. Alle weiteren Pakete werden dann zwischen dem TID-Port des Servers und dem TID-Port des Clients ausgetauscht.

Daher muss die Firewall des Servers so konfiguriert sein, dass sie eingehende Verbindungen über Port 69/udp für den Erstkontakt zulässt. Außerdem muss auch die UDP-Kommunikation zwischen den TID-Ports erlaubt werden. Das funktioniert am einfachsten über die Kernel-Module ip_conntrack_tftp bzw. nf_conntrack_tftp, die bei der Verwaltung und Verfolgung des Status von TFTP-Verbindungen helfen.