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 verbindet sich initial mit Port 69 auf dem Server. Der Server sendet aber keine Pakete über Port 69. Stattdessen wählen Client und Server für die weitere Kommunikation sogenannte TIDs aus. Ein Transaction Identifier ist eine Kennung, um Transaktionen eindeutig zu identifizieren. Die TIDs entsprechen UDP-Ports und liegen im Bereich von 1024 bis 65535. Alle Pakete werden dann vom TID-Port des Servers zum TID-Port des Clients und umgekehrt gesendet.

Die Server-Firewall muss daher so konfiguriert sein, dass eingehende Verbindungen auf Port 69/udp erlaubt sind. Zusätzlich muss die UDP-Kommunikation zwischen den TID-Ports erlaubt werden. Das funktioniert am einfachsten über das Kernel-Modul ip_conntrack_tftp bzw. nf_conntrack_tftp.