piątek, 14 września 2007

Gdy coś pójdzie nie tak - OpenWRT Kamikaze

Failsafe mode:
Jeśli zapomniałeś hasło, uszkodziłeś któryś z skryptów startowych, zablokowałeś się na firewall'u lub uszkodziłeś partycję JFFS2, ten tryb jest dla Ciebie.

Uruchamianie urządzenia w trybie failsafe mode:

  • wyłącz zasilanie
  • podłącz LAN1 routera bezpośrednio do twojego PC'ta
  • skonfiguruj połączenie sieciowe (IP z zakresu 192.168.1.2-192.168.1.254, maska 255.255.255.0, brama i DNS są niepotrzebne)
  • włącz zasilanie i poczekaj aż zgaśnie dioda zasilania
  • zaraz po zgaśnieciu diody zasilania wciśnij kilka razy dowolny przycisk (RESTORE lub EZSETUP) pare razy
  • dioda zasilania powinna zacząć mrugać z szybkością około raz na sekundę
Teraz powinieneś móc się telnetować na 192.168.1.1 bez loginu i hasła

Co mogę zrobić w trybie failsafe mode?
notka: główny system plików w trybie failsafe mode jest partycją SquashFS zamontowaną tylko do odczytu. Aby można było na niej również dokonywać zmian należy wydać polecenie: mount_root
  • w przypadku zapomnianego hasła wydaj polecenie: passwd
  • zapomniałeś jakie IP ma router: uci get network.lan.ipaddr
  • przez przypadek uruchomiłeś ipkg upgrade lub zapełniłeś całe dostępne miejsce instalując jakąś dużą paczkę: mtd -r erase OpenWrt (czyści partycję JFFS2)
Po zakończonych operacjach w trybie failsafe mode zrestartuj router przez odcięcie zasilania lub wydanie polecenia reboot

czwartek, 13 września 2007

Instalacja OpenWRT Kamikaze 7.07 na ASUS WL-500gP

Ponieważ nie ukrywam że dar piśmiennictwa mi się nie udzielił, w swoich tutorialach podpierał się będę stronami z wiki projektu OpenWRT (wiki.openwrt.org).

Oryginalny firmware:

Backup:
Backup oryginalnego firmware'u możemy wykonać za pomocą ukrytej strony administracyjnej. Aby wykonać backup będziemy potrzebować pendrive.

  • na pen'ie tworzymy skrypt o poniższej zawartości i nazywamy go asus.sh
    #!/bin/sh
    dd if=/dev/mtdblock/1 > $1/first_config.trx
  • podłączamy pen'a do dolnego portu USB
  • przechodzimy do ukrytej strony administracyjnej http://192.168.1.1/Main_AdmStatus_Content.asp
  • w polu System Command wpisujemy mount i wciskamy przycisk Refresh. w wyniku powinieneś otrzymać coś podobnego
    /dev/discs/disc0/part1 on /tmp/harddisk/part0 type ext2 (rw,sync)
  • wykonujemy backup poleceniem sh /tmp/harddisk/part0/asus.sh /tmp/harddisk/part0 które wpisujemy w pole System Command. backup może potrwać 10-15 minut
  • po zakończonej operacji wyciągamy pen'a i sprawdzamy na PC'cie czy znajduje się na nim plik first_config.trx

Restore:
Firmware możemy przywrócić przynajmniej na 3 sposoby:
  • tftp
  • mtd (z konsoli OpenWRT)
  • ASUS firmware restoration tool (tylko spod Windows)

Instalacja:
Można spróbować instalacji z poziomu interfejsu www ... ale nie jest on zalecany. W moim przypadku po nieudanym TFTP'owaniu z poziomu Windows'a użyłem ASUS firmware restoration tool.

diag mode:
Przed użyciem TFTP oraz ASUS firmware restoration tool należy urządzenie wprowadzić w tryb diag mode. Wykonujemy po kolei:
wyłączamy zasilanie routera
podłączamy port LAN1 bezpośrednio do karty w naszym PC (wyłącz pozostałe karty sieciowe w PC)
wciskamy i nie puszczamy przycisk RESTORE
włączamy zasilanie routera trzymając wciśnięty przycisk RESTORE jeszcze przez kilka sekund
jeśli lampka zasilająca powoli mruga ... znaczy to że jesteś w diag mode

