Script AutoConfig
Per agevolare la creazione di isole mesh a Pisa i ragazzi di eigenLab hanno già da tempo adottato uno script, da inserire in fase di compilazione del firmware, per configurare in maniera molto veloce i device che creano la rete EigenNet (wiki e manifesto). Lavorandoci sopra ho cercato di adattare lo script alle esigenze di compatibilità con altre realtà come Roma che, invece di utilizzare batman, utilizza olsrd come protocollo di routing. O più semplicemente per poter avere una scelta più ampia
Dove recuperarlo
Lo script è ospitato all'indirizzo https://gitorious.org/eigennet/packages nel branch 'roma'. Nel README sono presenti le istruzioni per l'integrazione nel builder di OpenWrt.
Cosa devo sapere
Una volta compilato il firmware possiamo flashare il device (io uso Ap51Flash per comodità) lo stesso risponderà all'indirizzo 192.168.1.21 dove entreremo in telnet (solo il primo accesso) per settare la password di root o la key personale tramite il file di configurazione.
Configurazione
Prima di configurare il device è molto importante annunciare gli indirizzi scelti nell'apposita pagina di GestioneIndirizzi
vi etc/config/eigennet
settiamo il bootmode a 1 per attivare, al riavvio, la configurazione che stiamo impostando
config section 'general' option debugLevel '0' option bootmode '0'
impostiamo i valori relativi agli indirizzi v4 e v6 che abbiamo annunciato sulla wiki
option ip6addr_mesh '2001:4c00:893b:1:cab::1/128' option ip4addr_mesh '172.16.0.1' option netmask_mesh '255.255.0.0' option ip6addr_lan '2001:4c00:893b:cab::1/64' option ip4addr_lan '192.168.1.21' option netmask_lan '255.255.255.0' option gw_lan '0' option ip6_gw_lan '2001:4c00:893b:cab::10' option ip4_gw_lan '192.168.1.1' option dhcp_enable '1' option dhcp_lan_init '10' option hostName 'nome_device' option wan_set '0' option ip4_wan '0.0.0.0' option wan_mask '0.0.0.0' list resolvers '8.8.8.8 2001:4860:4860::8888'
nel caso abbiamo più di un device nel nostro nodo è bene che tra loro parlino olsrd, attiviamo l'opzione supernode
config section 'olsrd' option enable '0' option supernode '0' option gw_enable '0'
modifichiamo i parametri del servizio snmp editando almeno la location
config section 'snmp' option enable '1' option contact 'contatti@ninux.org' option location 'node_name'
settiamo wifi_mesh su 1 se vogliamo attivare l'interfaccia wireless per mettere il device in rete e poterlo collegare ad altri, scegliamo la modalità del collegamento wireless con l'opzione mesh_mode inserendo il modo adhoc o ap o sta
config section 'wireless' option wifi_mesh '1' option mesh_mode 'adhoc' option countrycode 'US' option wifi_channel '11' option meshSSID 'mesh.ninux.org' option meshBSSID '02:aa:bb:cc:dd:00' option meshMcastRate '6000' option station_mac '00:00:00:00:00:00' option ap_staSSID 'ninux.org' option ap_enable '0' option apSSID 'ap.ninux.org' option apKEY 'none' option apMaxClients '25' option tx_power '10'
se vogliamo che il router possa fungere da hotspot, abilitiamolo in questa sezione modificando a dovere le opzioni qui sotto
config section 'hotspot' option hs_enable '0' option hsMaxClients '50' option hsSSID 'www.ninux.org' option ip4addr_hs '192.168.10.1' option netmask_hs '255.255.255.0'
questo è da implementare e serve per il check della connettività personale, qualora ci fosse
config section 'gw4server' # TODO option enabled '0' option strictCheck '0' option checkInterval '10s' option bandwidth '2000/512' list checkHosts '8.8.8.8' list checkHosts '8.8.4.4'
queste opzioni, abilitate di default, ci consentono di visualizzare tramite interfaccia web una semplice pagina informativa dove potremo anche effettuare il test di capienza del link
config section 'httpinfo' option enabled '1' config section 'pointing' option enabled '1' config section 'bwtestclient' option enabled '1' config section 'bwtestserver' option enabled '1'
Nel caso si disponga di una chiave ssh personale, la possiamo inserire qui di seguito
config section 'sshserver' option enabled '1' option passwdAuth '1' option sshAuthorizedKeys ''
per salvare tutto il nostro lavoro digitiamo :wq se pensiamo di aver fatto cavolate, no proble, :q! e possiamo ricominciare da capo
quando si è certi della configurazione salvare e dare il comando
reboot && exit
è consigliato lasciare il terminale in ping su 192.168.1.21 dopo un paio di riavvii si noterà una sequenza di ping terminata la sequenza staccare il device dalla corrente per 10 secondi e riattaccarlo ora il device è pronto per far crescere un altro puntino verde
Si ... ma COSA FA?
Questo script parte all'avvio del device e genera in sequenza i file predisposti alla intera configurazione del router. In particolare va a creare/modificare i file presenti in /etc/config che risulteranno comunque editabili a seconda della opzione scelta in /etc/config/eigennet
config section 'general' option debugLevel '0' option bootmode '0'
Con il bootmode a 0 si comanda il primo avvio dello script, viene usato generalmente solo la prima volta ed in completo automatismo. Ad 1 si comanda la scrittura dei cambiamenti inseriti nel file /etc/config/eigennet, mentre si porterà autonomamente a 2 per dare conferma dell'avvenuta applicazione dei cambiamenti, è possibile settare un numero maggiore di 2 per ricordarsi che quella impostata è una configurazione personalizzata.
Riguardo l'assegnazione degli indirizzi possiamo controllare sia il dhcp che radvd tramite
option dhcp_enable '1'
che sono attivi di default per assegnare indirizzi IPv4 (dhcp) e IPv6 (radvd) all'interno della propria lan.
Questo script è abbastanza flessibile da poter decidere molteplici configurazioni quindi è possibile utilizzarlo sia sulle antenne sia sui router casalinghi (device che comunque supportino OpenWrt) e possiamo avere le seguenti realtà:
- Router base
- Router base + Access Point
- Router base + Access Point + OLSRd on LAN (es: router casalingo + nodo sul tetto)
Router base + !HotSpot (tipo AP ma con splashpage di presentazine vedi Nodogsplah)
- Router base + HS + OLSRd on LAN (es: HS + nodo sul tetto)
- Router base + HS + AP
- Router base + HS + AP + OLSRd on LAN (es: router casalingo + HS + nodo sul tetto)
- Router base + HS + AP + Mesh
- Router base + HS + AP + Mesh + OLSRd on LAN
- Router base + Mesh
- Router base + Mesh + HS
- Router base + Mesh + HS + OLSRd on LAN
- Router base + Mesh + AP
- Router base + Mesh + AP + OLSRd on LAN
In modalità mesh OLSRd risulterà già attivo sulla sola interfaccia wireless dedicata alla mesh, per attivare OLSRd anche sulla LAN occorrerà abilitare anche le opzioni enable e supernode.
Abbiamo inoltre la possibilità di selezionare la modalità di collegamento wireless tra i device, ovvero se volessimo creare una mesh pura (fortemente consigliata in ambienti come piccole comunità, quartieri, zone ad alta densità di router wifi e comunque in tutte le situazioni dove si vogliano instaurare molti link in modalità omnidirezionale) allora nell'opzione mesh_mode inseriamo il parametro adhoc. Per tutti quei collegamenti definibili punto-punto, e cioè dove si utilizza un device, definito master, in AccessPoint ed uno, definito slave, in SationMode, selezioniamo sul device master la modalità 'ap' e sullo slave la modalità 'sta' avendo cura di inserire, su quest'ultimo, il mac address dell'access point master nell'opzione station_mac
La modalità HotSpot fa partire il captive portal personalizzato preconfigurato per consentire una connessione pulita da eventuale traffico poco consono da parte degli utenti, è comunque possibile modificare i parametri di configurazione editando il file /etc/nodogsplash/nodogsplash.conf
Nella modalità Access Point il router si comporterà come un semplice router casalingo con interfaccia wifi.
Se volessimo modificare, aggiungere, togliere plugin dalla configurazione di OLSRd basta editare i file olsrd4 per l'istanza di OLSRd IPv4 ed olsrd6 per l'istanza di OLSRd in IPv6 che sono sono presenti nella cartella /etc/config/
DA COMPLETARE##