IPv4 em notação IPv6
As quatro formas de um endereço IPv4 aparecer dentro do IPv6 — e por que nenhuma delas é “o seu endereço IPv6”.
Experimente 8.8.8.8, 192.168.1.1 ou 127.0.0.1.
Não existe um equivalente IPv6 de um endereço IPv4. Os endereços IPv6 são atribuídos pelo seu fornecedor, não derivados do que já tem. O que se segue são quatro notações diferentes que embutem um endereço IPv4, cada uma com o seu propósito — nenhuma delas é um endereço que possa pôr num registo DNS à espera de que funcione.
IPv4 mapeado
Atual::ffff:203.0.113.5
É assim que um socket de pilha dupla representa um par IPv4 perante uma aplicação só de IPv6. Vai encontrá-los nos registos de servidores em máquinas de pilha dupla — uma entrada ::ffff:203.0.113.5 é uma ligação IPv4 vulgar, não uma ligação IPv6. Também se escreve ::ffff:cb00:7105.
Compatível com IPv4
Obsoleto::203.0.113.5
Um mecanismo de transição antigo, tornado obsoleto pelo RFC 4291 em 2006 e já não implementado. Está aqui porque ainda aparece em documentação e ficheiros de configuração antigos, onde deve ser tratado como um erro e não copiado.
Prefixo 6to4
Obsoleto2002:cb00:7105::/48
Túnel automático que dava a qualquer anfitrião com endereço IPv4 público um /48 de espaço IPv6. Tornado obsoleto pelo RFC 7526 — dependia de relés públicos cuja qualidade ninguém podia garantir, e produzia ligações que falhavam de formas que os utilizadores não conseguiam diagnosticar.
NAT64 / prefixo bem conhecido
Só dentro de uma rede NAT6464:ff9b::203.0.113.5
É como um cliente só de IPv6 chega a um servidor só de IPv4 através de um gateway NAT64. Real e atual, mas só faz sentido dentro de uma rede que tenha um — na internet aberta, o endereço não significa nada.
O endereço em si
- Decimal com pontos
- 203.0.113.5
- Hexadecimal
- 0xCB007105
- Inteiro de 32 bits
- 3.405.803.781
- Binário
- 11001011.00000000.01110001.00000101
● Documentação — TEST-NET (RFC 5737) — reservado para exemplos. Pode ser publicado sem risco, nunca é encaminhado.
A premissa costuma estar errada, e não faz mal
A maioria de quem procura um conversor de IPv4 para IPv6 procura uma coisa que não existe: uma função que pegue no endereço que tem e devolva o endereço IPv6 que deveria usar. Não há tal função. Os endereços IPv6 são atribuídos — o seu operador ou alojador dá-lhe um bloco a partir de um que lhe foi dado a ele — e não calculados a partir de um endereço IPv4 que já possua.
O que existe são várias notações que colocam um endereço IPv4 dentro da sintaxe do IPv6, cada uma inventada para uma tarefa específica. Saber qual é qual é genuinamente útil, porque vai encontrá-las em registos e ficheiros de configuração. Tratar qualquer uma delas como «o seu endereço IPv6» não é.
Aquela que vai mesmo ver
::ffff:203.0.113.5 — a forma mapeada de IPv4 — corresponde a quase todos os avistamentos no mundo real. Aparece quando um programa escuta num socket IPv6 e um cliente IPv4 se liga: o sistema operativo apresenta o par nesta forma para que a aplicação só tenha de lidar com um tipo de endereço.
A consequência prática morde em dois sítios. Uma análise de registos que espere quatro números com pontos não vai corresponder a estas linhas. E uma lista de permissões que compare texto não conseguirá casar ::ffff:203.0.113.5 com 203.0.113.5 — uma regra que parece correcta, passa na revisão e nunca dispara, em silêncio. Normalize antes de comparar.
O que são as outras
A forma compatível com IPv4 (::203.0.113.5) foi uma ideia inicial de transição, descontinuada pelo RFC 4291 em 2006 e implementada por nada de actual. Se a encontrar num ficheiro de configuração, é um defeito e não uma escolha.
O 6to4 (2002::/16) dava a quem tivesse um endereço IPv4 público um /48 de IPv6 automático, em túnel por retransmissores públicos. Descontinuado pelo RFC 7526 em 2015 — os retransmissores não tinham operador responsável, e as falhas eram do pior tipo: intermitentes, lentas e impossíveis de diagnosticar por um utilizador.
O NAT64 (64:ff9b::/96) é actual e está em uso diário. As operadoras móveis, em particular, mantêm redes só de IPv6 e traduzem na borda, de modo que um telemóvel só com IPv6 chega assim a serviços só com IPv4. É real, mas é uma propriedade de uma rede em que está, e não um endereço que possa distribuir.
Porque é que os dois protocolos não podem simplesmente falar
Pergunta razoável, ao fim de trinta anos de transição. A resposta é que o IPv6 não é o IPv4 com endereços maiores — é um protocolo diferente com um cabeçalho diferente, e um encaminhador que lida com um não tem forma de reencaminhar um pacote do outro. Não há sítio no cabeçalho do IPv4 para pôr um endereço de 128 bits.
Por isso, todos os caminhos entre eles precisam de algo pelo meio: um anfitrião de pilha dupla a correr os dois, um tradutor como o NAT64, ou um proxy que termina uma ligação e origina outra. É essa a razão de a transição ser lenta, e por que a resposta prática a «como é que suporto IPv6?» é quase sempre «corra pilha dupla» e não «converta qualquer coisa».
Relacionado
Para ver por que protocolo está mesmo a chegar à internet, o verificador de IP indica a família de endereços que a sua ligação usou. Para dividir em sub-redes o endereço que tem, a calculadora de sub-redes cobre o lado do IPv4.
Perguntas a que esta página existe para responder
Qual é o equivalente em IPv6 do meu endereço IPv4?
Não existe nenhum, e esta é a coisa mais importante desta página. Os endereços IPv6 são atribuídos por quem lhe fornece a ligação — vêm do seu operador ou do seu alojador, a partir de um bloco que lhes foi consignado. Não é possível deduzir um a partir de um IPv4 que já tenha, tal como não deduziria um número de telefone a partir de uma morada. O que estas notações fazem é embutir um endereço IPv4 na sintaxe do IPv6 para fins técnicos específicos, o que é coisa diferente.
Porque é que o registo do meu servidor mostra ::ffff:203.0.113.5?
Porque o socket está à escuta em IPv6 e a ligação chegou por IPv4. Um socket de pilha dupla apresenta à aplicação os pares IPv4 nesse formato mapeado, para que o código só tenha de lidar com um tipo de endereço. É uma ligação IPv4 vulgar. Se está a analisar registos ou a comparar endereços com uma lista de permissões, retire primeiro o prefixo ::ffff: — tratá-lo como um endereço distinto é uma causa frequente de regras que deixam de corresponder sem avisar.
Devo usar um endereço 6to4?
Não. O 6to4 foi um mecanismo de túnel automático que dava a qualquer anfitrião com endereço IPv4 público um /48 de espaço IPv6 através do prefixo 2002::/16. Foi formalmente descontinuado pelo RFC 7526 em 2015 porque dependia de encaminhadores de retransmissão públicos por que ninguém respondia, produzindo ligações lentas ou avariadas de formas que o utilizador não conseguia diagnosticar. Se precisa de IPv6, obtenha-o junto do seu fornecedor ou use um corretor de túneis com um operador responsável.
Para que serve o 64:ff9b::?
É o prefixo bem conhecido do NAT64, definido no RFC 6052. Um cliente só com IPv6 que precise de chegar a um servidor só com IPv4 envia para 64:ff9b:: com o endereço IPv4 embutido nos últimos trinta e dois bits; um gateway NAT64 no caminho faz a tradução. É actual e está amplamente implantado — sobretudo por operadoras móveis com redes só de IPv6. Mas só significa alguma coisa dentro de uma rede que opere um gateway desses; o endereço não é encaminhável na internet aberta.
Os anfitriões IPv4 e IPv6 conseguem falar directamente entre si?
Não. São protocolos separados, com formatos de pacote diferentes, e não há interoperação directa — é precisamente por isso que a transição já leva trinta anos. A comunicação entre eles exige sempre algo pelo meio: um anfitrião de pilha dupla que fale os dois, um tradutor como o NAT64, ou um proxy que termina um e origina o outro. É também por isso que «basta converter o endereço» não resolve coisa nenhuma.
Última revisão . Encontrou algo desactualizado? Diga-nos.
