Italiano English
Edit History Actions

FirmwareScooreggione

OpenWRT firmware ninux.org (Codename :prrrr!!!)

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