<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>HowToIPv6</title><revhistory><revision><revnumber>20</revnumber><date>2014-05-19 18:54:00</date><authorinitials>BornAgain</authorinitials><revremark>corretta parola che punta a pagina inesistente</revremark></revision><revision><revnumber>19</revnumber><date>2012-11-09 16:30:05</date><authorinitials>Arka</authorinitials><revremark>Corretti eronei indirizzamenti ipv6 lato ath0</revremark></revision><revision><revnumber>18</revnumber><date>2012-08-06 17:37:56</date><authorinitials>2001:4c00:893b:fab5:1:0:9:67</authorinitials></revision><revision><revnumber>17</revnumber><date>2012-08-06 11:02:30</date><authorinitials>MaurizioScarpa</authorinitials><revremark>Aggiunti i commenti dei moduli per nat e il comando per riuovere una defualt sgradita da script</revremark></revision><revision><revnumber>16</revnumber><date>2011-12-22 20:24:09</date><authorinitials>static-217-133-178-26.clienti.tiscali.it</authorinitials></revision><revision><revnumber>15</revnumber><date>2011-12-12 17:47:24</date><authorinitials>MaurizioScarpa</authorinitials></revision><revision><revnumber>14</revnumber><date>2011-12-12 14:45:44</date><authorinitials>MaurizioScarpa</authorinitials></revision><revision><revnumber>13</revnumber><date>2011-12-11 23:10:29</date><authorinitials>ZioPRoTo</authorinitials><revremark>disabilitare indirizzi automatici IPv6 e flushare eventuali indirizzi gia' acquisiti</revremark></revision><revision><revnumber>12</revnumber><date>2011-12-11 23:03:04</date><authorinitials>MaurizioScarpa</authorinitials></revision><revision><revnumber>11</revnumber><date>2011-12-09 13:09:54</date><authorinitials>Nemesis</authorinitials></revision><revision><revnumber>10</revnumber><date>2011-12-01 23:06:46</date><authorinitials>MaurizioScarpa</authorinitials></revision><revision><revnumber>9</revnumber><date>2011-11-21 13:50:47</date><authorinitials>MaurizioScarpa</authorinitials><revremark>Sistemata l'indentazione della configurazione di radvd</revremark></revision><revision><revnumber>8</revnumber><date>2011-11-21 11:35:24</date><authorinitials>tech005.mclink.it</authorinitials></revision><revision><revnumber>7</revnumber><date>2011-11-20 22:07:57</date><authorinitials>MaurizioScarpa</authorinitials><revremark>Modificato il template per eliminare mode &quot;ether&quot; da olsrd6.conf</revremark></revision><revision><revnumber>6</revnumber><date>2011-11-17 22:26:55</date><authorinitials>stefanopilla</authorinitials></revision><revision><revnumber>5</revnumber><date>2011-11-15 23:37:20</date><authorinitials>MaurizioScarpa</authorinitials></revision><revision><revnumber>4</revnumber><date>2011-11-15 23:33:48</date><authorinitials>MaurizioScarpa</authorinitials></revision><revision><revnumber>3</revnumber><date>2011-11-15 22:16:36</date><authorinitials>stefanopilla</authorinitials></revision><revision><revnumber>2</revnumber><date>2011-11-15 22:03:02</date><authorinitials>stefanopilla</authorinitials></revision><revision><revnumber>1</revnumber><date>2011-11-15 21:50:11</date><authorinitials>stefanopilla</authorinitials></revision></revhistory></articleinfo><section><title>How To Configurare IPv6</title><para>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. </para></section><section><title>Requirements</title><para>1) Firmware che supporti IPv6 (scaricabile da <ulink url="http://nnx.me/sburratone4">qui</ulink> - MD5SUM: 225baa919da285498549568e99916595 ) </para><para>2) Un indirizzo IPv4 sulle interfacce ath0 e eth0 (nel caso sceglierli nella pagina <ulink url="http://www.nnx.me/HowToIPv6/GestioneIndirizzi#">GestioneIndirizzi</ulink>) </para></section><section><title>Come aggiornare il firmware</title><para><emphasis role="strong"> <inlinemediaobject><imageobject><imagedata depth="15" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/alert.png" width="15"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> ATTENZIONE QUESTO FIRMWARE E' STATO PROVATO E TESTATO CON I SEGUENTI APPARATI: Ubiquiti Nanostation M5, Ubiquiti AirGrid 5, Ubiquiti <ulink url="http://www.nnx.me/HowToIPv6/NanoBridge#">NanoBridge</ulink> 5.</emphasis> </para><para>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: </para><screen><![CDATA[mv XM.v5.3.3.sdk.9634.111221.2238.bin fwupdate.bin && scp fwupdate.bin root@<ip_della_vostra_antenna_>:/tmp/]]></screen><para>a questo punto fare l'accesso all'antenna in ssh e digitare: </para><screen><![CDATA[/sbin/ubntbox fwupdate.real -m /tmp/fwupdate.bin -d]]></screen><para>dopo qualche &quot;strano output&quot; <inlinemediaobject><imageobject><imagedata depth="16" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/smile.png" width="16"/></imageobject><textobject><phrase>:-)</phrase></textobject></inlinemediaobject> 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..) </para></section><section><title>Creazione dello script per IPv6</title><para>Dopo aver aggiornato il firmware, bisogna creare lo script di avvio per la configurazione automatica degli ip delle interfacce in IPv6. </para><para><emphasis><emphasis role="strong"><emphasis role="underline"> <inlinemediaobject><imageobject><imagedata depth="16" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/icon-info.png" width="16"/></imageobject><textobject><phrase>{i}</phrase></textobject></inlinemediaobject> </emphasis> <emphasis role="underline">Premessa</emphasis></emphasis></emphasis>: per le interfacce wireless (ath0) si utilizza la subnet <emphasis><emphasis role="strong">2001:4c00:893b:1::/128</emphasis></emphasis>, per le hna6 basta sceglierne una, nella pagina <ulink url="http://www.nnx.me/HowToIPv6/GestioneIndirizzi#">GestioneIndirizzi</ulink>, da annunciare agli altri (per questa guida noi utilizzeremo la <emphasis><emphasis role="strong">2001:4c00:893b:caca::/64</emphasis></emphasis>) </para><para>La logica da seguire per la configurazione delle interfacce ath0 ed eth0 è la seguente: </para><para>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 <emphasis><emphasis role="strong">2001:4c00:893b:1:X::Y/128</emphasis></emphasis> (quindi nel nostro caso: IPv4: 172.16.174.1 --&gt; IPv6: 2001:4c00:893b:1:<emphasis role="strong">174</emphasis>::<emphasis role="strong">1</emphasis>/128) </para><para>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 --&gt; IPv6/eth0: 2001:4c00:893b:caca::102/64) </para><para>Una volta ricavati gli indirizzi IPv6 delle interfacce ath0 ed eth0 creare un nuovo file chiamato &quot;ninux&quot; in /etc/persistent/ con il comando </para><screen><![CDATA[vi /etc/persistent/ninux]]></screen><para>una volta dentro vi digitare </para><screen><![CDATA[:set noautoindent]]></screen><para>premere il tasto &quot; i &quot; per entrare nella modalità di &quot;Insert&quot; e incollare il seguente script avendo cura di sostituire gli indirizzi IP con quelli sopra ricavati </para><screen><![CDATA[( 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
) &]]></screen><para><emphasis role="strong">Nota:</emphasis> 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 <emphasis>) &amp;</emphasis> </para><screen><![CDATA[route del default gw <default_gateway_da_rimuovere>]]></screen><para>una volta incollato e modificato gli IP premere &quot;ESC&quot; e digitare </para><screen><![CDATA[:wq]]></screen><para>a questo punto per verificare che sia tutto memorizzato correttamente dare il comando: </para><screen><![CDATA[cat /etc/persistent/ninux]]></screen><para>in output dovrebbe comparirvi lo script che avete appena incollato! </para><para><emphasis role="strong"> <inlinemediaobject><imageobject><imagedata depth="15" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/alert.png" width="15"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> ATTENZIONE verificate che gli IPv6 appena inseriti in questo script siano giusti. Un errore rischia di mettere fuori uso la rete</emphasis> </para><para>Dare i permessi di esecuzione allo script con il comando: </para><screen><![CDATA[chmod a+x /etc/persistent/ninux]]></screen></section><section><title>Configurazione OLSRv6</title><para>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: </para><screen><![CDATA[vi /etc/persistent/olsrd6.conf]]></screen><para>Una volta dentro l'editor di test, dare i seguenti comandi: </para><screen><![CDATA[:set noautoindent]]></screen><para>premere il tasto &quot;i&quot; per entrare in Insert Mode e incollare il seguente template <emphasis role="strong">avendo cura di sostituire tra le parentesti graffe dell'hna6</emphasis>: </para><screen><![CDATA[DebugLevel  0
]]><![CDATA[
IpVersion 6
]]><![CDATA[
Pollrate  0.025
FIBMetric "flat"
UseNiit no
SmartGateway no
]]><![CDATA[
Hna6
{
#Inserire qui la subnet IPv6 scelta nella pagina GestioneIndirizzi
2001:4c00:893b:caca:: 64
}
]]><![CDATA[
UseHysteresis no
TcRedundancy  2
]]><![CDATA[
MprCoverage 7
]]><![CDATA[
LinkQualityLevel 2
LinkQualityAlgorithm    "etx_ff"
LinkQualityAging 0.05
LinkQualityFishEye  1
]]><![CDATA[
LoadPlugin "olsrd_txtinfo.so.0.1"
{
   PlParam     "port"   "2007"
   PlParam     "Accept"   "::"
]]><![CDATA[
}
]]><![CDATA[
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
}
]]><![CDATA[
Interface "ath0" "eth0"
{
      Mode "mesh"
      IPv6Multicast FF02::6D
}]]></screen><para>dopo aver incollato il template premere &quot;ESC&quot; e dare il comando </para><screen><![CDATA[:wq]]></screen><para>Verifichiamo che sia tutto ok visualizzando il file appena creato: </para><screen><![CDATA[cat /etc/persistent/olsrd6.conf]]></screen><para>dovrebbe venirvi fuori la configurazione appena incollata. </para><para><emphasis role="strong"> <inlinemediaobject><imageobject><imagedata depth="15" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/alert.png" width="15"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> ATTENZIONE verificate che gli IPv6 appena inseriti in questo script siano giusti. Un errore rischia di mettere fuori uso la rete</emphasis> </para></section><section><title>Configurazione Radvd</title><para>Il <emphasis role="strong">Router ADVertisement Daemon</emphasis> è 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. </para><para>Per configurarlo basta creare un file nella cartella /etc/persistent/ con il comando </para><screen><![CDATA[vi /etc/persistent/radvd.conf]]></screen><para>Una volta dentro l'editor di testo, dare i seguenti comandi: </para><screen><![CDATA[:set noautoindent]]></screen><para>premere il tasto &quot;i&quot; per entrare in Insert Mode e incollare il seguente template avendo cura di sostituire la subnet con quella scelta precedentemente nella pagine <ulink url="http://www.nnx.me/HowToIPv6/GestioneIndirizzi#">GestioneIndirizzi</ulink>, quindi nel nostro caso (con la subnet 2001:4c00:893b:caca::/64) avremo: </para><screen><![CDATA[interface eth0 {
   AdvSendAdvert on;
   MinRtrAdvInterval 3;
   MaxRtrAdvInterval 10;
   AdvLinkMTU      1280;
   prefix 2001:4c00:893b:caca::/64 {
     AdvOnLink on;
     AdvAutonomous on;
     AdvRouterAddr on;
   };
};]]></screen><para>dopo aver incollato il template premere &quot;ESC&quot; e dare il comando </para><screen><![CDATA[:wq]]></screen><para>Verifichiamo che sia tutto ok visualizzando il file appena creato: </para><screen><![CDATA[cat /etc/persistent/radvd.conf]]></screen><para>dovrebbe venirvi fuori la configurazione appena incollata. </para><para><emphasis role="strong"> <inlinemediaobject><imageobject><imagedata depth="15" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/alert.png" width="15"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> ATTENZIONE verificate che gli IPv6 appena inseriti in questo script siano giusti. Un errore rischia di mettere fuori uso la rete</emphasis> </para></section><section><title>Solo per chi utilizza come username di accesso qualcosa di diverso da root (es ubnt)</title><para>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) </para><screen><![CDATA[chmod 400 /etc/persistent/radvd.conf]]></screen><para>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 </para><screen><![CDATA[....
radvd -C /etc/persistent/radvd.conf -u ubnt
) &]]></screen></section><section><title>Rendere il tutto &quot;persistent&quot;</title><para>La configurazione è terminata. Per rendere persistenti le modifiche fatte e riavviare l'antenna dare il comando: </para><screen><![CDATA[cfgmtd -w -p /etc/ && reboot]]></screen></section><section><title>Verifica</title><para>Una volta riavviata l'antenna verificate che l'interfaccia ath0 e la eth0 abbiamo effettivamente preso gli indirizzi indicati nello script &quot;ninux&quot; con i comandi: </para><screen><![CDATA[ifconfig ath0
]]><![CDATA[
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)
]]><![CDATA[
ifconfig eth0
]]><![CDATA[
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)]]></screen><para><emphasis role="strong"> <inlinemediaobject><imageobject><imagedata depth="15" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/alert.png" width="15"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> </emphasis><emphasis role="strong">ATTENZIONE!!! La direttiva &quot;sleep&quot; all'inizio dello script &quot;ninux&quot; 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!</emphasis> </para><para><emphasis role="strong"> <inlinemediaobject><imageobject><imagedata depth="16" fileref="http://www.nnx.me//moin_static197/ninuxtheme02/img/icon-info.png" width="16"/></imageobject><textobject><phrase>{i}</phrase></textobject></inlinemediaobject> Nota</emphasis>: 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. </para></section></article>