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.
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.
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.
È 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.
Se entrambe le operazioni precedenti avessero esito negativo e il kernel considerato non avesse il supporto IPv6, si hanno le seguenti possibilità:
Aggiornare la propria distribuzione con una versione avente il supporto IPv6 incluso (raccomandato per i principianti), si veda IPv6+Linux-Status-Distribution
Compilare un nuovo kernel "vanilla" (facile, se si conoscono le opzioni necessarie)
Ricompilare i sorgenti del kernel della propria distribuzione Linux (a volte non così facile)
Compilare un kernel con le estensioni USAGI
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.
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).
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).
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).
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
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).