Tftp

Aus Freifunk Dresden - Anwender-Wiki
Version vom 24. Oktober 2016, 18:55 Uhr von Stephan (Diskussion | Beiträge) (tftp client recovery)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Recovery mit TFTP und Bootloader

Wenn der Router aus irgend einem Grund nicht mehr über die Konfigurationsseite des Routers und auch nicht über den Failsafe-Mode (via sysupgrade) die firmware aktzeptiert, so kann versucht werden, die Firmware via des Bootloaders zu laden. Die meisten Router können in einen Zustand gebracht werden, bei dem sich der Router entweder als tftp-Client oder tftp-Server verhält. Dies ist abhänig vom Gerät und kann auf openwrt.org eingesehen werden. Wenn der Router in einem der beiden Modi läuft, so besitzen diese eine IP Adresse (oder der Server muss eine bestimmte IP Adresse besitzen), die von der gewohnten IP abweicht. Beide Geräte, Router und Linux-Rechner müssen im gleichen Subnetz liegen.


Router verhält sich als tftp Server (Beispiel TP-Link WR841)

apt-get install tftp-hpa

Router verhält sich als tftp Client: Dieses Beispiel gilt NUR für den TP-Link TL-WR841 V8,V9,V10,V11. (openwrt.org:tftp_recovery_via_bootloader_for_v8_v9_v10_v11)

Zuerst muss auf dem Linux-Rechner der tftp-Server installiert sein.

apt-get install tftpd-hpa

Der Linux-Recher muss die IP 192.168.0.66 besitzen. Der Router selber nimmt sich die 192.168.0.86

ip addr add 192.168.0.66/24 dev eth0

Normalerweise wird bei der Installation des tftp-Servers (tftpd-hpa) ein Verzeichnis angelegt, in dem die Firmware mit einem speziellen Namen kopiert werden muss. Siehe dazu openwrt.org:tftp_recovery_via_bootloader_for_v8_v9_v10_v11. Es kann vorkommen, dass dieser Server zwar läuft, aber nicht mehr richtig arbeitet. In diesem Fall muss man diesen Server beenden und kann diesen manuell im Fordergrund aufrufen.

ps aux | grep tftp                        # zeigt den Prozess und seine Prozess-id
kill <ProzessId>                          # ProzessId mit der zuvor angezeigten ersetzen.
in.tftpd -lL --secure --address 192.168.0.66:69 /var/lib/tftpboot
                                          

Die firmware wird nach /var/lib/tftpboot kopiert und dabei umbenannt.

cp openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-factory.bin /var/lib/tftpboot/
mv /var/lib/tftpboot/openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-factory.bin wr841nv8_tp_recovery.bin


Mit tcpdump kann man sich die Client-Anfrage an den Server (Linux-Rechner) anzeigen lassen.

> tcpdump -tni any host 192.168.0.66
IP 192.168.0.86.3792 > 192.168.0.66.69:  43 RRQ "wr841nv9_tp_recovery.bin" octet timeout 2