ubuntuusers.de

tftpd

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


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.

Der DARPA-TFTP-Server ist ein einfacher Server für das TFTP-Protokoll, welches im RFC1350 🇬🇧 standardisiert ist. TFTP nutzt standardmäßig UDP über den Port 69. TFTP darf nicht mit FTP verwechselt werden. Auch wenn TFTP sehr alt ist, wird es noch immer häufig für PXE und auch für das Übertragen von Firmware auf Netzwerk-Hardware genutzt. Es arbeitet unverschlüsselt und bietet keine Authentifizierung.

Installation

tftpd sowie ein Internet-Superserver können direkt aus den Quellen installiert werden [1]. Hat man bereits einen Internet-Superserver in Betrieb, so muss man diesen entsprechend konfigurieren. tftpd ist vom Metapaket inet-superserver abhängig, durch welches standardmäßig xinetd installiert wird, sofern kein anderer Internet-Superserver bereits installiert ist. Will man einen anderen, so sollte man diesen vor der Installation von tftpd installieren.

  • tftpd (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install tftpd 

Oder mit apturl installieren, Link: apt://tftpd

Konfiguration

Die Konfiguration ist maßgeblich davon abhängig, welcher Internet-Superserver installiert ist. Unter Ubuntu existieren mehrere Varianten:

inetd

Für inetutils-inetd und openbsd-inetd wird in der Datei /etc/inetd.conf automatisch ein Eintrag erstellt.

tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp

Dieser sorgt dafür, dass tftpd nur auf IPv4 lauscht. Soll der TFTP-Server auch auf IPv6 lauschen, so muss eine weitere Zeile eingefügt werden.

tftp            dgram   udp6     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/tftp

xinetd

Für xinetd muss die Datei /etc/xinetd.d/tftpd mit folgendem Inhalt erstellt werden:

service tftp
{
        #für IPv4
        flags       = NAMEINARGS
        socket_type = dgram
        protocol    = udp
        wait        = yes
        user        = nobody
        server      = /usr/sbin/tcpd
        server_args = /usr/sbin/in.tftpd /srv/tftp 
}

service tftp
{
        #für IPv6
        flags       = NAMEINARGS
        socket_type = dgram
        protocol    = udp6
        wait        = yes
        user        = nobody
        server      = /usr/sbin/tcpd
        server_args = /usr/sbin/in.tftpd /srv/tftp 
}

Verzeichnis für Dateien

tftpd nutzt das Verzeichnis /srv/tftp für auszuliefernde Dateien. Dies kann in den Einträgen für den Internet-Superserver geändert werden. Standardmäßig ist das Verzeichnis /srv/tftpd nicht vorhanden und muss manuell erstellt werden.

sudo mkdir /srv/tftp 

Legt man dort Dateien ab müssen diese entweder nobody (Eigentümer) bzw. nogroup (Gruppe) gehören oder für alle (others) lesbar sein, damit sie von tftpd ausgeliefert werden können. Damit Dateien auf den TFTP-Server hochgeladen werden können, müssen diese bereits auf dem Server existieren (z.B. vorher mit touch anlegen). Zudem muss der Nutzer nobody auf die Datei Schreibberechtigung haben. Alternativ kann tftpd auch unter einem anderen benutzer laufen, dazu muss die Konfiguration des Internet-Superserver angepasst werden. Hierzu ist nobody durch den entsprechenden Benutzernamen zu ersetzen.

Problembehebung

Ist der TFTP-Server nicht erreichbar, sollte man den syslog auf mögliche Fehlermeldung des inetd untersuchen, da zwar inetd starten kann, eventuell der tftp-Dienst aber nicht.

Mit netstat kann zudem geprüft werden, ob der inetd auf dem UDP-Port 69 lauscht. Ist dies nicht so ist der Fehler im inetd zu suchen.

Diese Revision wurde am 14. Juli 2021 08:00 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, Ubuntu, Server, Internet, System, Installation