31.9. IPv6
Anterior | Capítulo 31. Rede Avançada | Próxima

## 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:

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

### 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 `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”:

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.

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

Anterior | Acima | Próxima
31.8. Operação Diskless com PXE | Principal | 31.10. Protocolo Comum de Redundância de Endereços (CARP)

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