TFTP:
Aby wrzucić nowy firmware należy:
  • wykonać poniższe polecenia
    tftp 192.168.1.1
    tftp> binary
    tftp> trace
    tftp> put openwrt-brcm-2.4-squashfs.trx
  • odczekać przynajmniej 6 minut po zakończeniu upload'u
  • router zrestartuje się sam po wykonaniu upgrade'u. restart może chwilkę potrwać

Po wszystkim powinieneś się móc telnetować na router (IP: 192.168.1.1)

notki:
Przy wrzucaniu nowego firmware'u nie restartuj urządzenia zbyt szybko .. możesz go uszkodzić!
ASUS WL-500gP nie przywraca domyślnego IP 192.168.1.1. Aktualnie zakonfigurowany przetrzymywany jest w zmiennej lan_ipaddr (nvram).

ASUS firmware restoration tool:
Jeśli działasz pod Windows do instalacji OpenWRT powinieneś użyć ASUS firmware restoration tool które znajdziesz na dołączonej do urządzenia płycie (Utitity\setup.exe).
  • sprawdź czy router jest w trybie dag mode
  • wskaż ścieżkę do pliku .trx (openwrt-brcm-2.4-squashfs.trx)
  • wciśnij przycisk Upload
  • router po zakończonym upgrade'ie zam się zrestartuje. może to chwilkę potrwać
Po wszystkim powinieneś się móc telnetować na router (IP: 192.168.1.1)

mtd:
Jeśli masz już zainstalowane OpenWRT lub inny firmware posiadający mtd, w celu aktualizacji firmware'u wykonaj:
cd /tmp/
wget http://downloads.openwrt.org/kamikaze/7.07/brcm-2.4/openwrt-brcm-2.4-squashfs.trx
mtd -r write openwrt-brcm-2.4-squashfs.trx linux && reboot

ASUS Wl-500g Premium

Właśnie stałem się szczęśliwym posiadaczem "router'a" bezprzewodowego ASUS WL-500g Premium. "router'a" bo sam producent mówi o nim "More Then Just a Router". Po tym jak skończę nad nim pracować śmiało będzie można powiedzieć o tym urządzeniu SERWER.
Swoją konfigurację postaram się wam przedstawić krok po kroku w serii tutoriali.
Docelowo zamierzam na nim postawić serwery FTP (vsftpd), SMB (samba), HTTP (?), VPN (pptpd). A to wszystko stanie pod kontrolą OpenWRT Kamikaze 7.07.

kilka recenzji:
http://www.imperium.net.pl/asus-wl500g-premium-p-4305.html
http://www.notebookcheck.pl/Prezentacja-routera-Asus-WL500g-Premium.2214.0.html

a tutaj można posłuchać o OpenWRT:
http://warszawa.linux.org.pl/plug-20061108/

poniedziałek, 10 września 2007

Problem -> VLAN, OpenWRT White Russian 0.9, ASUS WL-500g Premium

W wspomnianej w temacie wersji OpenWRT czyli White Russian 0.9 istnieje błąd w pliku /etc/init.d/S05nvram który nadpisuje konfigurację VLAN'ów. Problem występuje tylko w przypadku użycia ASUS WL-500g Premium.
Aby rozwiązać problem należy wstawić brakujący nawias ] za [ -z "$(nvram get lan_ifnames_t)" w sekcji # wl-500g premium.

Prawidłowy fragment kodu:

# wl-500g premium
[ "$boardnum" = "45" \
-a "$boardtype" = "0x042f" ] && {
debug "### wl-500g premium hacks ###"
[ -z "$(nvram get lan_ifnames_t)" ] || {
# hasn't been remapped yet, revert the vlan1 config as well, because
# it defaults to "0 5u", which we can't use.
# use lan_ifnames_t as an indicator of whether the config was made
# by the original firmware.
nvram unset vlan1ports
nvram unset lan_ifnames_t
}