31.9. IPv6

Originalmente escrito por Aaron Kaplan .
Reestruturado e adicionado por Tom Rhodes .
estendido por Brad Davis .

O IPv6 é a nova versão do conhecido protocolo IP, também conhecido como IPv4. O IPv6 oferece várias vantagens sobre o IPv4, além de muitos recursos novos:

O FreeBSD inclui a implementação de referência do http://www.kame.net/ IPv6 e vem com tudo necessário usar o IPv6. Esta seção se concentra em configurar e executar o IPv6.

31.9.1. Informações sobre endereços de IPv6

Existem três tipos diferentes de endereços de IPv6:

Unicast

Um pacote enviado para um endereço unicast chega à interface pertencente ao endereço.

Anycast

Esses endereços são sintaticamente indistinguíveis dos endereços unicast, mas eles tratam de um grupo de interfaces. O pacote destinado a um endereço anycast chegará à interface do roteador mais próxima. Endereços anycast são usados ​​apenas por roteadores.

Multicast

Esses endereços identificam um grupo de interfaces. Um pacote destinado a um endereço multicast chegará a todas as interfaces pertencentes ao grupo multicast. O endereço de broadcast IPv4 , geralmente xxx.xxx.xxx.255, é expresso por endereços multicast em IPv6.

Ao ler um endereço IPv6, a forma canônica é representada como x:x:x:x:x:x:x:x, onde cada x representa um valor hexadecimal de 16 bits. Um exemplo é FEBC:A574:382B:23C1:AA49:4592:4EFE:9982.

Muitas vezes, um endereço terá substrings longas apenas com zeros. Um :: (dois-pontos duplos) pode ser usado para substituir uma subcadeia por endereço. Além disso, até três valores 0s iniciais por valor hexadecimal podem ser omitidos. Por exemplo, fe80::1 corresponde à forma canônica fe80:0000:0000:0000:0000:0000:0000:0001.

Uma terceira forma é escrever os últimos 32 bits usando a conhecida notação IPv4. Por exemplo, 2002::10.0.0.1 corresponde à representação canônica hexadecimal 2002:0000:0000:0000:0000:0000:0a00:0001, que por sua vez é equivalente a 2002::a00:1.

Para visualizar o endereço IPv6 do sistema FreeBSD, use ifconfig(8):

# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
         inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
         inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
         ether 00:00:21:03:08:e1
         media: Ethernet autoselect (100baseTX )
         status: active

Neste exemplo, a interface rl0 está usando fe80::200:21ff:fe03:8e1%rl0, um endereço local de link auto-configurado que foi gerado automaticamente a partir do endereço MAC.

Alguns endereços do IPv6 são reservados. Um resumo destes endereços reservados é visto em Tabela 31.3, “Endereços IPv6 reservados”:

Tabela 31.3. Endereços IPv6 reservados
endereço IPv6Prefixlength (Bits)DescriçãoNotas
::128 bitsnão especificadoEquivalente a 0.0.0.0 em IPv4.
::1128 bitsendereço de loopbackEquivalente ao 127.0.0.1 no IPv4.
::00:xx:xx:xx:xx96 bitsIPv4 EmbarcadoOs 32 bits inferiores são o endereço IPv4 compatível.
::ff:xx:xx:xx:xx96 bitsO endereço IPv4 mapeado do endereço IPv6Os 32 bits mais baixos são o endereço IPv4 para hosts que não suportam o IPv6.
fe80::/1010 bitslink-localEquivalente a 169.254.0.0/16 em IPv4.
fc00::/77 bitsunique-localEndereços locais exclusivos são destinados à comunicação local e só podem ser roteados dentro de um conjunto de sites cooperantes.
ff00::8 bitsmulticast 
2000::-3fff:: 3 bitsunicast globalTodos os endereços unicast globais são atribuídos a partir desse pool. Os primeiros 3 bits são 001.

Para maiores informações sobre a estrutura dos endereços do IPv6, consulte a RFC3513.

31.9.2. Configurando o IPv6

Para configurar um sistema FreeBSD como um cliente IPv6, adicione estas duas linhas ao rc.conf:

