Dia 3: IPv6 — Endereçamento, Tipos e Transição Dual-Stack
No Dia 1 deste curso cobrimos os fundamentos das redes de computadores e no Dia 2 explorámos o modelo OSI e o encapsulamento. Hoje, no Dia 3, mergulhamos no IPv6 — o sucessor do IPv4 que resolve definitivamente o problema do esgotamento de endereços. Vamos explorar o formato de 128 bits, os tipos de endereço (unicast, multicast, anycast), os mecanismos de configuração automática (SLAAC e DHCPv6), os endereços link-local e especiais, e as estratégias de transição que permitem a coexistência entre IPv4 e IPv6.
ℹ O IPv6 usa 128 bits, oferecendo ~340 undecilhões de endereços — resolve definitivamente o esgotamento do IPv4.
Neste artigo:
- 1. Introdução ao IPv6
- 2. Formato e Notação IPv6
- 3. Tipos de Endereço (Unicast, Multicast, Anycast)
- 4. SLAAC e DHCPv6
- 5. Endereços Link-Local e Especiais
- 6. Estratégias de Transição (Dual-Stack, Túnel)
- 7. Erros Comuns e Lista de verificação
1. Introdução ao IPv6
O IPv4, com os seus 32 bits, oferece aproximadamente 4,3 mil milhões de endereços — um número que se revelou insuficiente face à explosão de dispositivos ligados à Internet. O IPv6, definido originalmente na RFC 4291 e posteriormente refinado na RFC 8200, expande o espaço de endereçamento para 128 bits, oferecendo 2128 endereços — aproximadamente 3,4 × 1038, ou 340 undecilhões.
Para perceber a escala: se o IPv4 oferecesse um grão de areia, o IPv6 ofereceria o volume total da Terra em grãos. Esta abundância elimina a necessidade de NAT (Network Address Translation) no nível doméstico, permitindo que cada dispositivo tenha um endereço público e globalmente encaminhável.
O IPv6 também introduz melhorias estruturais em relação ao IPv4:
- Cabeçalho simplificado: O cabeçalho base do IPv6 tem tamanho fixo de 40 bytes, com campos opcionais delegados para cabeçalhos de extensão, reduzindo o sobrecarga de processamento nos routers.
- Sem checksum no cabeçalho: Ao contrário do IPv4, o cabeçalho IPv6 não inclui um campo de checksum. As camadas inferior (Ethernet) e superior (TCP/UDP) já garantem a integridade, evitando recálculos custosos em cada salto.
- Sem fragmentação nos routers: A fragmentação é responsabilidade do emissor, que descobre o MTU do caminho (Path MTU Discovery). Os routers apenas descartam pacotes demasiado grandes e enviam ICMPv6 Packet Too Big.
- Endereçamento hierárquico: A estrutura de 128 bits permite um encaminhamento mais eficiente através de prefixos hierárquicos, reduzindo o tamanho das tabelas de encaminhamento globais.
- Configuração automática: O SLAAC (Stateless Address Autoconfiguration) permite que os hospedeiros se configurem sem um servidor central, simplificando a gestão de redes.
A RFC 8200 (Internet Standard 86) define o formato do datagrama IPv6, os cabeçalhos de extensão e as regras de processamento nos nós intermédios. É a especificação canónica do protocolo IPv6 na sua forma actual.
2. Formato e Notação IPv6
Um endereço IPv6 é composto por 128 bits, representados como oito grupos de quatro dígitos hexadecimais separados por dois pontos (:). Cada grupo representa 16 bits.
Exemplo de endereço IPv6 completo:
2001:0db8:0000:0000:0000:0000:0000:0001
Este formato é legível mas verboso. Para simplificar, a RFC 4291 define três regras de compressão:
Regra 1 — Omissão de zeros à esquerda: Em cada grupo de 16 bits, os zeros à esquerda podem ser omitidos. 0db8 torna-se db8, e 0000 torna-se 0.
2001:db8:0:0:0:0:0:1
Regra 2 — Compressão de grupos consecutivos de zeros: Uma sequência contínua de grupos 0000 pode ser substituída por :: (dois pontos duplos). Esta compressão só pode ser aplicada uma vez num endereço, para evitar ambiguidade.
2001:db8::1
Regra 3 — Endereços IPv6 com portas: Em URLs, o endereço IPv6 deve ser delimitado por parêntesis rectos para distinguir os dois pontos do endereço dos dois pontos do porto.
http://[2001:db8::1]:8080/
A estrutura de um endereço IPv6 global unicast divide-se em três partes:
| Componente | Tamanho | Descrição |
|---|---|---|
| Prefixo de encaminhamento global | 48 bits | Atribuído pelo ISP (ex: 2001:db8::/48) |
| Identificador de sub-rede | 16 bits | Gestão interna da organização |
| Identificador de interface | 64 bits | Identifica o dispositivo na sub-rede (EUI-64 ou aleatório) |
O identificador de interface (Interface ID) é tipicamente derivado do endereço MAC da placa de rede usando o formato EUI-64, onde o bit universal/local (bit 7 do primeiro byte) é invertido e os bytes FF-FE são inseridos no meio do endereço MAC de 48 bits para criar um identificador de 64 bits.
3. Tipos de Endereço (Unicast, Multicast, Anycast)
A RFC 4291 define três tipos de endereços IPv6. Ao contrário do IPv4, o IPv6 não possui o conceito de difusão — toda a comunicação um-para-muitos é feita via multicast.
3.1 Unicast (Um-para-Um)
Um endereço unicast identifica uma única interface. Um pacote enviado para um endereço unicast é entregue na interface específica identificada por esse endereço. Existem várias categorias de endereços unicast:
- Global Unicast (2000::/3): Endereços publicamente encaminháveis na Internet. O prefixo 2000::/3 cobre todos os endereços de 2000:: a 3fff:ffff:…. Actualmente, os RIR (Regional Internet Registries) atribuem blocos a partir de 2001::, 2002:: (6to4) e 2600::–2f00::.
- Unique Local Address — ULA (fc00::/7): Endereços para uso interno, equivalentes ao 10.0.0.0/8 do IPv4. O bloco fd00::/8 é para atribuição local aleatória; fc00::/8 está reservado para futura atribuição centralizada.
- Link-Local (fe80::/10): Endereços automáticos usados apenas na ligação local (ver secção 5).
- Loopback (::1/128): Equivalente a 127.0.0.1 no IPv4. O próprio endereço ::1 é o endereço de loopback canónico.
- Unspecified (::/128): O endereço de todos os zeros, usado como endereço de origem quando um hospedeiro ainda não tem endereço configurado.
3.2 Multicast (Um-para-Muitos)
Um endereço multicast identifica um grupo de interfaces (tipicamente em nós diferentes). Um pacote enviado para um endereço multicast é entregue a todas as interfaces identificadas por esse endereço. Os endereços multicast IPv6 começam com o prefixo ff00::/8.
O formato de um endereço multicast IPv6 é ffflags:scope:group_id:
| Campo | Bits | Valores |
|---|---|---|
| Prefixo | 8 | ff (sempre) |
| Flags | 4 | 0 = permanente, 1 = temporário |
| Scope (âmbito) | 4 | 1=interface, 2=link, 5=site, 8=organização, e=global |
| Group ID | 112 | Identifica o grupo multicast |
Exemplos de endereços multicast bem conhecidos:
ff02::1— Todos os nós no link (equivalente ao difusão do IPv4)ff02::2— Todos os routers no linkff02::1:ff00:0— Nó Solicited-Node (usado pelo Neighbor Discovery)
3.3 Anycast (Um-para-o-Mais-Próximo)
Um endereço anycast é atribuído a múltiplas interfaces (tipicamente em nós diferentes). Um pacote enviado para um endereço anycast é encaminhado para a interface mais próxima segundo a métrica de encaminhamento. Funcionalmente, o anycast usa o espaço de endereços unicast — não há prefixo separado para anycast. O emissor não consegue distinguir entre unicast e anycast; a diferença está na configuração do receptor.
Casos de uso típicos do anycast incluem:
- DNS raiz: Os 13 servidores raiz do DNS usam anycast para distribuir carga e reduzir latência globalmente.
- CDN (Content Delivery Network): Nós de borde CDN usam anycast para que os utilizadores sejam servidos pelo ponto de presença mais próximo.
- Ataque a DDoS: O anycast dispersa o tráfego de ataque por múltiplos centros de dados, diluindo o impacto.
| Comparação | Unicast | Multicast | Anycast |
|---|---|---|---|
| Destinatários | 1 interface | Grupo (todos) | 1 (o mais próximo) |
| Prefixo IPv6 | Vários (2000::/3, fc::/7…) | ff00::/8 | Espaço unicast |
| Equivalente IPv4 | Endereço normal | 224.0.0.0/4 | Existe mas raramente usado |
4. SLAAC e DHCPv6
No IPv6 existem dois mecanismos principais para configurar endereços automaticamente: SLAAC (Stateless Address Autoconfiguration) e DHCPv6 (Dynamic Host Configuration Protocol for IPv6). Ambos dependem do ICMPv6 Router Advertisement (RA) enviado pelos routers.
4.1 SLAAC — Stateless Address Autoconfiguration
O SLAAC permite que um hospedeiro crie o seu próprio endereço IPv6 global sem comunicar com um servidor central. O processo funciona assim:
- O hospedeiro cria um endereço link-local (fe80::) baseado no EUI-64.
- O hospedeiro envia um Router Solicitation (RS) para ff02::2 (todos os routers).
- O router responde com um Router Advertisement (RA) contendo o prefixo da rede (ex: 2001:db8:1::/64) e flags de configuração.
- O hospedeiro combina o prefixo (64 bits) com o seu identificador de interface (64 bits) para formar o endereço global.
- O hospedeiro executa Duplicate Address Detection (DAD) enviando Neighbor Solicitation para garantir que o endereço é único no link.
A principal vantagem do SLAAC é a sua simplicidade: não requer servidor DHCP, nem configuração manual. É particularmente útil em redes grandes e dinâmicas (redes Wi-Fi públicas, IoT, redes móveis). A desvantagem é que o servidor não regista qual o endereço atribuído a cada hospedeiro — não há inventário central.
4.2 DHCPv6 — Dynamic Host Configuration Protocol for IPv6
O DHCPv6 é o equivalente ao DHCP do IPv4, mas funciona apenas em IPv6. Um servidor DHCPv6 atribui endereços, prefixos e outras opções de configuração (DNS, NTP, SIP) aos hospedeiros. Existe em duas modalidades:
- Stateful DHCPv6: O servidor atribui endereços e mantém estado (qual endereço foi atribuído a qual hospedeiro). Similar ao DHCP IPv4.
- Stateless DHCPv6: O hospedeiro obtém o endereço via SLAAC, mas usa o DHCPv6 apenas para informações adicionais (DNS, domínio de pesquisa, NTP).
O tipo de configuração é controlado por flags no Router Advertisement (RA):
| Flag M | Flag O | Comportamento |
|---|---|---|
| 0 | 0 | SLAAC puro (sem DHCPv6) |
| 0 | 1 | SLAAC + Stateless DHCPv6 (outras opções) |
| 1 | — | Stateful DHCPv6 (atribui endereços) |
Flag M (Managed Address Configuration) indica que deve ser usado Stateful DHCPv6. Flag O (Other Configuration) indica que informações adicionais estão disponíveis via DHCPv6.
Em redes empresariais, a combinação mais comum é SLAAC + Stateless DHCPv6 (M=0, O=1): os hospedeiros geram os seus endereços via SLAAC mas obtêm DNS e outras opções via DHCPv6. Isto mantém o inventário de endereços descentralizado mas garante configuração consistente de DNS/NTP.
4.3 Privacy Extensions e EUI-64
O SLAAC clássico gera o Interface ID a partir do endereço MAC (EUI-64), o que significa que o endereço IPv6 contém o endereço de hardware — tornando possível rastrear o dispositivo entre redes diferentes (preocupação de privacidade). Para mitigar isto, foram introduzidas as Privacy Extensions (RFC 4941), que geram Interface IDs aleatórios e temporários, mudando periodicamente.
A maioria dos sistemas operativos modernos (Linux, Windows, macOS) activa as privacy extensions por defeito. Em Linux, o comportamento é controlado pelo parâmetro addr_gen_mode que pode ser eui64, random ou stable_secret.
5. Endereços Link-Local e Especiais
Os endereços link-local são uma categoria fundamental do IPv6. Pertencem ao prefixo fe80::/10 e são automaticamente configurados em todas as interfaces IPv6, sem qualquer configuração manual ou RA. São válidos apenas dentro de uma ligação física (link) — não são encaminhados por routers para outras redes.
Os endereços link-local são essenciais para o funcionamento do próprio protocolo IPv6:
- Neighbor Discovery Protocol (NDP): Substitui o ARP do IPv4. Usa ICMPv6 para descobrir vizinhos, resolver endereços MAC e detectar duplicados (DAD).
- Router Discovery: Os hospedeiros contactam os routers via endereço link-local destes (obtido do RA).
- Gateway por defeito: A rota por defeito aponta para o endereço link-local do router, não para o seu endereço global.
Como os endereços link-local são únicos apenas dentro de um link, é comum haver múltiplos endereços fe80:: em interfaces diferentes no mesmo hospedeiro. Por isso, ao fazer ping ou estabelecer ligações com endereços link-local, é obrigatório especificar a interface com uma sintaxe especial:
ping6 fe80::1%eth0
O sufixo %eth0 (zone index) indica ao sistema qual interface usar para alcançar esse endereço link-local. Sem esta indicação, o sistema não sabe por que interface enviar o pacote.
Para além do link-local, existem outros endereços IPv6 especiais:
| Endereço | Prefixo | Descrição |
|---|---|---|
| :: | ::/128 | Unspecified (endereço de origem antes de obter IP) |
| ::1 | ::1/128 | Loopback (equivalente a 127.0.0.1) |
| fe80:: | fe80::/10 | Link-local (não encaminhado) |
| fc00:: | fc00::/7 | Unique Local Address (interno) |
| 2001:db8:: | 2001:db8::/32 | Documentação (RFC 3849 — não encaminhável) |
| ::ffff:0:0 | ::ffff:0:0/96 | IPv4-mapped (IPv6 com endereço IPv4 embutido) |
| 64:ff9b:: | 64:ff9b::/96 | NAT64 well-known prefix |
O bloco 2001:db8::/32, usado em todos os exemplos deste artigo e em toda a documentação técnica, foi reservado pela RFC 3849 precisamente para que pudesse ser usado em documentação sem colidir com endereços reais. Nunca deve ser usado em produção.
6. Estratégias de Transição (Dual-Stack, Túnel)
A transição de IPv4 para IPv6 não é um evento pontual mas sim um processo gradual. Como a Internet não pode ser desligada para mudar de protocolo, foram desenvolvidas várias estratégias de coexistência. A RFC 8200 e outras RFCs definem três abordagens principais.
6.1 Dual-Stack
No modelo dual-stack, os hospedeiros e routers executam IPv4 e IPv6 simultaneamente. Cada interface tem pelo menos um endereço IPv4 e um endereço IPv6. As aplicações resolvem nomes via DNS e optam por IPv4 ou IPv6 consoante os registos disponíveis (A ou AAAA).
O dual-stack é a estratégia mais simples e robusta, mas tem duas limitações:
- Não resolve o esgotamento do IPv4: Continua a ser necessário um endereço IPv4 público para cada hospedeiro.
- Duplica a complexidade de gestão: firewalls, encaminhamento, DNS e monitorização têm de cobrir ambos os protocolos.
Apesar destas limitações, o dual-stack é o padrão de facto na maioria dos centros de dados e ISPs, pois permite uma migração transparente sem interromper serviços existentes.
6.2 Túnel
O túnel encapsula pacotes IPv6 dentro de pacotes IPv4 (ou vice-versa), permitindo que tráfego IPv6 atravessa redes exclusivamente IPv4 (ou o inverso). Existem vários mecanismos de túnel:
- 6to4 (RFC 3056): Usa o prefixo 2002::/16. O endereço IPv4 do hospedeiro é embutido no endereço IPv6 (2002:IPv4::/48). O encapsulamento é automatic — não requer túnel manual. Cada pacote IPv6 é encapsulado em IPv4 protocol 41.
- 6rd (RFC 5969): IPv6 Rapid Deployment — variante do 6to4 usada por ISPs. O prefixo e o endereço IPv4 são configuráveis, permitindo ao ISP usar o seu próprio prefixo IPv6 em vez de 2002::/16.
- GRE tunnel: Generic Routing Encapsulation. Túnel ponto-a-ponto configurado manualmente. Transporta IPv6 (ou qualquer protocolo) dentro de IPv4. Flexível mas requer configuração manual em ambas as pontas.
- Teredo (RFC 4380): Túnel IPv6 sobre UDP, desenhado para hospedeiros atrás de NAT IPv4 que não suportam protocol 41. Usa servidores Teredo e relays. É o mecanismo de última geração quando nenhum outro está disponível.
6.3 Tradução (NAT64/DNS64)
A tradução de protocolos permite que um hospedeiro IPv6-only comunique com um servidor IPv4-only. O mecanismo principal é o NAT64, que traduz pacotes IPv6 para IPv4 e vice-versa, combinado com o DNS64, que sintetiza registos AAAA a partir de registos A IPv4.
O fluxo é o seguinte: um hospedeiro IPv6-only consulta o DNS por um nome. O DNS64 não encontra registo AAAA, mas encontra um registo A (IPv4). Cria então um endereço IPv6 sintético usando o prefixo NAT64 (64:ff9b::/96 por defeito) e o endereço IPv4 embutido. O hospedeiro envia o pacote para esse endereço IPv6. O NAT64 intercepta, traduz para IPv4 e encaminha para o servidor IPv4 original.
Esta estratégia é usada em redes móveis (4G/5G) onde os operadores adoptam IPv6-only para conservar endereços IPv4, mas precisam de garantir acesso a serviços legado IPv4-only.
| Estratégia | Vantagens | Desvantagens |
|---|---|---|
| Dual-Stack | Simples, nativo, sem sobrecarga | Requer endereços IPv4, dobra gestão |
| Túnel | Funciona em redes IPv4-only | Overhead, latência, complexidade |
| NAT64/DNS64 | Permite IPv6-only a falar com IPv4 | Tradução pode quebrar aplicações |
7. Erros Comuns e Lista de verificação
A transição para IPv6 traz novos desafios de configuração e diagnóstico. Aqui estão os erros mais frequentes e um lista de verificação de verificação.
⚠ Desactivar IPv6 sem entender as dependências pode quebrar serviços como SLAAC, DNS IPv6 e aplicações modernas que preferem IPv6.
7.1 Erros Comuns
- Esquecer o zone index (%interface) em ligações link-local:
ping6 fe80::1falha sem%eth0. O erro é “Network is unreachable” ou “Invalid argument”. - Confundir SLAAC com DHCPv6: SLAAC não regista quem tem qual endereço. Em auditorias de segurança, é necessário correlacionar com a tabela NDP do router.
- Desactivar ICMPv6 (tipo bloquear todo ICMP): No IPv4 era comum bloquear ICMP. No IPv6, ICMPv6 é essencial — NDP, RA, DAD e Path MTU Discovery dependem dele. Bloquear ICMPv6 quebra a conectividade IPv6.
- Usar 2001:db8:: em produção: Este prefixo é apenas para documentação. Usá-lo em produção resulta em tráfego que não é encaminhado na Internet.
- Esquecer firewalls IPv6: Ao activar dual-stack, muitos administradores configuram o firewall IPv4 mas esquecem o IPv6. O hospedeiro fica exposto via IPv6.
- Assumir que NAT é necessário: No IPv6, cada dispositivo pode ter um endereço global. Usar NAT66 (Network Prefix Translation) é desaconselhado — quebra extremo-a-extremo e complica o diagnóstico.
- Não configurar reverse DNS (PTR): Muitos serviços rejeitam ligações de hospedeiros sem PTR IPv6. Esquecer o reverse DNS causa atrasos e falhas de autenticação.
7.2 Comandos de Verificação
Use os seguintes comandos para verificar e diagnosticar a configuração IPv6 em sistemas Linux:
# Verificar endereço IPv6
ip -6 addr show
# Verificar tabelas de encaminhamento IPv6
ip -6 route show
# Testar conectividade IPv6
ping6 -c 4 ipv6.google.com
# Verificar vizinhos IPv6 (equivalente a ARP)
ip -6 neigh show
# Adicionar rota IPv6
ip -6 route add 2001:db8::/32 via fe80::1 dev eth0
7.3 Lista de verificação de Implementação
| Item | Recomendação |
|---|---|
| Prefixo de encaminhamento | Solicitar /48 ao ISP para flexibilidade de sub-redes |
| Modo de configuração | SLAAC + Stateless DHCPv6 (M=0, O=1) para redes gerais |
| Privacy Extensions | Activar em estações de trabalho (random ou stable_secret) |
| Firewall IPv6 | Configurar ip6tables/nftables em paralelo com IPv4 |
| ICMPv6 | Permitir NDP (types 133-137) — não bloquear |
| DNS | Configurar AAAA + reverse DNS (PTR) para cada hospedeiro |
| Monitorização | Incluir IPv6 no Nagios/Zabbix/Prometheus (não só IPv4) |
| Estratégia de transição | Dual-stack como fase intermédia; plano para IPv6-only futuro |
O IPv6 não é apenas “um IPv4 maior” — é um protocolo com filosofia diferente: sem difusão, sem NAT obrigatório, com configuração automática nativa e com um papel central do ICMPv6. Compreender estas diferenças é essencial para implementar redes modernas e preparar a infraestrutura para o futuro da Internet.
Fontes: RFC 4291 — IP Version 6 Addressing Architecture, RFC 8200 — Internet Protocol, Version 6 (IPv6) Specification.
Artigos relacionados: