How To Configurare IPv6
Lo scopo di questa pagina è quello di aiutare nella configurazione di IPv6 delle antenne nella fase di deployment di questo protocollo sulla rete ninux. Dato che è in fase di sperimentazione potrebbero verificarsi la necessità di ulteriori passaggi non inclusi in questa guida. In quel caso è bene integrare la seguente pagina.
Requirements
1) Firmware che supporti IPv6 (scaricabile da qui - MD5SUM: 225baa919da285498549568e99916595 )
2) Un indirizzo IPv4 sulle interfacce ath0 e eth0 (nel caso sceglierli nella pagina GestioneIndirizzi)
Come aggiornare il firmware
ATTENZIONE QUESTO FIRMWARE E' STATO PROVATO E TESTATO CON I SEGUENTI APPARATI: Ubiquiti Nanostation M5, Ubiquiti AirGrid 5, Ubiquiti NanoBridge 5.
Per aggiornare il firmware alla versione che supporta IPv6 basta semplicemente accedere alla cartella dove è stato scaricato, rinominarlo e copiarlo nella cartella /tmp/ dell'Access Point. Quindi ad esempio con scp:
mv XM.v5.3.3.sdk.9634.111221.2238.bin fwupdate.bin && scp fwupdate.bin root@<ip_della_vostra_antenna_>:/tmp/
a questo punto fare l'accesso all'antenna in ssh e digitare:
/sbin/ubntbox fwupdate.real -m /tmp/fwupdate.bin -d
dopo qualche "strano output" la connessione ssh dovrebbe chiudersi...calmi, è tutto normale! Provare quindi a ricollegarsi dopo qualche secondo e verificare che i file di configurazione non siano stati modificati (es. configurazione di olsr, ip delle interfacce, etc..)
Creazione dello script per IPv6
Dopo aver aggiornato il firmware, bisogna creare lo script di avvio per la configurazione automatica degli ip delle interfacce in IPv6.
Premessa: per le interfacce wireless (ath0) si utilizza la subnet 2001:4c00:893b:1::/128, per le hna6 basta sceglierne una, nella pagina GestioneIndirizzi, da annunciare agli altri (per questa guida noi utilizzeremo la 2001:4c00:893b:caca::/64)
La logica da seguire per la configurazione delle interfacce ath0 ed eth0 è la seguente:
Considerando l'attuale indirizzo IPv4 dell'interfaccia wireless ath0 (es. 172.16.174.1) prendere il 3 e il 4 ottetto (174 e 1) e sostituirli al posto di X e Y nella subnet per le interfacce wireless 2001:4c00:893b:1:X::Y/128 (quindi nel nostro caso: IPv4: 172.16.174.1 --> IPv6: 2001:4c00:893b:1:174::1/128)
Per l'interfaccia eth0, dopo aver scelto la subnet da annunciare (es. 2001:4c00:893b:caca::/64) prendere l'ultimo ottetto dell'attuale indirizzo IPv4 della eth0 (es. dell'indirizzo 192.168.105.102 prendere solo 102) e sostituirlo alla X dell'indirizzo 2001:4c00:893b:caca::X/64 (quindi nel nostro caso: IPv4/eth0: 192.168.105.102 --> IPv6/eth0: 2001:4c00:893b:caca::102/64)
Una volta ricavati gli indirizzi IPv6 delle interfacce ath0 ed eth0 creare un nuovo file chiamato "ninux" in /etc/persistent/ con il comando
vi /etc/persistent/ninux
una volta dentro vi digitare
:set noautoindent
premere il tasto " i " per entrare nella modalità di "Insert" e incollare il seguente script avendo cura di sostituire gli indirizzi IP con quelli sopra ricavati
( sleep 60 if [ -e /etc/persistent/olsrd.conf ]; then olsrd -f /etc/persistent/olsrd.conf -d 0 elif [ -e /olsrd.conf ]; then olsrd -f /olsrd.conf -d 0 fi insmod ip_tables insmod iptable_filter #insmod ip_conntrack #insmod ip_nat #insmod iptable_nat #echo 300 > /proc/sys/net/ipv4/netfilter/ip_conntrack_timeout_established echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra ip -6 addr flush dev eth0 scope global ip -6 addr flush dev ath0 scope global ip addr add 2001:4c00:893b:1:174::1/128 dev ath0 ip addr add 2001:4c00:893b:caca::102/64 dev eth0 olsrd -f /etc/persistent/olsrd6.conf -d 0 radvd -C /etc/persistent/radvd.conf ) &
Nota: Chi avessse bisogno di rimuovere un default gateway che non riesce a togliere dalla interfaccia grafica (bug noto a tutti) puo' inserire questa riga prima delle parentesi ) &
route del default gw <default_gateway_da_rimuovere>
una volta incollato e modificato gli IP premere "ESC" e digitare
:wq
a questo punto per verificare che sia tutto memorizzato correttamente dare il comando:
cat /etc/persistent/ninux
in output dovrebbe comparirvi lo script che avete appena incollato!
ATTENZIONE verificate che gli IPv6 appena inseriti in questo script siano giusti. Un errore rischia di mettere fuori uso la rete
Dare i permessi di esecuzione allo script con il comando:
chmod a+x /etc/persistent/ninux
Configurazione OLSRv6
OLSR è il protocollo di routing utilizzato nella rete ninux per permette ai vari Access Point di scambiarsi le rotte e quindi inoltrare le informazioni in modo corretto. OLSR ha bisogno di una ulteriore istanza per il protocollo IPv6. Sull'antenna quindi risulteranno attivi due daemond OLSR, uno per IPv4 e uno per IPv6. Chiaramente questi due demoni utilizzano dei files di configurazione differenti. La configurazione di OLSR quindi è abbastanza semplice. Basta semplicemente creare questo file di configurazione (se non già presente) sempre in /etc/persistent/ con il comando:
vi /etc/persistent/olsrd6.conf
Una volta dentro l'editor di test, dare i seguenti comandi:
:set noautoindent
premere il tasto "i" per entrare in Insert Mode e incollare il seguente template avendo cura di sostituire tra le parentesti graffe dell'hna6:
DebugLevel 0 IpVersion 6 Pollrate 0.025 FIBMetric "flat" UseNiit no SmartGateway no Hna6 { #Inserire qui la subnet IPv6 scelta nella pagina GestioneIndirizzi 2001:4c00:893b:caca:: 64 } UseHysteresis no TcRedundancy 2 MprCoverage 7 LinkQualityLevel 2 LinkQualityAlgorithm "etx_ff" LinkQualityAging 0.05 LinkQualityFishEye 1 LoadPlugin "olsrd_txtinfo.so.0.1" { PlParam "port" "2007" PlParam "Accept" "::" } InterfaceDefaults { HelloInterval 3.0 HelloValidityTime 125.0 TcInterval 2.0 TcValidityTime 500.0 MidInterval 25.0 MidValidityTime 500.0 HnaInterval 10.0 HnaValidityTime 125.0 } Interface "ath0" "eth0" { Mode "mesh" IPv6Multicast FF02::6D }
dopo aver incollato il template premere "ESC" e dare il comando
:wq
Verifichiamo che sia tutto ok visualizzando il file appena creato:
cat /etc/persistent/olsrd6.conf
dovrebbe venirvi fuori la configurazione appena incollata.
ATTENZIONE verificate che gli IPv6 appena inseriti in questo script siano giusti. Un errore rischia di mettere fuori uso la rete
Configurazione Radvd
Il Router ADVertisement Daemon è molto utile in una LAN quando i client devono essere configurati automaticamente. E' una sorta di configuratore automatico di IPv6. Questo router ascolta le RS (Router Solicitations) e risponde con delle RA (Router Advertisement) oltre che inviare delle unsolicited RAs ogni tanto.
Per configurarlo basta creare un file nella cartella /etc/persistent/ con il comando
vi /etc/persistent/radvd.conf
Una volta dentro l'editor di testo, dare i seguenti comandi:
:set noautoindent
premere il tasto "i" per entrare in Insert Mode e incollare il seguente template avendo cura di sostituire la subnet con quella scelta precedentemente nella pagine GestioneIndirizzi, quindi nel nostro caso (con la subnet 2001:4c00:893b:caca::/64) avremo:
interface eth0 { AdvSendAdvert on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvLinkMTU 1280; prefix 2001:4c00:893b:caca::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
dopo aver incollato il template premere "ESC" e dare il comando
:wq
Verifichiamo che sia tutto ok visualizzando il file appena creato:
cat /etc/persistent/radvd.conf
dovrebbe venirvi fuori la configurazione appena incollata.
ATTENZIONE verificate che gli IPv6 appena inseriti in questo script siano giusti. Un errore rischia di mettere fuori uso la rete
Solo per chi utilizza come username di accesso qualcosa di diverso da root (es ubnt)
Correggiamo i permessi perchè alcune macchine stentano ad avviare radvd se non hanno i permessi settati in questo modo (rimuovere i permessi di scrittura agli other)
chmod 400 /etc/persistent/radvd.conf
nello script ninux il comando di avvio di radvd deve includere la direttiva -u ubnt (o quello che si utilizza) per cui le ultime due righe dello script devono diventare qualcosa di simile a questo
.... radvd -C /etc/persistent/radvd.conf -u ubnt ) &
Rendere il tutto "persistent"
La configurazione è terminata. Per rendere persistenti le modifiche fatte e riavviare l'antenna dare il comando:
cfgmtd -w -p /etc/ && reboot
Verifica
Una volta riavviata l'antenna verificate che l'interfaccia ath0 e la eth0 abbiamo effettivamente preso gli indirizzi indicati nello script "ninux" con i comandi:
ifconfig ath0 ath0 Link encap:Ethernet HWaddr 00:15:6D:9C:46:C8 inet addr:172.16.174.1 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: 2001:4c00:893b:1:174::1/128 Scope:Global inet6 addr: fe80::215:6dff:fe9c:46c8/64 Scope:Link UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST MTU:1500 Metric:1 RX packets:701231 errors:0 dropped:0 overruns:0 frame:0 TX packets:562196 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:591008817 (563.6 MiB) TX bytes:184695095 (176.1 MiB) ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:15:6D:9D:46:C8 inet addr:192.168.105.102 Bcast:192.168.105.255 Mask:255.255.255.0 inet6 addr: 2001:4c00:893b:caca::102/64 Scope:Global inet6 addr: fe80::215:6dff:fe9d:46c8/64 Scope:Link UP BROADCAST RUNNING PROMISC ALLMULTI MULTICAST MTU:1500 Metric:1 RX packets:553188 errors:0 dropped:0 overruns:0 frame:0 TX packets:677134 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:112033873 (106.8 MiB) TX bytes:571749011 (545.2 MiB)
ATTENZIONE!!! La direttiva "sleep" all'inizio dello script "ninux" potrebbe far tardare l'assegnazione dell'IPv6 all'interfaccia. Questa direttiva è stata inserita per essere sicuri che l'IP venga assegnato solo una volta che l'antenna si sia correttamente allineata a livello fisico!
Nota: Per poter raggiungere un altro punto IPv6 i vostri hop intermedi devono supportare IPv6. Se un nodo nel percorso fino a destinazione non supporta IPv6 il vostro pacchetto si fermerà li non permettendovi di raggiungere la vostra destinazione.