4.1. Kernel pronto per IPv6

Le moderne ditribuzioni Linux già contengono kernel pronti per IPv6; la funzionalità IPv6 è generalmente compilata come modulo ma è possibile che questo non venga caricato automaticamente all'avvio del sistema.

Si veda la pagina IPv6+Linux-Status-Distribution per le informazioni più aggiornate.

Nota: non si dovrebbero più usare i kernel della serie 2.2.x perché non sono più aggiornati per IPv6.

4.1.1. Controllare il supporto IPv6 nel kernel corrente

Per controllare se il kernel corrente supporta IPv6, si dia un occhiata al proprio filesystem /proc. Deve esistere la seguente voce:

/proc/net/if_inet6
   

Un semplice test automatico potrebbe essere:

# test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"
   

Se esso fallisce è ovvio che il modulo IPv6 non è stato caricato.

4.1.2. Provare a caricare il modulo IPv6

Si può provare a caricare il modulo IPv6 eseguendo

# modprobe ipv6
   

Se tale comando ha successo, questo modulo dovrebbe essere caricato; lo si può controllare con il seguente comando:

# lsmod |grep -w 'ipv6' && echo "IPv6 module successfully loaded"
   

Il comando precedente dovrebbe quindi funzionare con successo.

Nota: lo scaricamento del modulo non è attualmente supportato e può causare, in alcune circostanze, il crash del kernel.

4.1.2.1. Caricamento automatico del modulo IPv6

È possibile caricare automaticamente il modulo IPv6 su richiesta. Basta aggiungere la seguente linea nel file di configurazione del loader dei moduli del kernel (normalmente /etc/modules.conf o /etc/conf.modules):

alias net-pf-10 ipv6  # carica automaticamente su richiesta il modulo IPv6 
    

È anche possibile disabilitare il caricamento automatico del modulo usando la seguente linea

alias net-pf-10 off   # disabilita il caricamento automatico del modulo IPv6 
    

Nota addizionale: nei kernel più recenti (serie 2.5 e successive), il meccanismo del caricatore dei moduli è stato modificato. Il nuovo file di configurazione è /etc/modprobe.conf invece di /etc/modules.conf, ma è comunque disponibile uno script per la traduzione. Per ulteriori dettagli si veda module-init-tool.

4.1.3. Compilare il kernel con le funzionalità IPv6

Se entrambe le operazioni precedenti avessero esito negativo e il kernel considerato non avesse il supporto IPv6, si hanno le seguenti possibilità:

Se si decide di compilare un kernel, si dovrebbero avere precedenti esperienze in questa operazione e si dovrebbe leggere il Linux Kernel HOWTO.

Un confronto abbastana aggiornato tra il kernel puro (vanilla) e quello con le estensioni USAGI è disponibile su IPv6+Linux-Status-Kernel.

4.1.3.1. Compilazione di un kernel "vanilla"

Consigli più dettagliati sulla compilazione di un kernel con IPv6 possono essere reperiti, per esempio, su IPv6-HOWTO-2#kernel.

Nota: quando possibile si dovrebbero usare kernel della serie 2.4.x o superiori, poiché il supporto IPv6, nella serie 2.2.x non è così aggiornato e necessita di alcune patch per ICMPv6 e per il supporto 6to4 (che si possono trovare su kernel series 2.2.x IPv6 patches).

4.1.3.2. Compilazione del kernel con le estensioni USAGI

Come per il kernel vanilla, questa operazione è raccomandata solo agli utenti esperti che abbiano già familiarità con IPv6 e la compilazione del kernel. Si veda anche il progetto USAGI / FAQ e Ottenere il miglior supporto IPv6 con Linux (Articolo) (Mirror).

4.1.4. Dispositivi di rete pronti per IPv6

Non tutti i dispositivi di rete esistenti hanno già (o avranno mai) la capacità di trasportare pacchetti IPv6. Lo stato attuale è reperibile presso IPv6+Linux-status-kernel.html#transport.

Una questione importante è che a causa della struttura dei livelli di rete nell'implementazione del kernel, un pacchetto IPv6 non viene effettivamente riconosciuto dal suo numero di intestazione IP (6 invece di 4) ma piuttosto dal numero di protocollo di trasporto di livello 2. Pertanto ogni protocollo di trasporto che non usa tale numero di protocollo, non può inviare pacchetti IPv6. Nota: il pacchetto viene comunque trasportato sul collegamento, ma dal lato ricevente il recapito non funziona (come si può vedere, per esempio, con tcpdump).

4.1.4.1. Collegamenti che non saranno mai "idonei IPv6"

  • Serial Line IP (SLIP, RFC 1055 / SLIP), attualmente dovrebbe essere più correttamente detto SLIPv4, dispositivo chiamato: slX

  • Parallel Line IP (PLIP), simile a SLIP, nome del dispositivo: plipX

  • ISDN con incapsulazione rawip, nome del dispositivo: isdnX

4.1.4.2. Collegamenti attualmente conosciuti come "idonei IPv6 ma non supportati"

  • ISDN con incapsulazione syncppp, nome del dispositivo: ipppX (edizione di progetto dell'ipppd, sarà assorbito nel più generale livello PPP nel kernel serie 2.5.x).