Gentoo Logo

Guida al routing IPv6 con Gentoo

Indice:

1.  Preliminari

Configurazione di base del kernel

Tutti i kernel tree presenti in Gentoo supportano facilmente le connessioni IPv6. Il nuovo stack IPv6 USAGI è integrato direttamente nel kernel a partire dalle versioni Linux 2.6.0.

Codice 1.1: Installare un kernel

# emerge gentoo-sources

Ora si è pronti per entrare nella directory dei sorgenti del kernel e iniziarne la nuova configurazione.

Codice 1.2: Configurare il kernel Linux

# cd /usr/src/linux
# make menuconfig

Nota: Questo presuppone che il collegamento /usr/src/linux punti ai sorgenti che si ha intenzione di utilizzare.

Codice 1.3: opzioni di 'make menuconfig'

Networking support --->
  Networking options --->
    <*> The IPv6 protocol --->
(Le opzioni IPv6 sotto questa voce potrebbero essere utili per diverse applicazioni,)
(ma non dovrebbero essere necessarie per una configurazione di base)
(Questa opzione è necessaria solo se viene utilizzato ptrtd per la conversione 6to4)
Device Drivers --->
  Network device support --->
    <*> Universal TUN/TAP device driver support

Verificare il supporto IPv6

Dopo aver abilitato le opzioni raccomandate, ricompilare il kernel e riavviare servendosi del nuovo kernel con supporto IPv6.

Se non è già stato installato iproute2, è importante farlo ora. iproute2 è una suite di programmi per la configurazione di rete che contiene ip, il celebre sostituto di ifconfig, route, iptunnel e altri...

Codice 1.4: Installare iproute2

# emerge sys-apps/iproute2

Avvertenza: L'uso di ifconfig può causare seri problemi se sono attivi tunnel multipli. Bisogna rimuovere infatti i tunnel in ordine inverso, quindi l'ultimo che è stato creato deve essere rimosso per primo.

Se IPv6 è attivo, il dispositivo di loopback dovrebbe mostrare un indirizzo IPv6:

Codice 1.5: Controllare il dispositivo di loopback

# ip -6 addr show lo
1: lo: <LOOPBACK,UP> mtu 16436
     inet6 ::1/128 scope host
        valid_lft forever preferred_lft forever
(La precedente riga dimostra che tutto sta funzionando)

Prima di proseguire, assicurarsi di aggiungere ipv6 alla propria lista nella variabile USE in make.conf, in modo tale che i futuri emerge di pacchetti includeranno il supporto a IPv6.

2.  Configurazione di Tunnel

Configurazione di base

La maggior parte degli ISP (ndt, fornitori del servizio Internet) non offre nessuna connessione IPv6 nativa. Per aggirare questa limitazione, esistono diversi "tunnel brokers" in giro per il mondo che offrono gratuitamente dei tunnel IPv6. Questo permetterà  di creare, per le proprie connessioni IPv6, un tunnel attraverso una connessione IPv4.

Broker Località 
Hurricane Electric Nord America, Europa, Asia
Freenet6 Stati Uniti
Sixxs Europa
Singnet Singapore
Aarnet Australia/Pacifico Meridionale

Di seguito vengono proposti due esempi per impostare un tunnel con due popolari broker del Nord America, Hurricane Electric e Freenet6.

Hurricane Electric

Hurricane Electric (in breve HE) offre tunnel IPv6 gratuiti e alloca per l'utente blocchi di indirizzi /64. Inoltre permette la configurazione del reverse DNS (DNS inverso). Ottenere un tunnel da HE è facile: basta andare su http://www.tunnelbroker.net e compilare una pagina con i propri dati.

Nota: La registrazione richiede informazioni quali il proprio indirizzo e numero di telefono.

Dopo aver ottenuto un tunnel riconosciuto e allocato un blocco /64, è possibile configurare la propria Gentoo box. HE fornisce una semplice configurazione basata sui comandi ifconfig e iproute. I due esempi seguenti presuppongono di avere una configurazione di questo tipo:

