Navodila za preureditev Fonera routerja v prosto WiFi tocko z OpenWrt Linux distribucijo, ki jo je mozno kasneje nastaviti na zaprto omrezje, za domaco uporabo, ali za skupno odprto omrezje z uporabo ad-hoc povezovanja in OLSR.
Prvo je potrebno dobiti SSH dostop do routerja, tako da lahko prosto poganjamo zeljene ukaze.
Obstajata dve moznosti. Prva moznost je, da se DNS routerja nastavi na 88.198.165.155, ki je posebej nastavljen DNS streznik, ki routerju posreduje druge IPje za skripte, ki jih uporablja ob zagonu, tako da se potem skripte nalozijo z nefonovega streznika, le-te pa vsebujejo poganjanje SSH daemona in odpiranje porta na internem WLANu ob zagonu routerja. Po taksnem zagonu se lahko DNS nastavitve vrnejo na prave in se sledi navodilom malo nizje, za nastavitev trajnega delovanja SSH daemona. Slabost tega pristopa je, da je odivsen od dostopa routerja do Interneta, zunanjega streznika in zunanjih skript. Jaz ga tudi nisem preizkusil.
Druga moznost pa je malce bolj zapletena. Potrebno je pogledati verzijo firmware na routerju. To je najlazje pogledati tako, da se na spletnem vmesniku na routerju odpre statusna stran. Ce pa je 0.7.1 r2 (verjetneje), pa je potrebno prvo resetirati router na 0.7.1 r1. To se naredi tako, da se za nekaj sekund drzi gumbek na spodnji strani routerja. Po tem drzanju na gumb bo trajalo nekaj casa, da se vzpostavi - ne izklapljaj routerja medtem iz elektrike.
Sedaj je potrebno odpreti to stran in potrditi obrazec (vmes je seveda potrebno biti prijavljen na router). Zatem pa se to. Obe strani izvedeta ukaz na routerju, tako da je potrebno pocakati, da se le-ta izvede. Prva odpre SSH port na routerjevem firewallu, druga pa pozene SSH daemon. Privzeto uporabnisko ime za administratorski dostop do spletnega vmesnika Fonere je “root”, geslo pa “admin”.
Sedaj je dobro, da se sam router nastavi tako, da bo ta SSH povezava delovala vedno (po morebitnih resetih routerja …).
Zato se prijavimo na router preko SSH:
> ssh -l root 192.168.10.1
Za geslo uporabimo enako geslo, kot je nastavljeno za administratorski dostop do spletnega vmesnika. Privzeto je to “admin”.
Da se bo ob zagonu routerja pognal tudi SSH daemon:
root@OpenWrt:~# mv /etc/init.d/dropbear /etc/init.d/S50dropbear
V /etc/firewall.user je potrebno odkomentirati te vrstice, da bo tudi SSH port vedno odprt:
# iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT # iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT
Za popolnost navodil se lahko sedaj se onemogoci avtomatsko nadgrajevanje routerja (da ne bi kaksen uraden upgrade onemogocil SSH dostop), ampak verjetno router do konca navodil vec ne bo priklopljen na Internet (in tudi trenutno ni). Kakorkoli, v datoteki /bin/thinclient je potrebno zakomentirati zadnjo vrstico in dodati novo. Tako konec datoteke izgleda:
#. /tmp/.thinclient.sh cp /tmp/.thinclient.sh /tmp/thinclient-$(date '+%Y%m%d-%H%M')
Obstaja vec nacinov namestitve OpenWrt Linux distribucije na Fonera routerje. Tu bom predstavil le eno, ki je po mojem mnenju najenostavnejsa in pri kateri ni potrebno odpirati ohisja routerja, ampak je dovolj le “softwaraski” pristop.
Prijaviti se je potrebno na router:
> ssh -l root 192.168.10.1
Namestili bomo RedBoot boot loader, tako da bomo lahko pri zagonu routerja prisli v njega in iz njega prepisali firmware routerja s svojim. Za to potrebujemo openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma (kopija).
Skopiramo na router:
> scp openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma root@192.168.10.1:~/openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma
In na routerju pozenemo (traja nekaj minut):
root@OpenWrt:~# mtd -e vmlinux.bin.l7 write openwrt-ar531x-2.4-vmlinux-CAMICIA.lzma vmlinux.bin.l7 root@OpenWrt:~# reboot
Zatem boot loader nastavimo. Potrebujemo out.hex (kopija).
> scp out.hex root@192.168.10.1:~/out.hex
In na routerju pozenemo:
root@OpenWRT:~# mtd -e "RedBoot config" write out.hex "RedBoot config" root@OpenWRT:~# reboot
Sedaj se lahko med zagonom (prvih 10 sekund) routerja prijavimo preko telneta na 192.168.1.254 9000 (racunalnik mora biti povezan z routerjem z mreznim kablom in mora biti v 192.168.1.* omrezju).
Za nadaljevanje bomo potrebovali se openwrt-atheros-2.6-root.jffs2-64k (kopija r6511) in openwrt-atheros-2.6-vmlinux.lzma (kopija r6511)).
Te datoteke morajo biti dostopne preko TFTP protokola. Navodila za vzpostavitev TFTP streznika se hitro najdejo na Internetu za razne operacijske sisteme. Paziti moramo, da je TFTP port tudi odprt in da ga ne blokira kaksen firewall.
Na voljo so tudi navodila za vzpostavitev TFTP strežnika in reflashanje fonere pod Ubuntu Linuxom.
Torej to storimo, povezimo se na router z mreznim kablom, nastavimo IP svojega racunalnika (recimo na 192.168.1.166) in resetiramo router. V prvih 10 sekundah se prijavimo preko telneta:
> telnet 192.168.1.254 9000
Pri tem bo verjetno izpisal kaksno napako, da ne najde se Linuxa, kar je normalno.
Sedaj je potrebno nastaviti, kje naj najde nov firmware.
RedBoot> ip_addr -h 192.168.1.166 -l 192.168.1.254/24
Naslednji ukazi trajajo zelo dolgo (nekaj 10 minut) in dalj casa nic ne izpisejo. Nikakor ne smemo izklopiti elektrike routerju medtem ali kako drugace zmotiti router.
RedBoot> fis init
RedBoot> load -r -v -b 0x80040450 openwrt-atheros-2.6-root.jffs2-64k
RedBoot> fis create -b 0x80040450 -f 0xA8030000 -l 0x00700000 -e 0x00000000 rootfs
RedBoot> load -r -b %{FREEMEMLO} openwrt-atheros-2.6-vmlinux.lzma
RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
RedBoot> fis load -l vmlinux.bin.l7
RedBoot> exec
Sedaj bi se upesno moral zagnati OpenWrt Linux in po nekaj casa, ko se do konca nalozi, bi se moral odzivati na 192.168.1.1 IP naslovu.
Sedaj je potrebno se nastaviti password root uporabniku, ker se stori preko telneta:
> telnet 192.168.1.1 23 root@OpenWrt:/# passwd
Sedaj na routerju tece osnovna OpenWrt Linux distribucija, tako da je za nadaljevanje dovolj slediti navodilom za zaprto omrezje, za domaco uporabo, ali za skupno odprto omrezje.