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:
Seu espaço de endereços de 128 bits permite 340.282.366.920.938.463.463.374.607.431.768.211.456 endereços. Isso corrige a falta de endereços do IPv4 e o eventual esgotamento do endereço de IPv4.
Os roteadores armazenam apenas endereços de agregação de rede em suas tabelas de roteamento, reduzindo assim o espaço médio de uma tabela de roteamento para 8192 entradas. Isso resolve os problemas de escalabilidade associados ao IPv4, que exigia que cada bloco alocado de endereços IPv4 fossem trocados entre roteadores da Internet, fazendo com que suas tabelas de roteamento ficassem muito grandes para permitir um roteamento eficiente .
Autoconfiguração de endereço (RFC2462).
Endereços multicast obrigatórios.
IPsec Embutido (Segurança IP).
Estrutura simplificada do cabeçalho.
Suporte para mobile IP.
Mecanismos de transição IPv6-to-IPv4.
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.
Existem três tipos diferentes de endereços de IPv6:
Um pacote enviado para um endereço unicast chega à interface pertencente ao endereço.
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.
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 0
s 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”:
endereço IPv6 | Prefixlength (Bits) | Descrição | Notas |
---|---|---|---|
:: | 128 bits | não especificado | Equivalente a 0.0.0.0 em IPv4. |
::1 | 128 bits | endereço de loopback | Equivalente ao 127.0.0.1 no IPv4. |
::00:xx:xx:xx:xx | 96 bits | IPv4 Embarcado | Os 32 bits inferiores são o endereço IPv4 compatível. |
::ff:xx:xx:xx:xx | 96 bits | O endereço IPv4 mapeado do endereço IPv6 | Os 32 bits mais baixos são o endereço IPv4 para hosts que não suportam o IPv6. |
fe80::/10 | 10 bits | link-local | Equivalente a 169.254.0.0/16 em IPv4. |
fc00::/7 | 7 bits | unique-local | Endereços locais exclusivos são destinados à comunicação local e só podem ser roteados dentro de um conjunto de sites cooperantes. |
ff00:: | 8 bits | multicast | |
2000::-3fff:: | 3 bits | unicast global | Todos 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.
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="inet62001:db8:4672:6565:2026:5043:2d42:5344
prefixlen64
"
Para atribuir um roteador padrão, especifique seu endereço:
ipv6_defaultrouter="2001:db8:4672:6565::1
"
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.
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"
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.
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>.