Cómo funciona NAT Traversal (2020)
(tailscale.com)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.