Tryb awaryjny dla routerów z OpenWrt
Ostatnia zmiana: 2015-09-26 07:49

Tryb failsafe

Oprogramowanie OpenWrt wykonane jest w pewien modułowy sposób, pozwalający na uruchomienie samego systemu w tzw.trybie failsafe. Jest to specjalny tryb "awaryjny", w którym nie są uruchomione prawie żadne usługi poza serwerem telnetu (można dostać się bez hasła do rutera nawet jak było ustawione), a interfejs sieciowy ma zawsze ustawiony adres 192.168.1.1. Wszystkie zmiany które zostały wykonane w systemie są ignorowane, dzięki czemu nawet po błędnej konfiguracji interfejsów sieciowych można router doprowadzić do stanu używalności. Tryb failsafe dotyczy tylko obrazów z systemem plików squashfs - dla innych (jffs2, ext4, ubifs) nie ma on zastosowania.

W tym trybie router uruchamiany jest z partycji squashfs zaś część z jffs, a więc ta z wykonanymi przez nas zmianami nie jest domyślnie zamontowana. Po wejściu w ten tryb można przywrócić router do stanu jak po pierwszym uruchomieniu lub podmontować partycję i poprawić zmiany które wcześniej zostały wykonane.
Większość routerów wyposażona jest w jakiś przycisk. Wprowadzenie rutera w tryb failsafe oznacza uruchomienie go i wciśnięcie dowolnego przycisku w określonym momencie. Cała procedura wygląda następująco:

  • należy wyłączyć router z zasilania
  • połączyć go kablem z jednego portu LAN do komputera
Wyjątek: Niektóre urządzenia np. TP-LINK TL-MR3420v2 i TL-WR741NDv8 - należy podłączyć do portu WAN. Zależy to też od wydania OpenWrt, inaczej może być w Attitude Adjustment inaczej w Barrier Breaker i późniejszych. Jeżeli router nie będzie chciał się zgłosić na porcie LAN należy przełączyć kabel do WAN i sprawdzić.

  • ustawić na stałe w komputerze adres IP karty sieciowej na 192.168.1.2 z maską 255.255.255.0. Brama może zostać pusta
  • podłączyć zasilanie do rutera
  • router zacznie migać jedną z diod LED
  • przez kilka sekund naciskać cyklicznie dowolny przycisk na routerze.
Jedna z diod (różne w zależności od typu routera) powinna zacząć szybko migać, 3 razy na sekundę. Oznacza to że ruter jest w trybie failsafe. Teraz można zalogować się przez telnet do routera (telnet 192.168.1.1) i wykonać jedną z przedstawionych niżej operacji.

Wyczyszczenie konfiguracji

Router po restarcie będzie wyglądał jak świeżo po wgraniu nowego firmware - będzie miał domyślną konfigurację.


    # firstboot
    # reboot -f

Istnieje także możliwość skasowania całej partycji ze zmianami:


    # mtd -r erase rootfs_data 
    # reboot -f

które powinno mieć taki sam skutek - spowoduje to usunięcie całości zmian z flash i przywrócenie routera do pierwotnego stanu.

Wgranie nowego oprogramowania

Potrzebujemy serwera http lub ftp na komputerze czy innym serwerze w sieci lokalnej; połączamy pod niego router jednym z portów LAN. Na serwerze ftp/http umieszczamy plik z firmware pod nazwą np. a.bin. Następnie wydajemy polecenia:


    # cd /tmp
    # wget ftp://192.168.1.x/a.bin
    # sysupgrade -n a.bin

gdzie 192.168.1.x to adres IP naszego komputera lub serwera gdzie umieściliśmy plik.

Zmiana ustawień w systemie plików

Należy najpierw wydać polecenie które zamontuje zmiany w overlay:


    # mount_root

Następnie można zmienić to co zepsuliśmy w konfiguracji. Można także ustawić nowe hasło:


    # passwd

lub zmienić adres ip na lan:


    # uci set network.lan.protp=static
    # uci set network.lan.ipaddr=192.168.1.1
    # uci commit network


Jeżeli z jakiegoś powodu mount_root nie działa można "ręcznie" zamontować partycję wydając polecenie:


    # mount -t jffs2 /dev/mtdblock3 /overlay

i można poprawić to co zepsuliśmy w konfiguracji. W katalogu /overlay będą znajdowały się wszystkie pliki jakie zostały zmienione w systemie. Wystarczy zmodyfikować to co zostało zmienione i zrestartować router. Urządzenie /dev/mtdblock3 może być różne w zależności od typu routera (jak oznaczona jest partycja można zobaczyć po wydaniu polecenia cat /proc/mtd - szukamy rootfs_data).