Italiano English
Edit History Actions

HowToIPv6

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.

{i} 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!

{i} 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.