Indirizzo IPv4 locale (eth0) 68.36.91.195
Indirizzo IPv4 HE 64.71.128.82
Indirizzo del tunnel IPv6 locale 2001:470:1F00:FFFF::189
Blocco IPv6 2001:470:1F00:296::/64

Usando il pacchetto iproute2 e il comando ip, dare le seguenti istruzioni:

Codice 2.1: Configurazione di un tunnel IPv6

(Crea un tunnel tra gli indirizzi IPv4 locale (eth0) e quello remoto di HE)
# ip tunnel add sixbone mode sit remote 64.71.128.82 local 68.36.91.195 ttl 64 dev eth0
(Sottrae l'overhead del tunnel dalla MTU)
# ip link set sixbone mtu 1280 
(Attiva il tunnel)
# ip link set sixbone up
(Assegna l'indirizzo IPv6)
# ip addr add 2001:470:1F00:FFFF::189 dev sixbone
(Instrada ogni indirizzo IPv6 attraverso il dispositivo tunnel 'sixbone'
# ip route add 2003::/3 dev sixbone

Freenet6

Freenet6 è un altro tunnel broker gratuito. La registrazione richiede soltanto un nome uten ed un indirizzo email valido. Hanno scelto di gestire il tunnel attraverso un'impostazione client/server ed hanno creato il client gateway6. Questo client è disponibile in Portage. Per installarlo eseguire:

Codice 2.2: Installare il client Freenet6

# emerge gateway6

Ora se si ha scelto di connettersi tramite autenticazione bisogna configurare gateway6 modificando /etc/gateway6/gw6c.conf. Bisogna cambiare soltanto i campi userid e passwd facendoli corrispondere ai valori assegnati da Freenet6. Segue un semplice e completo esempio di file di configurazione:

Codice 2.3: esempio di gw6c.conf

auth_method=any
userid=anonymous
passwd=foobar
template=linux
server=broker.freenet6.net

Provare la propria connessione

Ora che il proprio tunnel è configurato, è possibile provare la connessione. Il modo più facile per farlo è utilizzare il comando ping6 e provare a pingare un host IPv6.

Codice 2.4: Provare la connessione

# emerge iputils
# ping6 www.kame.net
PING www.kame.net(orange.kame.net) 56 data bytes
64 bytes from orange.kame.net: icmp_seq=1 ttl=52 time=290 ms
64 bytes from orange.kame.net: icmp_seq=2 ttl=52 time=277 ms
64 bytes from orange.kame.net: icmp_seq=3 ttl=52 time=280 ms
64 bytes from orange.kame.net: icmp_seq=4 ttl=52 time=279 ms
64 bytes from orange.kame.net: icmp_seq=5 ttl=52 time=277 ms

--- www.kame.net ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4038ms
rtt min/avg/max/mdev = 277.040/281.041/290.046/4.699 ms

Sono attualmente in corso ulteriori lavori per migliorare il supporto IPv6 negli script init di rete. Se si vuole conoscere lo stato dei lavori e/o dare una mano, scrivere a latexer@gentoo.org.

3.  Supporto IPv6 nelle applicazioni

Ri-emergere i pacchetti

A meno che non si abbia già impostato in precedenza USE="ipv6" nel proprio /etc/portage/make.conf, probabilmente bisognerà ri-effettuare l'operazione di emerge per un certo numero di pacchetti in modo da ricompilarli con il supporto IPv6 attivo. Per ottenere una lista di tutti i pacchetti installati che sono influenzati dai cambiamenti della flag USE ipv6, usare l'opzione del Portage --newuse (-N) :

Codice 3.1: Candidati per il re-emerging

# emerge -uDNav world

Se sono state cambiate molte flag USE, la lista potrebbe essere molto lunga. È quindi consigliato di mantenere il proprio sistema aggiornato, per evitare problemi nel caso si decida di ricompilare tutti i pacchetti influenzati dai cambiamenti alle flag USE.

Nota: Alcuni pacchetti rilevano automaticamente il supporto a IPv6 e quindi non possiedono una flag USE ipv6. Quindi non tutti i pacchetti che dovrebbero supportare IPv6 lo supporteranno, se sono stati compilati in presenza di un kernel con IPv6 non attivato.

Pacchetti specifici per IPv6

Ci sono diversi pacchetti che si occupano nello specifico delle caratteristiche di IPv6. La maggior parte di essi è situata in /usr/portage/net-misc.

Pacchetto Descrizione
net-misc/ipv6calc Converte un indirizzo IPv6 in un formato compresso
net-misc/netcat6 versione di netcat che supporta IPv6 e IPv4
dev-perl/Socket6 Parte relativa ad IPv6 delle definizioni e dei manipolatori di strutture del C socket.h

4.  Impostazioni del DNS

IPv6 e DNS

Mentre un DNS per IPv4 usa i record A, il DNS per IPv6 usa i record AAAA. (questo perchè IPv4 possiede uno spazio di indirizzamento di 2^32 contro lo spazio di indirizzamento di IPv6 pari a 2^128). Per il reverse DNS (DNS inverso), lo standard INT è deprecato ma ancora ampiamente supportato. ARPA è il formato più recente. Qui verrà descritto il supporto per il formato ARPA.

Configurazione di BIND

Le versioni più recenti di BIND includono un eccellente supporto per IPv6. In questa sezione si assumerà che il lettore possieda almeno le conoscenze minime necessarie per configurare e utilizzare BIND. Si assumerà inoltre che bind non giri in un chroot. In caso contrario, appendere semplicemente il prefisso del chroot nella maggior parte dei percorsi nella sezione seguente.

Prima di tutto bisogna aggiungere nei file di zona le impostazioni sia per il forward che il reverse DNS, in /etc/bind/named.conf.

Codice 4.1: Impostazioni di named.conf

(Mettere bind in ascolto di indirizzi IPv6.
Usare 'any' è l'unico modo per farlo prima di bind-9.3)
options {
        [...]
        listen-on-v6 { any; }
        [...]
};
(Questo fornirà  il forward DNS per il dominio 'ipv6-rules.com':)
zone "ipv6-rules.com" IN {
        type master;
        file "pri/ipv6-rules.com";
};
(Il formato per il reverse DNS è il "bitwise." È ottenuto prendendo il prefisso IPv6,
invertendo l'ordine dei numeri e aggiungendo un punto fra ogni numero)
zone "6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa" {
        type master;
        file "pri/rev-ipv6-rules.com.arpa";
};

Ora bisogna creare per ognuno dei propri host i file di zona e aggiungervi le impostazioni necessarie:

Codice 4.2: pri/ipv6-rules.com

$TTL    2h
@       IN      SOA     ipv6-rules.com. webmaster.ipv6-rules.com.  (
                                2003052501 ; Serial
                                28800      ; Refresh
                                14400      ; Retry
                                3600000    ; Expire
                                86400 )    ; Minimum
                                NS      ns1.ipv6-rules.com

        IN      AAAA    2001:470:1f00:296::1 ; address for ipv6-rules.com
host1   IN      AAAA    2001:470:1f00:296::2 ; address for host1.ipv6-rules.com
host2   IN      AAAA    2001:470:1f00:296::3:3 ; address for host2.ipv6-rules.com

Codice 4.3: pri/rev-ipv6-rules.com.arpa

$TTL 3d ; Default TTL (bind 8 needs this, bind 9 ignores it)
@       IN SOA ipv6-rules.com. webmaster.ipv6-rules.com. (
                        2003052501      ; Serial number (YYYYMMdd)
                        24h             ; Refresh time
                        30m             ; Retry time
                        2d              ; Expire time
                        3d )            ; Default TTL
        IN      NS     ns1.ipv6-rules.com.
; IPv6 PTR entries
$ORIGIN 6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.int.

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     ipv6-rules.com.
2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host1.ipv6-rules.com.
3.0.0.0.3.0.0.0.0.0.0.0.0.0.0.0 IN      PTR     host2.ipv6-rules.com.

Configurazione di DJBDNS

Attualmente esistono diverse patch di terze parti per DJBDNS, disponibili su http://www.fefe.de/dns/", che gli permettono di funzionare anche con IPv6. DJBDNS può essere installato con queste patch installandolo con la flag ipv6 impostata nella propria variabile USE.

Avvertenza: Tuttavia anche con queste patch non sono supportati tutti i tipi di record. In particolare, non sono supportati i record NS e MX.

Codice 4.4: Installare djbdns

# emerge djbdns

Dopo che djbdns è stato installato, può essere configurato dando tinydns-setup e rispondendo alle poche domande circa a quale indirizzo legarlo, dove installare tinydns, ecc.

Codice 4.5: Impostare tinydns

# tinydns-setup

Asummendo di aver installato tinydns in /var/tinydns, ora si può modificare /var/tinydns/root/data. Questo file conterrà tutti i dati necessari per far sì che tinydns gestisca il DNS per la propria delegazione IPv6.

Codice 4.6: File d'esempio

(*.ipv6-rules.com è autoritativamente gestito da 192.168.0.1)
.ipv6-rules.com:192.168.0.1:a:259200
(Reverse DNS autoritativo per 2001:470:1f00:296::/64)
.6.9.2.0.0.0.f.1.0.7.4.0.1.0.0.2.ip6.arpa:192.168.0.1:a
(Specifica gli IP per host1 e host2)
6host1.ipv6-rules.com:200104701f0002960000000000000001:86400
6host2.ipv6-rules.com:200104701f0002960000000000000002:86400
(Fa puntare www a host1)
3www.ipv6-rules.com:200104701f0002960000000000000002:86400

Le linee con prefisso 6 avranno impostato sia un record AAAA che PTR. Quelle con prefisso 3 avranno impostato soltanto un record AAAA. Oltre a modificare manualmente il file data, è possibile utilizzare gli script add-host6 e add-alias6 per aggiungere nuove voci. Dopo aver fatto i cambiamenti al file data, basta dare il comando make da /var/tinydns/root. Questo creerà /var/tinydns/root/data.cfb, che tinydns userà  come fonte di informazione per le richieste di DNS.

5.  Router IPv6

Configurare il routing (instradamento)

Se si desidera utilizzare il proprio sistema come router per gli altri client che vogliono collegarsi al mondo esterno con IPv6, sono necessarie ulteriori configurazioni. Bisogna abilitare il forwarding dei pacchetti IPv6, e lo si può fare in uno dei due seguenti modi.

Codice 5.1: Abilitare il forwarding

# echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
o
# sysctl -w net.ipv6.conf.all.forwarding=1

Avvertenza: Lo script di init radvd abilita (e disabilita) il forwarding, rendendo inutile il passo seguente.

Per abilitare il forwarding al boot, bisogna modificare /etc/sysctl.conf e aggiungere la seguente linea.

Codice 5.2: Aggiunta a sysctl.conf

(Se verrà usato radvd, questo passo non sarà necessario)
net.ipv6.conf.default.forwarding=1

Il traffico dovrebbe essere ora inviato da questa macchina attraverso il tunnel stabilito con il proprio broker.

Per assegnare gli indirizzi IPv6 ai client, la specifica di IPv6 permette sia l'assegnazione IP stateless (senza stati) che statefull (con stati). L'assegnazione stateless utilizza un processo chiamato Router Advertisement e permette ai client di ottenere un IP e una route predefinita semplicemente attivando un'interfaccia. È chiamato "stateless" poichè non viene registrata l'assegnazione degli IP e a quali host sono stati attribuiti. L'assegnazione stateful è gestita tramite DHCPv6. Questo metodo è "stateful" poichè il server mantiene uno stato dei client che hanno richiesto e ricevuto un IP.

Configurazione Stateless

La configurazione Stateless è facilmente ottenibile utilizzando il Router Advertisement Daemon, o radvd.

Codice 5.3: Configurare radvd

# emerge radvd

Dopo aver emerso radvd, bisogna creare /etc/radvd/radvd.conf che contiene le informazioni circa quali blocchi IP utilizzare per assegnare gli indirizzi. Di seguito viene offerto un semplice file radvd.conf che utilizza il prefisso assegnato dal proprio tunnel broker.

Codice 5.4: radvd.conf d'esempio

interface eth1
{

        (Invia un messaggio d'avviso agli altri hosts)
        AdvSendAdvert on;
        (La frammentazione è un male(tm))
        AdvLinkMTU 1280;
        MaxRtrAdvInterval 300;
        (Il prefisso della sottorete IPv6 viene assegnato dal proprio PoP)
        prefix 2001:470:1F00:296::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};

Avvertenza: Assicurarsi che l'interfaccia indicata nella prima linea sia corretta in modo da trasmettere gli advertisement del proprio router alla propria rete e non al proprio ISP!

Altre informazioni sono disponibili su man radvd.conf. Ora si può avviare radvd e impostarlo affinchè venga avviato al boot.

Codice 5.5: Attivare radvd

# /etc/init.d/radvd start
# rc-update add radvd default

Configurazione Stateful

Nel caso si voglia avere una configurazione stateful, bisogna installare e configurare net-misc/dibbler.

Codice 5.6: Installare dibbler

# emerge dibbler

Ora occorre configurare il client dibbler modificando /etc/dibbler/client.conf.

Codice 5.7: Esempio di configurazione del client dibbler

iface ppp0 {
        rapid-commit yes
        pd
        option dns-server
}

Ora si può avviare il client dibbler e configurarlo perché venga avviato al boot.

Codice 5.8: Avviare il client dibbler

# /etc/init.d/dibbler-client start
# rc-update add dibbler-client default

6.  Client IPv6

Usando radvd

I client dietro questo router dovrebbero potersi ora connettere al resto della rete tramite IPv6. Se si usa radvd, configurare gli host dovrebbe essere facile come attivarne le interfacce (questo sarà  probabilmente già stato fatto dai propri script init net.ethX).

Codice 6.1: Connettersi attraverso IPv6

# ip link set eth0 up
# ip addr show eth0
1: eth0: <BROADCAST,MULTICAST,UP> mtu 1400 qdisc pfifo_fast qlen 1000
    link/ether 00:01:03:2f:27:89 brd ff:ff:ff:ff:ff:ff
    inet6 2001:470:1f00:296:209:6bff:fe06:b7b4/128 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::209:6bff:fe06:b7b4/64 scope link
       valid_lft forever preferred_lft forever
    inet6 ff02::1/128 scope global
       valid_lft forever preferred_lft forever

7.  Altre risorse

Ci sono online molte eccellenti risorse riguardanti IPv6.

Sito Web Risorse
www.ipv6.org Informazioni generali su IPv6
www.linux-ipv6.org/ Progetto USAGI
www.deepspace6.net Sito su Linux/IPv6
www.kame.net Implementazione *BSD

In IRC, si può provare ad entrare in #ipv6 o #ipv6 su Freenode. È possibile connettersi ai server Freenode utilizzando un client con supporto IPv6 connettendosi a irc.ipv6.freenode.net.



Stampa

Aggiornato il 24 luglio 2012

La versione originale di questo documento non è più mantenuta

Oggetto: Questa guida mostra come impostare IPv6 su un sistema Gentoo. La trattazione comprende l'instaurazione di un tunnel tramite un tunnel broker, alcune configurazioni di base di DNS e come impostare i client affinchè utilizzino il sistema per connettersi a indirizzi IPv6.

Peter Johanson
Autore

Jorge Paulo
Redazione

Sven Vermeulen
Redazione, Revisione

Camille Huot
Redazione

Pasi Valminen
Redazione

Joshua Saddler
Redazione

Markos Chandras
Redazione

Shev
Traduzione

Riccardo Torsoli
Traduzione

Alfonso Tarantini
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.