OpenWRT firmware ninux.org (Codename :prrrr!!!)
Indice
- OpenWRT firmware ninux.org (Codename :prrrr!!!)
- Introduzione
- Aggiornare da un precedente AirOS o Sburratone
- Aggiornamento da una versione precedente di Scooreggione o OpenWRT
- Importante nota sul flash di Scooreggione
- Comandi utili
- Policy Routing
- Esempio di configurazione come AP
- Esempio Configurazione come STA
- Esempio Configurazione come AP-STA contemporaneo
- Esempio di configurazione OLSR IPv4
- Note sulla configurazione in WDS
- What to do Next
- Features di Scoorreggione
- Compilare
Introduzione
Il nuovo firmware è basato sulla versione Attitude Adjustment di OpenWRT. I sorgenti sono disponibili sul seguente repository:
https://github.com/ninuxorg/attitude_adjustment
Si possono vedere le modifiche apportate tra la versione originale di OpenWRT (branch master) e la versione ninux (branch scooreggione) vedendo le differenze tra i due branch:
git clone https://github.com/ninuxorg/attitude_adjustment cd attitude_adjustment && git checkout scooreggione git diff -C master scooreggione --stat=1000,1000
Aggiornare da un precedente AirOS o Sburratone
0) Entrare in SSH sul device
1) Fai un backup di tutte le tue config in /etc/persistent e del file /tmp/running.cfg magari ti serve per il futuro. Segnati il canale configuarato e la potenza usata.
2) Mettersi nella cartella tmp
cd /tmp/
3) Scaricare il firmware con il comando wget
wget http://URLFIRMWARE -O /tmp/fwupdate.bin
dove URL FIRMWARE è una di queste a seconda del device che devi flashare: http://stud.netgroup.uniroma2.it/~saverio/scooreggione-AA-v5/ dovete scegliere l'immagine con la dicitura factory nel nome.
Nota: per la AirGrid e la !Nanobridge si deve prendere l'immagine della Bullet
4) Controllare l'MD5 per vedere il firmware è valido o corrotto
md5sum /tmp/fwupdate.bin
deve venire il risultato giusto che trovi in questo file:
http://stud.netgroup.uniroma2.it/~saverio/scooreggione-AA-v5/md5sums
5) Se il risultato MD5 è corretto lanciare il seguente comando per aggiornare:
/sbin/ubntbox fwupdate.real -m /tmp/fwupdate.bin -d
6) Dopo il reboot il device ha sulla LAN indirizzo IP 192.168.1.1, puoi entrare in SSH con utente root password root. La radio di default è in sta con SSID ninux.org.
7) DA AGGIUGERE INFO############################ ping6 ff02::1%eth0
ip n s|grep eth0
oppure alias ipv4
ip a a 192.168.1.10/24 dev eth0
Aggiornamento da una versione precedente di Scooreggione o OpenWRT
Potete usare l'immagine con scritto nel nome sysupgrade ed usare il tool sysupgrade di OpenWRT http://wiki.openwrt.org/doc/howto/generic.sysupgrade
A partire da Scooreggione-AA-v3 dopo il flash vengono fatte delle autoconfigurazioni. Se state facendo un upgrade ed avete la config già fatta, prima del sysupgrade scrivete 1 in questo file.
echo 1 > /etc/config/ninux
Leggendo questo 1 scooreggione capisce che il device è già configurato e non tocca la configurazione durante l'upgrade.
La configurazione viene mantenuta con l'upgrade, ma alcuni servizi vengono disabilitati:
* DHCP server * nodogsplash * Polipo * qos
Dopo il sysupgrade fate ripartire i servizi che vi servono, esempio:
/etc/init.d/dhcp start /etc/init.d/dhcp enable
Importante nota sul flash di Scooreggione
A partire da scooreggione-AA-v3 non c'è piu bisogno di questo reboot
Dopo il flash (sia da AirOS sia via sysupgrade) uno script di tipo uci-default che viene lanciato solo al primo boot sistema i drivers wireless per usare il corretto country code per il nostro paese.
appena flashato se fate iw list | grep MHz vedrete una lista di canali possibili, che potrebbe essere incompleta
prima di fare il primo reboot date al device il tempo di fare il boot completamente (circa 1 minuto), basta vede col comando ps che non ci siamo script di boot ancora in esecuzione, oppure con il comando uptime assicuratevi che il sistema sia up da almeno 2 minuti.
dopo il primo reboot se ripetete il comando iw list | grep MHz vedrete che adesso i corretti canali sono utilizzabili sul firmware scooreggione
Comandi utili
Per vedere se avete station associate al vostro AP, o se siete station e volete capire se vi siete associati, scrivete:
iw wlan0 station dump
se volete vederlo aggiornato ogni 2 secondi (ad esempio per fare un puntamento:
watch iw wlan0 station dump
Per vedere i livelli di potenza in fase di puntamento:
watch iw wlan0 station dump|grep "signal avg"
se cambiate una config in /etc/config/wireless basta dare il comando wifi per applicare la nuova config
E' bene leggere questa documentazione: http://wiki.openwrt.org/doc/uci/wireless
Policy Routing
Questo firmware si fa uso di policy routing. Al boot OLSR viene configurato automaticamente per usare queste tabelle
RtTable 111 RtTableDefault 112
E dentro il tuo /etc/rc.local ha questi comandi:
#110 Local routes #111 RtTable #112 RtTableDefault #113 Special Table for /1 #114 blackholes table #Copy local routes only from table main 254 to table 110 ip route show table 254 | grep -Ev ^default | grep -Ev ^blackhole | while read ROUTE ; do MASK=`echo "${ROUTE}" | awk '{print $1}' | awk -F/ '{print $2}'` if [ "$MASK" -ne 16 ] ; then ip route add table 110 $ROUTE fi done #First evaluate local routes ip rule add from all lookup 110 pref 3 #Private routes to OLSR table ip rule add to 10.0.0.0/8 table 111 pref 4 ip rule add to 172.16.0.0/12 table 111 pref 4 ip rule add to 192.168.0.0/16 table 111 pref 4 #Ninux IP Addresses to OLSR table ip rule add to 176.62.53.0/24 table 111 pref 4 #Evaluate blackholes ip rule add from all table 114 pref 5 #Send traffic of public addresses to BGP border routers ip rule add from 176.62.53.0/24 table 113 pref 6 #Lookup default route first from user and then from OLSR ip rule add from all lookup 254 pref 7 ip rule add from all lookup 112 pref 8 #Blackhole private aggregates ip route add blackhole 10.0.0.0/8 table 114 ip route add blackhole 172.16.0.0/12 table 114 ip route add blackhole 192.168.0.0/16 table 114 #Blackhole Ninux aggregate ip route add blackhole 176.62.53.0/24 table 114 exit 0
Per vedere la tabella di routing imparata via OLSR usa il comando
ip route show table 111
o in breve
ip r s t 111
per vedere la default imparata via OLSR è uguale ma la tabella è la 112
Esempio di configurazione come AP
TODO: fare IPv6
root@OpenWRT:~# cat /etc/config/network config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'lan' option ifname 'eth0' option proto 'static' option ipaddr '10.CAP.0.x' option netmask '255.255.255.0' option dns '10.11.12.13' config interface backbone option ifname 'wlan0' option proto 'static' option ipaddr '172.16.CAP.x' option netmask '255.255.0.0' option dns '10.11.12.13' config interface 'wan' option ifname 'eth1' option proto 'none' root@OpenWRT:~# cat /etc/config/wireless config wifi-device 'radio0' option type 'mac80211' option channel '100' option distance '1000' ###distanza link in metri option hwmode '11na' option macaddr '00:15:6d:8c:93:86' list ht_capab 'SHORT-GI-40' list ht_capab 'TX-STBC1' list ht_capab 'RX-STBC1' list ht_capab 'DSSS_CCK-40' option htmode 'HT40+' ###Canale a 40 Mhz option noscan '1' config wifi-iface option device 'radio0' option network 'backbone' option mode 'ap' option isolate '1' option ssid 'ninux.org' option encryption 'none'
Esempio Configurazione come STA
root@OpenWRT:~# cat /etc/config/network config interface 'loopback' option ifname 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config interface 'lan' option ifname 'eth0' option proto 'static' option ipaddr '10.CAP.x.y' option ip6addr '2001:4c00:893b:CAP::xxxx/64' option netmask '255.255.255.0' option dns '10.11.12.13' config interface 'backbone' option ifname 'wlan0' option proto 'static' option ipaddr '172.16.CAP.x' option netmask '255.255.0.0' option ip6addr '2001:4c00:893b:1:CAP::x/128' config interface 'wan' option ifname 'eth1' option proto 'none' root@OpenWRT:~# cat /etc/config/wireless config wifi-device 'radio0' option type 'mac80211' option hwmode '11na' option distance '1000' ###Distanza in metri per ACK timeout, option macaddr '00:27:22:38:d0:f1' ###Non cambiare, è il mac della tua antenna list ht_capab 'SHORT-GI-40' list ht_capab 'TX-STBC' list ht_capab 'RX-STBC1' list ht_capab 'DSSS_CCK-40' option htmode 'HT40+' ###Setta il canale a 40Mhz option noscan '1' config wifi-iface option device 'radio0' option network 'backbone' option mode 'sta' #STATION, non specificare channel option ssid 'ninux.org' option bssid 'aa:bb:cc:ee:ff' ###LOCK to this AP option encryption 'none' root@OpenWRT:~#
Esempio Configurazione come AP-STA contemporaneo
Se si vuole far fare alla stessa radio sia da Access Point che Station in contemporanea (dimezzando naturalmente la capienza di banda) .. fate riferimento a questa email
http://www.mail-archive.com/wireless%40ml.ninux.org/msg11762.html
Esempio di configurazione OLSR IPv4
root@OpenWRT:~# cat /etc/config/olsrd config olsrd option IpVersion '4' option RtTable '111' option RtTableDefault '112' config LoadPlugin option library 'olsrd_arprefresh.so.0.1' config LoadPlugin option library 'olsrd_nameservice.so.0.3' config LoadPlugin option library 'olsrd_txtinfo.so.0.1' option accept '0.0.0.0' config Interface list interface 'lan backbone' option speed '6' config Hna4 option netaddr '10.CAP.x.0' option netmask '255.255.255.0' root@OpenWRT:~#
Note sulla configurazione in WDS
Il problema: quando accendiamo WDS su OpenWrt AP, succede che se una station si associa all'AP OpenWrt usando la modalita' WDS, il kernel tira su una nuova interfaccia wlan0.staX. A livello radio sale tutto ma non si riesce a fare traffico IP con l'AP.
Soluzione: L'interfaccia logica wireless DEVE essere di TYPE BRIDGE.
In /etc/config/network si deve necessariamente avere l'interfaccia radio dentro un bridge:
network.backbone=interface network.backbone.ifname=wlan0 network.backbone.type=bridge <<<<<<<AGGIUNGERE network.backbone.proto=static network.backbone.ipaddr=172.16.184.2 network.backbone.ip6addr=2001:4c00:893b:1:184::2/128 network.backbone.netmask=255.255.0.0 network.backbone.dns=8.8.8.8
Dopo il reboot:
# brctl show bridge name bridge id STP enabled interfaces br-backbone 8000.00156d1aed6e no wlan0 <<<<<<LA PRINCIPALE wlan0.sta1 <<< INTERAFACCIA DEDICATA ALLA STAZIONE WDS
Ricordatevi anche di cambiare wlan0 in br-backbone nel file /etc/config/olsrd6.conf in quanto ora la vostra interfaccia con gli IP non si chiama piu' wlan0.
What to do Next
Una volta configurata la rete con l'accesso a Internet è comodo installare luci (l'interfaccia web per la configurazione di openwrt).
opkg update # update della lista dei pacchetti opkg install luci opkg install luci-app-olsr # installare il modulo per la gestione di olsr /etc/init.d/uhttpd start # avviare il server web /etc/init.d/uhttpd enable # abilitare il server web anche ai prossimi riavvii
A questo punto dal tab Status->OLSR potete vedere lo stato di olsr, i vicini, le rotte ecc.
Rimuovere le chiavi pubbliche pre-installate:
Per rendere la manutenzione più semplice alcune chiavi pubbliche sono pre-installate nella release di Scooreggione. Questo significa che i developers di Scooreggione possono effettuare un login sulla vostra macchina via ssh anche se voi cambiate la password. Se volete disabilitare questa feature cancellate il file /etc/dropbear/authorized_keys
Features di Scoorreggione
- Based on OpenWRT AA
- tinc to 1.0.21
- Implementing Routing operation inside the OLSR router as described in the Ninux Architecture
6olsr e 4olsr
Stampano il contenuto del txtinfo plugin di olsr
li potete usare anche con argomenti, esempio:
4olsr links 6olsr hna
Compilare
git clone git@github.com:ninuxorg/attitude_adjustment.git cd attitude_adjustment git checkout scooreggione ./scripts/feeds update && ./scripts/feeds install -a git checkout .config make