= Script AutoConfig = Per agevolare la creazione di isole mesh a Pisa i ragazzi di [[https://eigenlab.org|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 [[http://eigenlab.org/eigennet/cose-e-come-partecipare|EigenNet]] ([[https://wiki.eigenlab.org|wiki]] e [[http://eigenlab.org/articoli-e-comunicati/approfondimenti/102-eigennet-la-nuova-frontiera-delle-reti|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 [[http://wiki.ninux.org/GestioneIndirizzi|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 + [[http://it.wikipedia.org/wiki/Hotspot_(WLAN)|!HotSpot]] (tipo AP ma con splashpage di presentazine vedi [[http://wiki.openwrt.org/doc/howto/wireless.hotspot.nodogsplash|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 [[http://it.wikipedia.org/wiki/Captive_portal|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/ <>##