GNU/Linux na routerze Linksys WRT54GL

17.10.2008

Większość małych i średnich firm w Polsce niestety nie ma ochoty inwestować w droższe routery np. Cisco, których ceny zaczynają się od kilku tysięcy złotych. Z kolei tańszy sprzęt zwykle niewiele może. Szczęśliwie i tutaj z pomocą przychodzi społeczność wolnego oprogramowania. Interesującą alternatywą (w cenie ok. 200 zł) dla drogich routerów jest Linksys WRT54GL. Umożliwia on zainstalowanie na nim różnego rodzaju dedykowanych dystrybucji GNU Linksa. Jedną z bardziej zaawansowanych (rekomendacja z #debian.pl - dziękuję) jest OpenWRT.

Kilka słów o sprzęcie

Router zbudowany jest w oparciu o architekturę MIPS. Ma chipset Broadcom 5352EKPB, a procesor taktowany jest zegarem 200MHz. Ma 16MB RAM i 4MB flash. Szczegółowe informacje o sprzęcie można znaleźć tutaj.

Instalacja OpenWRT

Uwagi wstępne:

  1. OpenWRT adresowane jest raczej do zaawansowanych użytkowników Linuxa. Początkującym poleca się inne dystrybucje.
  2. Wszystkie kroki należy wykonywać ostrożnie i zapoznając się z oryginalną dokumentacją. Błąd może skończyć się zablokowaniem routera.

OpenWRT można sobie skompilować lub pobrać gotową paczkę. Kompilacja jest dość prosta, więc jeśli zależy nam na "szytej na miarę" dystrybucji, lepiej wybrać tą drogę. Paczkę pobieramy z downloads.openwrt.org. Na dzień dzisiejszy najnowszą wersją jest kamikaze 7.09. Paczki dla naszego chipsetu znajdują się w katalogach brcm*. Uwaga: wersja z jądrem 2.6 na razie nie obsługuje WiFi! Paczka gotowa nazywa się openwrt-wrt54g-2.4-squashfs.bin.

Jeśli mam jeszcze oryginalny firmware linksys, wówczas instalujemy korzystając ze standardowej procedury upgradeu firmware, przez przeglądarkę www. Jeśli mamy już wcześniej zainstalowaną wersję OpenWRT, którą chcemy zmienić na nowszą, możemy skorzystać z polecenia mtd -r write openwrt-wrt54g-2.4-squashfs.bin linux.

Konfiguracja

Po instalacji WiFi jest domyślnie wyłączone. Do konfiguracji różnych parametrów służy polecenie uci. Uruchamiamy sieć bezprzewodową następująco:

uci set wireless.wl0.disabled=0 # Ustawienie parametru
uci commit wireless && wifi # Zatwierdzenie zmian w sekcji wireless i wymuszenie odczytania ich komedną wifi

Po tym kroku dioda WLAN powinna się zaświecić.

Warto też zainstalować sobie pakiet wl:

ipkg update # Aktualizacja listy pakietów
ipkg install wl # Instalacja pakietu wl

Jeśli chcemy sprawdzić kto korzysta z WiFi robimy to poleceniem wl assoclist.

W razie problemów

W przypadku kłopotów Linksys zaleca metodę 30/30/30:

  1. Press and hold the reset button for 30 seconds.
  2. Then, unplug the power keep holding down the reset button for another 30 Seconds.
  3. Plug back the power back in, and keep holding down the reset button for 30 Seconds.
  4. Release the reset button.

Warto też sprawdzić czy nawet jeśli nie działają inne porty (http, ssh) to może zadziała np. TFTP. Procedura instalacji przez tftp wygląda następująco:

tftp 192.168.1.1
binary
rexmt 1
timeout 60
trace
Packet tracing on.
tftp> put openwrt-xxx-x.x-xxx.bin

Inne przydatne polecenia

logread - wyświetlenie zawartości logów syslogd.

Diagnostyka Wi-Fi

Przydatne polecenia do diagnostyki sieci WiFi:

wl isup
wl assoclist
iwconfig
tcpdump -i wl0

Uwaga! Wykonanie polecenia iwlist scan może powodować wyłączenie sieci WiFi.

Duże obciążenie

Zdarzyła mi się (po ok. 2 miesiącach działania routera) sytuacja kiedy obciążenie routera monitorowane poleceniem top zbliżało się do jedynki. Praca zdalna wtedy okazywała się praktycznie niemożliwa. Połączenie kablowe w miarę działało, natomiast wszystkich chętnych do połączenia bezprzewodowego po chwili wyrzucało z sieci. Najbardziej obciążającym procesem był ksoftirqd_CPU0, który odpowiada za połączenia bezprzewodowe. Wyłączenie i włączenie zasilania niewiele zmieniało - po chwili obciążenie znowu rosło. Pomogło wyłączenie sieci wifi poleceniem wifi down na minutkę i potem włączenie jej ponowne wifi up.

Przepełnienie dysku - uwaga!

System plików JFFS ma pewną nieprzyjemną właściwość. Przepełnienie go powoduje brak możliwości zapisu na dysk, nawet pomimo późniejszego skasowania kilku plików. Nie można nawet zmienić zawartości istniejących plików, tym samym zmienić konfiguracji itp. Rozwiązaniem może być zwolnienie co najmniej 256kB. Więcej na ten temat jest tutaj.

Dalsza lektura

Oprócz wymienionych wyżej stron www polecam też książkę Linksys WRT54G Ultimate Hacking.

Happy hacking :)