Como funciona o NAT Traversal (2020)
(tailscale.com)Como o NAT Traversal funciona
-
Problema principal: trata do problema de estabelecer conexão peer-to-peer entre duas máquinas. No caso do Tailscale, o objetivo é configurar um túnel WireGuard®. Esta tecnologia é usada em vários contextos, como WebRTC, chamadas VoIP e videogames.
-
Protocolo baseado em UDP: para o NAT Traversal é necessário um protocolo baseado em UDP. O TCP também pode ser usado, mas isso aumenta a complexidade e pode exigir customização do kernel.
-
Controle direto do socket de rede: é necessário controle direto sobre os sockets que enviam e recebem pacotes de rede. Não é possível atravessar o NAT usando bibliotecas de rede existentes.
-
Uso de proxy local: quando o acesso direto ao socket é difícil, é possível usar um proxy local para realizar o NAT Traversal e encaminhar pacotes.
Entendendo firewalls
-
Firewall com estado: a maioria dos dispositivos NAT inclui firewall com estado, que armazena pacotes já vistos e usa esse histórico no tratamento de novos pacotes.
-
Regra de tráfego UDP: o firewall permite pacotes UDP de entrada que correspondem aos pacotes de saída vistos anteriormente.
-
Como lidar com firewalls: se todos os firewalls estiverem orientados na mesma direção, é como se a comunicação cliente/servidor fosse reinventada. No entanto, surgem problemas quando dois clientes tentam se comunicar diretamente.
Burlar firewalls
-
Solução sem reconfigurar firewall: é preciso uma solução sem reconfigurar os firewalls. Se um pacote UDP tiver origem e destino corretos, ele é aceito por parecer uma resposta.
-
Compartilhamento de informação: os pares precisam conhecer previamente as informações
ip:portdo outro. Para isso, usa-se um servidor de coordenação para sincronizar as informaçõesip:port.
A essência do NAT
-
Dispositivo NAT: o NAT modifica pacotes, e especialmente o Source NAT (SNAT) gera problemas. Isso é usado para conectar vários dispositivos à internet.
-
Descoberta de NAT: como o dispositivo NAT modifica pacotes, os dois pares não conseguem conhecer o
ip:portdo outro. O protocolo STUN é usado para dar suporte à descoberta de NAT.
STUN e descoberta de NAT
-
Protocolo STUN: quando um cliente por trás de NAT se comunica com um servidor na internet, o servidor consegue ver o
ip:portpúblico criado pelo dispositivo NAT. O servidor STUN repassa essa informação ao cliente. -
Limitações: STUN funciona apenas em alguns cenários, e sua chance de falha é maior em gateways NAT que se promovem como dispositivos de segurança.
Soluções adicionais
-
Uso de relay: quando a conexão direta falha, usa-se um relay para encaminhar pacotes, permitindo que as duas pontas se comuniquem sem interferência.
-
Protocolo DERP: o Tailscale usa o DERP (Detoured Encrypted Routing Protocol) para fazer relay de dados e suportar a descoberta de NAT.
-
Protocolos de mapeamento de portas: pode-se solicitar que o dispositivo NAT atue de forma mais amigável usando protocolos de mapeamento de portas como UPnP IGD, NAT-PMP e PCP.
Ainda não há comentários.