Sim, é possível fazer isso com o protocolo Teredo. Mas requer código modificado no cliente Teredo e no servidor Teredo.
Para explicar por que ainda pode ser considerado o mesmo protocolo depois que o cliente e o servidor foram modificados, primeiro tenho que explicar quais são os outros componentes envolvidos na comunicação.
Noções básicas sobre o Teredo
Os quatro nós de rede críticos em uma comunicação usando o protocolo Teredo são:
- cliente Teredo
- servidor Teredo (escolhido pelo cliente)
- Relé de Teredo (escolhido pelo nó IPv6 nativo)
- Nó IPv6 nativo
Por fim, é o cliente Teredo e o nó IPv6 nativo que deseja trocar os pacotes IPv6. Os servidores Teredo e as retransmissões Teredo existem para facilitar esse tráfego.
O servidor Teredo está envolvido apenas na configuração inicial da conexão. Depois que a conexão é estabelecida, o tráfego entre o cliente Teredo e o nó IPv6 nativo passa pelo relé sem que o servidor Teredo veja qualquer tráfego.
Como o cliente não tem influência sobre a escolha do Teredo Relay, qualquer solução que exija mudanças no relay não funcionará. Felizmente isso não é necessário. A conexão entre cliente e retransmissão onde a maior parte do tráfego é enviada continuará sendo o tráfego Teredo completamente padrão.
Como o cliente e a retransmissão ainda se comunicam usando Teredo padrão e porque o cliente ainda tem um endereço IPv6 no prefixo 2001::/32
, isso ainda se qualifica como Teredo.
Alterações necessárias
12 dos bits no endereço Teredo são escolhidos aleatoriamente pelo cliente Teredo. Uma modificação é necessária no lado do cliente para que não seja aleatória.
48 dos bits no endereço Teredo são o endereço IPv4 e o número da porta UDP do cliente Teredo, conforme visto pelo servidor Teredo.
Aqui é muito importante que esses 48 bits sejam o endereço de porta visto pelo servidor. Devido ao NAT, o cliente e o relé podem achar que a porta UDP tem um endereço completamente diferente. Mas o que o endereço IPv4 e o número de porta do cliente e o relé não têm influência no endereço IPv6 final.
Normalmente, o único NAT envolvido está localizado próximo ao cliente Teredo. Mas se você quiser influenciar o endereço IPv6 final, um NAT pode ser colocado na mesma máquina que o servidor Teredo. É até mesmo possível criar o NAT diretamente no servidor Teredo se você estiver inclinado.
Existe alguma implementação disso?
Provavelmente não.
Eu já implementei mais de um servidor Teredo fazendo isso. Mas o cliente só poderia escolher o endereço IPv4 e não o número da porta UDP. Eu precisava do número da porta UDP para distinguir clientes.
Um servidor Teredo com suporte para manter o endereço IPv4 e a porta UDP estática para um usuário específico precisaria de alguma maneira de reconhecer o usuário. Existem campos no protocolo, que poderiam ser usados para isso. Mas não conheço nenhuma implementação com suporte para identificar clientes Teredo em relação a servidores Teredo.
Além disso, Teredo sofre de um problema significativo de confiabilidade. Esse problema de confiabilidade está relacionado à parte do protocolo Teredo, que não é afetada por nenhuma modificação que descrevi aqui.
O problema com o Teredo
O problema é como o nó IPv6 nativo escolhe qual retransmissão Teredo usar. Idealmente, o administrador da rede na qual o nó IPv6 nativo está localizado configuraria uma retransmissão Teredo para essa rede (e a localizaria fora do NAT, caso a NAT estivesse sendo usada para IPv4).
Mas muitos administradores optam por não implantar uma retransmissão Teredo. Geralmente raciocinando que desde que Teredo é tão pouco confiável, eles não precisam apoiá-lo (nunca percebendo que esse raciocínio torna a falta de confiabilidade de Teredo uma profecia auto-realizável).
O que acontece é que o tráfego do nó IPv6 nativo será enviado através da rota padrão para o provedor upstream que, por sua vez, pode enviá-lo para seu provedor upstream e, eventualmente, o tráfego pode acabar em um retransmissor público de terceiros. AS que decidiu anunciar 2001::/32
.
Usar um retransmissor de terceiros significa um caminho de rede mais longo que, por sua vez, significa maior latência. Isso também significa que não há SLA e o Teredo Relay pode não ter capacidade suficiente para o tráfego ser enviado a ele.
A maioria dos casos em que um endereço IP estático é desejado, alguma confiabilidade também é desejada. E como você raramente tem controle sobre todos os nós remotos com os quais você se comunicará, você também não tem controle sobre quais relés Teredo serão usados.
Isso torna a Teredo com endereço IP estático um produto de nicho para os poucos que desejam instalar um cliente Teredo modificado para obter um endereço IP estático sem garantias de confiabilidade.