ubuntuusers.de

advanced TFTP

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.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Wiki/Icons/service.png 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.

Wiki/Icons/synaptic.png

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/

Wiki/Icons/settings.png

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:

Der Advanced TFTP-Server beherrscht nur IPv4, wenn er standalone (ohne inetd) betrieben wird. Bei der Nutzung des inetd kann IPv6 problemlos genutzt werden, sofern man die Konfiguration anpasst (s.u.)

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:

atftpd 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.

Diese Revision wurde am 21. November 2023 23:56 von hitzi erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Netzwerk, System, Server