ScriptAutoConfig

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à:

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##

l'ultima modifica è del 2014-05-19 19:28:16, fatta da BornAgain