TFTP-Server

Das Trivial File Transfer Protocol (TFTP) ist ein besonders einfaches Protokoll zur Dateiübertragung im Netzwerk.

Im opsi-Umfeld stellt der TFTP-Server die Boot-Images für die opsi-Clients bereit. Standardmäßig kommt dafür opsi-tftpd-hpa zum Einsatz. Dieses Paket wird automatisch als Abhängigkeit von opsi-server-full installiert.

Der Dienst opsi-tftpd-hpa startet automatisch beim Systemstart. Sie können ihn mit sudo systemctl stop opsi-tftpd-hpa.service stoppen und mit sudo systemctl start opsi-tftpd-hpa.service starten.

TFTP bietet weder Authentifizierung noch Verschlüsselung oder Komprimierung. Daher sollte es ausschließlich in geschützten und vertrauenswürdigen Netzwerken eingesetzt werden.

Konfiguration

In der Regel startet der TFTP-Dienst mit einem Verbose-Parameter, der für eine grundlegende Protokollierung im systemd-Journal sorgt. Für Fehlersuche und Analyse können Sie das Loglevel individuell anpassen:

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

Suchen Sie im Editor nach der Zeile mit ExecStart und ersetzen Sie -v durch --verbosity <log-level>, z. B. --verbosity 7 für maximale Details. Starten Sie anschließend den Dienst neu:

sudo systemctl restart  opsi-tftpd-hpa.service

Ein weiterer wichtiger Parameter ist --blocksize <size>, mit dem Sie die Blockgröße für die Dateiübertragung festlegen. Die Blockgröße kann zwischen 512 und 65464 Bytes liegen. TFTP nutzt das UDP-Protokoll, wobei jedes Paket einzeln bestätigt wird. Das Protokoll ist anfällig für Fragmentierung, MTU-Probleme und Paketverluste. Die Wahl der Blockgröße beeinflusst daher die Übertragungsgeschwindigkeit und die Zuverlässigkeit:

  • Größere Blockgrößen beschleunigen die Übertragung, erhöhen aber das Risiko von Netzwerk-Problemen.

  • Kleinere Blockgrößen sind robuster, aber langsamer.

Um die Blockgröße zu ändern, ergänzen Sie den ExecStart-Eintrag wie oben beschrieben um --blocksize <size>, z. B. --blocksize 8192.

TFTP-Ports und Firewall-Konfiguration

Der TFTP-Client verbindet sich zunächst mit Port 69/udp des Servers. Für die eigentliche Datenübertragung werden jedoch dynamisch sogenannte Transaktionskennungen (TIDs) vergeben, die als UDP-Ports im Bereich 1024 bis 65535 dienen. Die Kommunikation erfolgt dann zwischen den jeweiligen TID-Ports von Client und Server.

Die Firewall des Servers muss daher so konfiguriert sein, dass sie eingehende Verbindungen auf Port 69/udp für den Erstkontakt zulässt und die UDP-Kommunikation zwischen den TID-Ports ermöglicht. Am einfachsten gelingt dies mit den Kernel-Modulen ip_conntrack_tftp bzw. nf_conntrack_tftp, die den Status von TFTP-Verbindungen überwachen und steuern.

TFTP-Troubleshooting

Prüfen Sie, ob die Konfiguration des TFTP-Servers korrekt ist und ob der Dienst läuft. Testen Sie verschiedene Blockgrößen, um die optimale Einstellung für Ihr Netzwerk zu finden. Der Wert 512 ist besonders robust, aber langsamer.

Mit folgendem Befehl können Sie die letzten 100 Zeilen des TFTP-Server-Logs anzeigen und die Ausgabe fortlaufend aktualisieren:

journalctl -u opsi-tftpd-hpa -n 100 -f

Im Log sehen Sie, welche Clients welche Dateien abrufen und ob dabei Fehler auftreten.