= 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 <<<<<<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 }}} <>