1 pontos por GN⁺ 2025-01-06 | Ainda não há comentários. | Compartilhar no WhatsApp

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:port do outro. Para isso, usa-se um servidor de coordenação para sincronizar as informações ip: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:port do 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:port pú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.

Ainda não há comentários.