4.1. Kernel com IPv6

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.

4.1.1. Verificação do suporte a IPv6 no kernel utilizado

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.

4.1.2. Tentando carregar os módulos para o IPv6

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.

4.1.2.1. Carga automática do módulo

É 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.

4.1.3. Compilando o kernel 2.6 para suportar o IPv6

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:

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.

4.1.3.1. Compilando um kernel vanilla

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.

4.1.3.2. Compilando um kernel com as extensões USAGI

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).

4.1.4. Dispositivos de rede com suporte a IPv6

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).

4.1.4.1. Estes links nunca suportarão IPv6

  • 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

4.1.4.2. Este link atualmente não suporta IPv6

  • 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)