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 1 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 Checklist de Revisão
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.
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.
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 |
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.
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.
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 |
Erros Comuns e Checklist de Revisão
A transição para IPv6 traz novos desafios de configuração e diagnóstico. Aqui estão os erros mais frequentes e um Checklist de Revisã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 Checklist de Revisã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
- Dia 1: Fundamentos de Redes — OSI vs TCP/IP
- Dia 2: IPv4 — Classes, Subnetting, CIDR e VLSM
- Dia 4: Ethernet e Switching — VLANs, Trunking 802.1Q e STP
- Dia 5: Encaminhamento Estático, RIP e OSPF
- Dia 6: OSPF em Profundidade
- Dia 8: DNS em Profundidade
- Dia 25: IPv6 para PME (em breve)
- Dia 8 do Curso Linux: Redes Linux — ip, ss, nmcli e DNS — comandos práticos de rede em Linux
- Índice completo do curso de Redes em 30 dias