advanced TFTP
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Das Trivial File Transfer Protocol (TFTP) ist ein Vorgänger des FTP-Protokolls, wobei es weit weniger Möglichkeiten besitzt. Heute wird es nur noch für PXE-Bootvorgänge oder die Installation von alternativer Firmware verwendet, z.B. auf Hardware-Routern. TFTP und FTP sind völlig unterschiedliche Protokolle, für FTP sollte man ein reguläres Programm wie ProFTPD oder vsftpd einsetzen.
Ubuntu stellt verschiedene TFTP-Server und -Clients zur Verfügung. In dieser Anleitung wird die Benutzung des Advanced TFTP-Server erklärt. Alternativ kann der tftpd-hpa-Server für TFTP verwendet werden.
Installation¶
atftpd (universe, Serverkomponente)
atftp (universe, Client)
Befehl zum Installieren der Pakete:
sudo apt-get install atftpd atftp
Oder mit apturl installieren, Link: apt://atftpd,atftp
Damit werden Server und Client installiert [1]. Der Client wird nicht zwingend benötigt, kann aber zum Testen des Servers genutzt werden. Als empfohlenes Paket wird zudem der inetd inetutils-inetd installiert, sofern man dies nicht explizit abwählt oder ein anderer Internet-Superserver installiert ist. Dieser kann, muss aber nicht genutzt werden und wird standardmäßig ausschließlich für IPv4 eingerichtet.
Bei der Installation des Servers wird automatisch das folgende Verzeichnis mit passenden Berechtigungen erstellt. Dieses kann zur Ablage von Dateien genutzt werden:
drwxr-xr-x 2 nobody root 4096 Aug 10 11:15 /srv/tftp/
Konfiguration¶
Achtung!
Der Server reagiert sehr empfindlich auf eine Fehlerhafte Konfiguration. Er lässt sich dann unter Umständen nicht mehr deinstallieren.
Per Default wird atftpd von inetd ausgeführt. Es muss sichergestellt werden, dass entweder der Internet-Superserver inetd oder atftpd selbst auf dem Port lauscht, beides gleichzeitig führt zu Konflikten.
standalone-Betrieb (ohne inetd)¶
Hinweis:
Möchte man atftpd ohne inetd betreiben, so ist die entsprechende Konfigurationsdatei für inetd bzw. xinetd zu ändern und die Konfiguration für atftpd zu entfernen. Anschließend muss der inetd neugestartet werden.
Anschließend wird die Konfigurationdatei /etc/default/atftpd leicht modifiziert [2], indem man den Wert USE_INETD=
von true
auf false
ändert:
USE_INETD=false
Abschließend kann atftpd wie gewohnt gestartet werden:
sudo service atftpd start
Betrieb mit inetd¶
Die Datei /etc/default/atftpd muss ggf. angepasst werden, wenn man sie vorher für den standalone-Betrieb konfiguriert hat.
USE_INETD=true
Standardmäßig wird über update-inetd eine passende IPv4-Konfiguration erstellt, sofern man inetutils-inetd oder openbsd-inetd installiert hat. Soll der Server auch auf IPv6 lauschen, sind weitere Schritte erforderlich. Hierzu muss die Datei /etc/inetd.conf angepasst werden. Folgende Zeile muss hinzugefügt werden.
tftp dgram udp6 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp
Für xinetd sieht die Konfiguration anders aus. Hier muss die Datei /etc/xinetd.d/atftpd erstellt und mit folgendem Inhalt gefüllt werden.
service tftp { flags = NAMEINARGS socket_type = dgram protocol = udp wait = yes user = nobody server = /usr/sbin/tcpd server_args = /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp } service tftp { flags = NAMEINARGS socket_type = dgram protocol = udp6 wait = yes user = nobody server = /usr/sbin/tcpd server_args = /usr/sbin/in.tftpd --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp }
Nach Neustart des Internet-Superservers ist der Server betriebsbereit.
Verwendung¶
Der TFTP-Server kann von nun an mit den üblichen Befehlen von service
gesteuert werden[5]:
sudo service atftpd BEFEHL
wobei BEFEHL
einer der folgenden sein kann:start, stop, restart, reload, force-reload, status
Nun prüft man nur noch mit dem Client, ob der Zugriff auf den Server klappt:
atftp localhost
Falls ja, sieht man den Prompt des TFTP-Servers:
tftp>
Dateien können nun mit den Befehlen get <Dateiname>
und put <Dateiname>
von dem Server heruntergeladen bzw. dort abgelegt werden. Beendet wird die Verbindung mit quit
.
Weitere Hinweise sind der jeweiligen Manpage zu entnehmen.
Links¶
Advanced TFTP 🇬🇧 auf Freshmeat
Serverdienste Übersichtsartikel