[[Vorlage(Getestet, focal)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] [:Dienste:Starten und Beenden von Diensten] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/service.png, 48, align=left)]] Das [wikipedia:Trivial_File_Transfer_Protocol: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-Boot: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 [:PXE-Boot:tftpd-hpa]-Server für TFTP verwendet werden. [[Bild(Wiki/Icons/synaptic.png, 48, align=right)]] = Installation = {{{#!vorlage Paketinstallation atftpd, universe, Serverkomponente atftp, universe, Client }}} 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/ }}} [[Bild(Wiki/Icons/settings.png, 48, align=right)]] = Konfiguration = {{{#!vorlage Warnung 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) == {{{#!vorlage Hinweis Der Advanced TFTP-Server beherrscht nur [wikipedia:IPv4:], wenn er standalone (ohne inetd) betrieben wird. Bei der Nutzung des inetd kann [wikipedia: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: {{{#!vorlage Befehl 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]: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl atftpd localhost }}} Falls ja, sieht man den Prompt des TFTP-Servers: {{{ tftp> }}} Dateien können nun mit den Befehlen '''`get `''' und '''`put `''' von dem Server heruntergeladen bzw. dort abgelegt werden. Beendet wird die Verbindung mit '''`quit`'''. Weitere Hinweise sind der jeweiligen [man:atftp:Manpage] zu entnehmen. = Links = * [freshmeat:atftp:Advanced TFTP] {en} auf Freshmeat * [:Serverdienste:] {Übersicht} Übersichtsartikel #tag: Netzwerk, System, Server