Montag, 8. Mai 2017

tftp funktioniert über NAT nicht

Am Samstag habe ich an einer Aussenstelle einen Ubiquiti EdgeRouter-X installiert und so konfiguriert, dass alle Konfigurationsanpassungen mittels TFTP auf einen Server geschrieben werden. So möchte ich alle Anpassungen rückverfolgen und im Notfall auch eine „last known good“-Konfiguration einspielen können.

Auf dem Router bin ich der Anleitung EdgeRouter – Manage the configuration file gefolgt und habe folgenden Befehl eingegeben:

# configure
# set system config-management commit-archive location tftp://0.0.0.0/
# commit
# save

Nun musste ich auf einem Debian-Server noch TFTP installieren und ein Verzeichnis freigeben, in welches die Textdateien mit der Konfiguration abgelegt werden (Versioniert nach Name des Gerätes und dem Datum und der Uhrzeit der Anpassung).

Das ging der Anleitung Ubuntu / Debian Linux: Install and Setup TFTPD Server folgend spielend leicht:

# apt-get install tftpd-hpa

Meine individualisierte Konfigurationsdatei unter /etc/default/tftpd-hpa liest sich folgendermassen:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/edgerouter"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--verbose --secure --create"

Notabene: Die in tftpd allows connections, but times out transferring a file angegebenen Anpassungen an der Konfigurationsdatei waren nicht nötig.

Mit der Option --verbose loggt der TFTP-Server schön brav — und vor allem ausführlich(er) — nach /var/log/syslog:

...
May  8 19:37:46 SERVER systemd[1]: Starting LSB: HPA's tftp server...
May  8 19:37:46 SERVER tftpd-hpa[10636]: Starting HPA's tftpd: in.tftpd.
May  8 19:37:46 SERVER systemd[1]: Started LSB: HPA's tftp server.
May  8 19:38:15 SERVER in.tftpd[10999]: WRQ from 0.0.0.111 filename test.txt
May  8 19:38:25 SERVER in.tftpd[11009]: RRQ from 0.0.0.111 filename test.txt
...

Quelle: [syslinux] logging location of tftpd-hpa

Ein Fallstrick gibt es aber: Schreitet man zum Test, sollte man beachten, dass der Client und der Server direkt miteinander kommunizieren können, sprich dass kein NAT-Router zwischen den beiden Geräten steht. Grund: TFTP verwendet UDP, was über NAT nicht auf anhieb funktioniert.

Ich bis mir deswegen sicherlich eine halbe Stunde lang die Zähne aus, weil ich von meinem Mac mini aus Dateien hin- und herkopieren wollte, es aber nicht klappte. Die Verbindung konnte ich zwar herstellen, doch Dateioperationen waren nicht möglich:

$ tftp 0.0.0.0
tftp> get test.txt
Transfer timed out.

Der Grund: Der Mac mini kommuniziert per OpenVPN mit dem entfernten Netzwerk, und der OpenVPN-Router verwendet NAT.

Erst nachdem ich von Servern im selben Subnetz aus versuchte, Verbindungen herzustellen, realisierte ich, dass der Server seit langem funktionierte.

Liked this post? Follow this blog to get more. 

Labels: Uncategorized

Kommentar erfassen