1 puntos por GN⁺ 2025-01-06 | Aún no hay comentarios. | Compartir por WhatsApp

Cómo funciona el NAT Traversal

  • Problema base: Aborda el problema de establecer una conexión peer-to-peer entre dos máquinas. En el caso de Tailscale, se busca configurar un túnel de WireGuard®. Esta tecnología se usa en diversos campos como WebRTC, llamadas VoIP y videojuegos.

  • Protocolo basado en UDP: Se necesita un protocolo basado en UDP para la NAT Traversal. También se podría usar TCP, pero aumenta la complejidad y puede requerir personalización del kernel.

  • Control directo del socket de red: Se requiere control directo sobre los sockets que envían y reciben paquetes de red. No se puede atravesar NAT con una biblioteca de red existente.

  • Uso de proxy local: Cuando el acceso directo al socket es difícil, se puede usar un proxy local para realizar NAT Traversal y relay de paquetes.

Comprender el firewall

  • Firewall con estado: La mayoría de los dispositivos NAT incluyen un firewall con estado, que recuerda paquetes vistos anteriormente y los utiliza al procesar nuevos paquetes.

  • Regla de tráfico UDP: El firewall permite paquetes UDP entrantes que coincidan con paquetes salientes UDP que ya vio.

  • Manejo del firewall: Si todos los firewalls están orientados en la misma dirección, es lo mismo que reinventar la comunicación cliente/servidor. Sin embargo, surgen problemas cuando dos clientes intentan comunicarse directamente entre sí.

Eludir el firewall

  • Solución sin reconfigurar el firewall: Se necesita una forma de resolver el problema sin reconfigurar el firewall. Si el paquete UDP tiene una dirección IP y puerto de origen y destino correctos, se permite un paquete que luce como respuesta.

  • Intercambio de información: Los pares deben conocer de antemano la información ip:port del otro. Para eso se usa un servidor de señalización para sincronizar la información ip:port.

La esencia de NAT

  • Dispositivo NAT: El dispositivo NAT modifica paquetes y, en particular, el Source NAT (SNAT) es problemático. Se usa para conectar varios dispositivos a Internet.

  • Descubrimiento NAT: Como el dispositivo NAT modifica paquetes, los dos peers no pueden conocer el ip:port del otro. El protocolo STUN ayuda a soportar el descubrimiento NAT.

STUN y descubrimiento de NAT

  • Protocolo STUN: Cuando un cliente con NAT se comunica con un servidor de Internet, el servidor puede ver el ip:port público creado por el dispositivo NAT. El servidor STUN le proporciona esta información al cliente.

  • Limitaciones: STUN funciona solo en algunos casos y es probable que falle, especialmente en NAT gateways que se anuncian como dispositivos de seguridad.

Soluciones adicionales

  • Uso de relay: Cuando falla la conexión directa, se usa un relay para enviar paquetes y permitir que ambas partes se comuniquen sin interrupciones.

  • Protocolo DERP: Tailscale usa DERP (Detoured Encrypted Routing Protocol) para realizar relay de datos y soportar el descubrimiento NAT.

  • Protocolos de mapeo de puertos: Con protocolos de mapeo de puertos como UPnP IGD, NAT-PMP y PCP, se puede solicitar que el dispositivo NAT funcione de forma más amigable.

Aún no hay comentarios.

Aún no hay comentarios.