ifconfig_rl0_ipv6="inet6 accept_rtadv"
rtsold_enable="YES"

A primeira linha permite que a interface especificada receba mensagens de solicitação do roteador. A segunda linha ativa o daemon de solicitação do roteador, rtsol(8).

Se a interface precisar de um endereço IPv6 atribuído estaticamente, adicione uma entrada para especificar o endereço estático e o comprimento do prefixo associado:

ifconfig_rl0_ipv6="inet6 2001:db8:4672:6565:2026:5043:2d42:5344 prefixlen 64"

Para atribuir um roteador padrão, especifique seu endereço:

ipv6_defaultrouter="2001:db8:4672:6565::1"

31.9.3. Conectando-se a um provedor

Para se conectar a outras redes IPv6, é necessário ter um provedor ou um túnel que suporte IPv6:

  • Entre em contato com um provedor de serviços de Internet para saber se eles oferecem IPv6.

  • O Hurricane Electric oferece túneis com endpoints em todo o mundo.

Nota:

Instale o pacote ou port net/freenet6 para uma conexão dial-up.

Esta seção demonstra como obter as direções de um provedor de túneis e convertê-las em configurações do /etc/rc.conf que persistirão durante as reinicializações.

A primeira entrada /etc/rc.conf cria a interface de encapsulamento genérica gif0:

cloned_interfaces="gif0"

Em seguida, configure essa interface com os endereços IPv4 dos pontos de extremidade locais e remotos. Substitua MY_IPv4_ADDR e REMOTE_IPv4_ADDR pelos endereços atuais de IPv4:

create_args_gif0="tunnel MY_IPv4_ADDR REMOTE_IPv4_ADDR"

Para aplicar o endereço IPv6 que foi atribuído para uso como o ponto final do túnel IPv6, adicione esta linha, substituindo MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR pelo endereço atribuído:

ifconfig_gif0_ipv6="inet6 MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR"

Em seguida, defina a rota padrão para o outro lado do túnel IPv6. Substitua MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR pelo endereço do gateway padrão atribuído pelo provedor:

ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR"

Se o sistema FreeBSD irá rotear pacotes IPv6 entre o resto da rede e o mundo, habilite o gateway usando esta linha:

ipv6_gateway_enable="YES"

31.9.4. Anúncio do roteador e configuração automática do host

Esta seção demonstra como configurar o rtadvd(8) para anunciar a rota padrão de IPv6.

Para ativar rtadvd(8), inclua o seguinte no /etc/rc.conf:

rtadvd_enable="YES"

É importante especificar a interface na qual fazer a solicitação do roteador IPv6. Por exemplo, para informar o rtadvd(8) para usar rl0:

rtadvd_interfaces="rl0"

Em seguida, crie o arquivo de configuração, /etc/rtadvd.conf como visto neste exemplo:

rl0:\
	:addrs#1:addr="2001:db8:1f11:246::":prefixlen#64:tc=ether:

Substitua rl0 com a interface a ser usada e 2001:db8:1f11:246:: com o prefixo da alocação.

Para uma sub-rede /64 dedicada, nada mais precisa ser alterado. Caso contrário, altere o prefixlen# para o valor correto.

31.9.5. IPv6 e o mapeamento de endereços IPv6

Quando o IPv6 está habilitado em um servidor, pode ser necessário ativar a comunicação de endereços IPv4 mapeados para IPv6. Esta opção de compatibilidade permite que endereços IPv4 sejam representados como endereços de IPv6. Permitir que aplicativos IPv6 se comuniquem com IPv4 e vice-versa pode ser um problema de segurança.

Essa opção pode não ser necessária na maioria dos casos e está disponível apenas para compatibilidade. Esta opção permitirá que os aplicativos que suportam apenas o IPv6 funcionem com IPv4 em um ambiente de pilha dupla. Isso é mais útil para aplicativos de terceiros que podem não suportar um ambiente somente de IPv6. Para habilitar esse recurso, adicione o seguinte ao /etc/rc.conf:

ipv6_ipv4mapping="YES"

Revisar as informações da RFC 3493, seção 3.6 e 3.7, bem como da RFC 4038 seção 4.2, pode ser útil para alguns administradores.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.