Od kilku lat mam w domu ruterek Linksysa (WRT54G v2.2). Stoi za firanką, obsługuje w miarę potrzeb i połączenia kablem i sieć bezprzewodową, pozwala o sobie zapomnieć, działa. A dokładniej, działał do wczoraj, kiedy to nagle stracił zdolność maskaradowania połączeń (sieć lokalna działała, pingi wykonywane przez okno diagnostyczne - też, komputer dopięty do modemu z pominięciem rutera sieć zobaczył ale połączenia z komputera w świat via ruterek stały się nagle niemożliwe).
Restart nie pomógł, możliwości sprawdzenia wewnętrznego stanu urządzenia okazały się zerowe i zmobilizowałem się do operacji, którą na liście ToDo miałem od ponad dwóch lat i stale odkładałem - zmiany firmware. Brakowało mi pewnych możliwości konfiguracyjnych (zwłaszcza możliwości ustawienia stałych adresów wybranym klientom DHCP) ale naturalny odruch działa, to nie psuć wygrywał.
Tym razem motywacja była silniejsza.
Narzędzie
Wykorzystałem firmware Tomato. Wybrałem je - a nie na przykład OpenWrt albo dd-wrt - częściowo na chybił trafił, częściowo ponieważ jest przeznaczone konkretnie dla ruterków Linksysa, więc spodziewałem się mniejszych kłopotów konfiguracyjnych i bardziej dopasowanej aplikacji.
Ponieważ Tomato moje kryteria wyboru oprogramowania spełniło, nie testuję dalej. Choć opinii kogoś używającego innego firmware chętnie bym posłuchał.
Przygotowanie instalacji sprowadziło się do pobrania firmware, zainstalowania
narzędzia do rozpakowywania plików .7z
sudo apt-get install p7zip-full
(by wykonać te operacje musiałem podpiąć laptop do modemu z pominięciem nie działającego rutera) i rozpakowania archiwum:
7z x Tomato_1_27.7z
Pojawiło się kilka plików .bin
i .trx
(firmware dla różnych ruterów),
plik sha1
z sumami kontrolnymi oraz readme.htm
(dokumentacja).
Sprawdziłem raz jeszcze, że mój ruterek jest na liście obsługiwanych,
ustaliłem, że właściwym firmware jest w moim wypadku WRT54G_WRT54GL.bin
,
przepiąłem kabelki do standardowego ustawienia (ruter do internetu, komputer
do rutera) i byłem gotów do instalacji.
Instalacja
Instalacja - robiona przy pomocy funkcji upgrade rutera - przeszła całkowicie bezboleśnie. Otworzyłem ekran administracyjny Linksysa:
wybrałem właściwy plik (WRT54G_WRT54GL.bin
) i kliknąłem
Upgrade. Wyświetlił się odpowiedni pasek postępu
i po około minucie proces został zakończony.
Po zatwierdzeniu powyższego ekranu dostałem pytanie o hasło.
Działało nadal to samo, co poprzednio, ale w przeciwieństwie
do logowania do interfejsu Linksysa (gdzie nazwę użytkownika
pozostawiałem pustą) tu trzeba było wpisać admin
albo root
jako username.
Wpisałem i wylądowałem w interfejsie Tomato. Stało się to zresztą bez żadego restartu rutera ale dla zasady go zrebootowałem (używając funkcji interfejsu).
Sieć po upgrade
Najważniejszy efekt: sieć zaczęła znowu działać. Na cokolwiek był chory mój ruterek, zmiana firmware jego problem rozwiązała.
Musiałem przejść Asterową procedurę nowej karty sieciowej, MAC karty w ruterku się po upgrade zmienił (używałem wcześniej Linksysowej funkcji skopiowania MACa dopiętego do rutera komputera, to ustawienie najwyraźniej się nie zachowało) ale trudno to uznać za szczególną niedogodność. Po tej operacji podpięty kablem komputer zaczął poprawnie korzystać z internetu.
Firmware Tomato także ma funkcję klonowania MAC albo wpisania go ręcznie (Advanced/MAC Address), w pierwszej chwili to po prostu przeoczyłem.
Co mnie bardzo miło zaskoczyło, wszystkie kluczowe ustawienia ruterka zostały zachowane! Od wspominanego już hasła logowania do interfejsu administracyjnego (które zostało teraz także hasłem roota), przez nazwę, klucz i konfigurację sieci bezprzewodowej, po listę MACów komputerów mających prawo się z nią łączyć. Z rzeczy które konfigurowałem w interfejsie Linksysowym straciłem chyba tylko przekierowania portów.
Urządzenia bezprzewodowe także połączyły się poprawnie, z tym, że musiałem nakazać im rozłączenie się i powtórne połączenie (nie wiem czy taki efekt występuje zawsze, czy też operacja była potrzebna ze względu na wcześniejsze trudności ruterka).
Interfejs
Interfejs webowy jest dość spartański wizualnie ale intuicyjny, nie miałem żadnych problemów z znajdowaniem potrzebnych mi funkcji (choć wolałbym, by wszystkie menu były stale rozwinięte, przypominanie sobie co jest w Basic a co w Advanced bywa nieco męczące). Wszystkie istotne ekrany z firmware Linksysa mają swoje odpowiedniki, jest też spora grupa nowych funkcji.
Przeklikałem się weryfikując kluczowe ustawienia, wszystko wyglądało poprawnie. Znalazłem też gadżet wizualny czyli ładny, ajaksowo aktualizowany, wykres zużycia pasma. Nie jest to może jakoś bardzo przydatne ale na pewno ładnie wygląda na screenshocie.
Konsola
Serce miłośnika konsoli bardzo ucieszyła możliwość zalogowania
się na ruter po ssh
. Domyślnie było wyłączone, musiałem
je włączyć przy pomocy interfejsu webowego, na tym samym
ekranie wyłączyłem telnet
, wgrałem swój klucz SSH i zdecydowałem,
że chcę się logować kluczem a nie hasłem.
Potem już tylko
ssh root@192.168.1.1
i moim oczom ukazał się sympatyczny shell
Środowisko ruterka to przede wszystkim busybox
. Jest to pojedynczy
program implementujący gros kluczowych poleceń shellowych, od samego
shella (ash
) przez cp
, chmod
, mkdir
czy rm
aż po gzip
,
tar
, sed
, grep
, more
, netstat
czy ping
.
Ten sam program jest też używany na wielu rescue-CD czy CD-ROMach instalacyjnych a czasem nawet w ...
initrd
(kiedyś wylądowałem w nim gdy pierwsza faza startu Linuksa nie zdoła poprawnie poskładać RAID, udało mi się ręcznie uruchomićmdadm
i zreanimować system).
Działa tylko parę procesów, z których zwrócę uwagę na dropbear - malutki serwer SSH, który ładnie pasuje do paru innych narzędzi jakie omawiałem w cyklu Konfigurujemy VPS (i który jest normalnie dostępny w paczkach dla Debiana i Ubuntu i przy wyciskaniu ostatnich kilobajtów na malutkiej maszynie może być przydatny).
Oczywiście nie jest to w pełni typowy system (choćby /etc
na ramdysku
nakazuje z pewną rezerwą podchodzić do pomysłów rekonfigurowania go z
shella) ale na pewno całkiem sporo da się na nim zobaczyć. Jest
/proc
, jest dmesg
, są ping
, traceroute
, ifconfig
czy
iptables
.
Jest nawet log systemowy, czyli /var/log/messages
.
Na zrzucie widać niepoprawne daty, niedługo później ruterek sam zsynchronizował czas co widać choćby po dacie modyfikacji pliku.
Podsumowując
Całe upgrade zajęło mi niespełna 10 minut (zajęłoby jeszcze krócej gdybym nie łapał zrzutów ekranowych do tego artykułu i nie musiał przepinać kabli) a w wyniku nie tylko odzyskałem działający ruterek ale zyskałem sporo nowych możliwości (od statycznego DHCP po różne funkcje mierzenia i limitowania ruchu). Duże pochwały dla Tomato i jego autora (któremu, przypomniawszy sobie co sam pisałem, zdecydowałem się w podziękowaniu dać parę dolarów).