As distribuições mais novas de Linux já tem o kernel com suporte ao IPv6, e este suporte geralmente acontece com a compilação em módulos, mas é possível que estes módulos sejam carregados no momento do boot.
Nota: voce não deve usar o kernel da série 2.2, porque ele já não é mais atualizado. A série 2.4 também já não tem todas as atualizações de acordo com as últimas RFC's, então recomendamos utilizar um kernel da série 2.6.
Para verificar se o seu kernel já está com o suporte a IPv6 habilitado, de uma olhada nos arquivos do diretório /proc. A seguinte entrada deve existir:
/proc/net/if_inet6 |
Para quem gosta de scripts, é possível usar estes comandos:
# test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready" |
Se este teste falhar, provavelmente seu sistema não está com os módulos de IPv6 carregados.
Voce pode tentar carregar os módulos do IPv6 com o comando
# modprobe ipv6 |
Se a carga ocorreu sem problemas, verifique o status com estes comandos:
# lsmod |grep -w 'ipv6' && echo "IPv6 module successfully loaded" |
Depois disso, rode os comandos novamente do item 4.1.1 para ter certeza de que está tudo certo.
Note: a remoção do módulo (rmmod) não é suportada, e recomendo não utilizar, pois pode haver alguma instabilidade no sistema.
É possível automatizar a carga do módulo IPv6 conforme seja necessário. Para isto, basta adicionar a seguinte entrada no arquivo de configuração (/etc/modules.conf ou /etc/conf.modules):
alias net-pf-10 ipv6 # automatically load IPv6 module on demand |
Também é possível desabilitar a carga do módulo automaticamente usando a seguinte entrada:
alias net-pf-10 off # disable automatically load of IPv6 module on demand |
Nota: no kernel da série 2.6, o mecanismo carregador de módulos mudou, e o novo arquivo de configuração é o /etc/modprobe.conf.
Se os dois resultados acima foram negativos, e o seu kernel não tem suporte para o IPv6, então voce tem algumas coisas a fazer:
Atualizar a sua distribuição para uma que suporte o IPv6 (recomendado para os novatos)
Compilar um novo kernel (fácil, se voce souber quais opções são necessárias)
Recompilar os fontes do kernel dado pela sua distribuição (nem sempre tão fácil)
Compilar um kernel com as extensões USAGI
Se voce decidir compilar um kernel, voce precisa ter alguma experiencia nisso e também ler oLinux Kernel HOWTO.
Uma comparação entre o kernel vanilla e as extensões USAGI está disponível aquiIPv6+Linux-Status-Kernel.
Mais detalhes e dicas sobre a compilação de um kernel com suporte a IPv6 pode ser encontrado emIPv6-HOWTO-2#kernel.
Nota: voce deve usar, sempre que possível, um kernel da séria 2.6, uma vez que o suporte ao IPv6 na série 2.4 já não teve as últimas atualizações definidas nas RFC's, e a série 2.2 não tem mais o suporte atualizado ou mesmo mantido por alguém.
Para a família vanilla de kernel, recomendado somente para usuários avançados, os quais já estão familiarizados com o IPv6 e com compilação de kernel. Veja tambémUSAGI project / FAQ e Obtaining the best IPv6 support with Linux (Article) (Mirror).
Nem todos os dispositivos de rede tem suporte (ou terão) para transportar pacotes IPv6. Um status atualizado pode ser encontrado emIPv6+Linux-status-kernel.html#transport.
O maior problema disso é causado na implementação da camada de rede, já que o pacote IPv6 não é reconhecido pelo cabeçalho IP (6 ao invés de 4). Ele é reconhecido pelo protocolo da camada 2 (transporte). Da mesma maneira, qualquer protocolo da camada 2 que não usa numeração de protocolo não conseguirá encaminhar os pacotes IPv6.
Nota: mesmo assim o pacote ainda é transportado pelo link, mas no lado receptor, o encaminhamento não ocorrerá (voce pode verificar isso com a utilização do tcpdump).
Serial Line IP (SLIP, RFC 1055 / SLIP), deveria ser chamado de SLIPv4, nome do dispositivo: slX
Parallel Line IP (PLIP), que nem o SLIP, nome do dispositivo: plipX
ISDN com encapsulamento rawip, nome do dispositivo: isdnX
ISDN com encapsulamento syncppp, nome do dispositivo: ipppX (problema de projeto do ipppd, que deveria ter sido resolvido com um PPP mais generalista na série de kernel 2.5)