Esperimenti wifi
Un pò off topic, ma nemmeno tanto, mi sono messo a sperimentare un modo per utilizzare uno degli access point già installati con Lime per vedere meglio come funzionano alcune cose e risparmiare un pò di energia, volevo infatti evitare di tenere accesi due access point.
Contents |
Scopo dell'esperimento
Usare un access point di quelli che montiamo a terra per diffondere il segnale a 2.4 Giga (ma questo è solo un dettaglio, non ci sono motivi per non farlo anche in altri access point) come access point anche per la rete wifi di casa mia.
Il piano è molto semplice ma..... l'access point su cui ho fatto esperimenti ha una sola porta di rete (configurata per la lan per rendere raggiungibile via ssh openwrt).
Da esperimenti e verifiche precedenti modificare da interfaccia web compromette la configurazione di Lime e quindi meglio iniziare a sperimentare a mano.
Non sono un mago nel networking e quindi qualche passaggio richiede studio.
La situazione di partenza
La rete Lime di Ninux Bologna utilizza ip 10.51.x.x, la mia rete di casa 192.168.1.x. Le due reti pur risiedendo sullo stesso ap devono rimanere separate almeno per ora. In futuro mi piacerebbe poter navigare su Ninux dal mio telefonino agganciato alla wifi di casa ma evitare che chi si aggancia a Ninux usi la mia connessione ad internet.
Lime configura le interfacce wifi in bridge con la ethernet e con bat0
root@NinuxBoNode-2b19e1:~# brctl show bridge name bridge id STP enabled interfaces br-lan 7fff.10feed2b19e2 no eth1 wlan0_ap bat0
C'è un dhcp che rilascia ip per la rete 10.51.x.x e potrebbe andare in conflitto con il mio modem.
Anygw sembra abbia qualche problema con le modifiche.
La mia rete usa una chiave wpa2 mentre ninux è open.
Varie ed eventuali.
Metodo di sperimentazione
Per evitare di fare danni e dover resettare o ricaricare il firmware sull'ap ho preferito testare le modifiche più "rischiose" con questo metodo:
comando; sleep 600; reboot
In questo modo una modifica ad esempio al bridge che compromette la connessione all'access point non viene scritta su file quindi basta un reboot per ripristinare alla situazione precedente, inoltre se qualcosa va storto basta attendere 10 minuti per l'esecuzione del comando schedulato. Se invece tutto va a buon fine un control+C evita il reboot e si possono proseguire gli esperimenti.
Aggiungere un ssid a Lime
Evitare le modifiche da interfaccia web!!!, qui riporto solamente la configurazione finale, ma i test inizialmente li ho fatto usando i comandi da cli
root@NinuxBoNode-01dff6:~# cat /etc/config/wireless config wifi-device 'radio0' option type 'mac80211' option channel '11' option hwmode '11g' option path 'pci0000:00/0000:00:00.0' option htmode 'HT20' option disabled '0' option txpower '16' option country 'IT' config wifi-iface 'lm_wlan0_ap_radio0' option mode 'ap' option device 'radio0' option ifname 'wlan0_ap' option network 'lan' option ssid 'NinuxBO' option mesh_mesh_fwding '0' option mesh_mesh_id 'LiMe' config wifi-iface 'c_wlan0_ap_radio0' option mode 'ap' option device 'radio0' option ifname 'wlan0_ap_c' option ssid 'Cast' option mcast_rate '24000' option encryption 'psk2' option key 'xxxxxxxxxxxxxxxxxxx' option short_preamble '1' config wifi-iface 'lm_wlan0_adhoc_radio0' option mode 'adhoc' option device 'radio0' option ifname 'wlan0_adhoc' option network 'lm_net_wlan0_adhoc' option mesh_mesh_fwding '0' option mesh_mesh_id 'LiMe' option bssid 'de:d1:c0:c0:d1:ce' option mcast_rate '24000' option ssid 'NinuxBO-mesh'
Ora basta riavviare l'access point e si avrà un nuovo ssid chiamato Cast che fa riferimento all'interfaccia c_wlan0_ap_radio0
root@NinuxBoNode-01dff6:~# ifconfig wlan0_ap_c wlan0_ap_c Link encap:Ethernet HWaddr 6E:72:51:00:DF:F6 inet6 addr: fe80::6c72:51ff:fe00:dff6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:960279 errors:0 dropped:0 overruns:0 frame:0 TX packets:1302872 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:95694703 (91.2 MiB) TX bytes:1127964695 (1.0 GiB)
Ora una modifica al file di configurazione di lime /etc/config/lime, un commento sulla riga di anygw che ha iniziato a dare messaggi di errore durante i test. Non ho indagato fino in fondo.
#list protocols anygw
Ed uno script che viene sesguito all'avvio dell'access point, ho preferito fare uno script in modo che aggiornando il firmware poi mi basterà copiare questo script per riattivare le modifiche. Inoltre può essere lanciato a mano se se ne prevede un uso sporadico.
root@NinuxBoNode-01dff6:~# cat /etc/init.d/Cast #!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org START=97 start() { brctl delif br-lan eth0 #Toglie l'interfaccia eth0 dal bridge (quello usato da Lime) brctl addbr br-priv #Crea un nuovo bridge chiamato br-priv brctl addif br-priv eth0 #Aggiunge eth0 al bridge br-priv, questa interfaccia va collegata via cavo al mio modem brctl addif br-priv wlan0_ap_c #Aggiunge wlan0_ap_c al bridge br-priv, su questa interfaccia c'è l'ssid creato per la mia rete domestica ifconfig br-priv 192.168.1.252 #Indirizzo assegnato all'interfaccia eth0 per gestire l'ap dalla mia rete domestica brctl show #Tre comandi di display per vedere se è tutto ok ifconfig br-priv route -n }
Proviamo se lo script funziona
/etc/init.d/Cast start
Ora va attivato con il comando
/etc/init.d/Cast enable
Per quanto riguarda il dhcp nel mio caso l'ho completamente disattivato al momento usandone uno esterno perchè ho attivo un captive portal che fa anche da dns.
/etc/ini.t/dnsmasq disable
Conclusioni finali
L'access point collegato al modem mi serve per ripetere il segnale wifi verso il giardino.
Finora avevo un access point in casa che però all'esterno aveva un segnale non buonissimo per vari motivi, mentre avevo un ottimo segnale ninux avendo un access point da esterni. Ora il segnale wifi è perfetto.
Non avendo ancora una rete sviluppata e con pochi servizi si corre il rischio che un nodo con un problema possa rimanere offline per qualche tempo prima che qualcuno se ne accorga, se l'access point è usato anche per altro è più facile accorgersi di eventuali problemi.