O que é a travessia de NAT?
A maioria dos dispositivos não tem o seu próprio endereço público de internet; ficam atrás de Network Address Translation (NAT) num router, que partilha um endereço público entre muitos dispositivos internos. Isso serve para contactar servidores, mas significa que dois desses dispositivos não se conseguem simplesmente contactar diretamente. A travessia de NAT é o conjunto de técnicas que lhes permitem estabelecer uma ligação direta apesar disso.
A travessia de NAT é o conjunto de técnicas que permitem a dois dispositivos atrás de routers (NAT) formar uma ligação direta, mesmo sem nenhum deles ter um endereço público que o outro possa contactar.
Como funciona a travessia de NAT
- 01
Um serviço de coordenação (sinalização) ajuda os dois pares a ficarem a conhecer o endereço e a porta externamente visíveis um do outro, ou seja, como o mundo os vê através dos respetivos NAT.
- 02
O STUN é uma forma comum de um par descobrir o seu próprio endereço e porta voltados para o exterior, tal como vistos de fora do seu NAT.
- 03
Com essa informação, os pares tentam o «hole punching»: ambos enviam pacotes um para o outro ao mesmo tempo, para que cada NAT abra um caminho para o tráfego do outro.
- 04
Quando não se consegue abrir um caminho direto (alguns NAT estritos bloqueiam-no), um retransmissor (muitas vezes chamado TURN) pode reencaminhar o tráfego como recurso, à custa de um salto adicional.
UDP hole punching, passo a passo
Num fluxo típico, cada par contacta um servidor de sinalização e, via STUN, fica a conhecer o endereço público e a porta que o seu NAT está a apresentar. O servidor partilha o candidato externo de cada par com o outro. Ambos os pares enviam então pacotes para o endereço externo um do outro mais ou menos em simultâneo. O primeiro pacote de saída de cada lado faz com que o seu NAT crie um mapeamento temporário à espera de resposta; quando o pacote do outro lado chega, corresponde a esse mapeamento e passa. Assim que alguns pacotes cruzam em cada direção, abre-se um caminho direto e bidirecional e o túnel cifrado corre sobre ele.
Quando é preciso um retransmissor
O hole punching tem sucesso na maioria dos tipos de NAT, mas alguns (os chamados NAT simétricos, ou firewalls corporativas estritas) atribuem portas imprevisíveis ou bloqueiam a tentativa, pelo que não se consegue formar um caminho direto. O recurso é então um retransmissor: um servidor que ambos os pares conseguem alcançar e que reencaminha o seu tráfego. Em sistemas bem concebidos, o retransmissor apenas reencaminha pacotes já cifrados que não consegue ler; acrescenta latência e um salto, mas não vê os dados. Uma boa mesh só recorre a retransmissores em último caso, quando um túnel direto é impossível.
Como isto se relaciona com o Vexaro Mesh (em desenvolvimento)
O Vexaro Mesh, atualmente em desenvolvimento, foi concebido com travessia de NAT integrada: os pares atrás de NAT ligam-se diretamente sempre que a rede o permita, e só através de um retransmissor quando não o permite. Os gateways foram concebidos para levantarem túneis cifrados sobre qualquer ligação, sem encaminhamento de portas nem endereços públicos, o que mantém curtos os caminhos local a local.
Ver as funcionalidades previstas