¿Cómo funciona NAT con los paquetes UDP entrantes de IP desconocida?

8

Disculpas de antemano por la pregunta relativamente nueva y si esto está fuera de tema aquí (no estoy seguro ...)

La situación es que tengo un cliente UDP y un servidor vinculado al mismo puerto.

Entiendo que NAT es que los paquetes UDP que salen del cliente a un punto final específico darán como resultado una entrada temporal en la tabla NAT que asigna el puerto de origen al punto final de destino. (¿Es esto correcto?)

¿Esto también significa que si un punto final aún desconocido inicia una comunicación UDP con mi servidor a ese mismo puerto por el que pasará el paquete UDP? ¿Hay alguna razón por la cual NAT evitaría esto? ¿NAT incluso figura en bloquear / permitir estos paquetes entrantes?

Centinela
fuente
1
Hola Sentinel, bienvenido a NESE. La respuesta dependerá de qué tipo de NAT esté configurado: parece que se refiere a un PAT dinámico (aunque diferentes proveedores lo llaman cosas diferentes ). Esta respuesta en otras preguntas y respuestas proporciona más detalles sobre por qué Dynamic PAT es unidireccional y no permitiría que el punto final "aún desconocido" inicie una conexión a su servidor (TCP o UDP). La tercera ilustración en particular parece relevante para su pregunta.
Eddie
@ Eddie Muchas gracias por tu útil información. Creo que para el beneficio de aquellos que puedan llegar aquí en el futuro, sería una buena idea agregar esto como respuesta.
Sentinel
Si cree que sería una respuesta más adecuada que las publicadas, puedo escribir otra. Tu elección =).
Eddie
1
Eddie escribió La respuesta dependerá de qué tipo de NAT esté configurado : @Sentinel Algunos tipos de NAT se enumeran en Wikipedia: en.wikipedia.org/wiki/… Es obvio que un "NAT de cono completo" reaccionará de manera diferente que un NAT. "NAT simétrica" ​​aquí.
Martin Rosenau
@ Martinartosenau Gracias. Parece que voy a pasar mucho tiempo estudiando NAT. Me parece milagroso que programas como BitTorrent funcionen incluso en este campo minado de trucos de red.
Sentinel

Respuestas:

6

El NAT habitual funciona mediante la creación de asignaciones para cada par de hosts en comunicación como una tupla de 5 (protocolo, dirección interna, puerto interno, dirección externa, puerto externo). Normalmente esta entrada se agrega a la tabla por el primer paquete saliente.

Si el host externo aún desconocido aún envía un paquete UDP, no habrá entrada en la tabla y, por lo tanto, el dispositivo NAT normalmente lo descartará, dependiendo de sus capacidades y configuración.

Este tipo de NAT normalmente se denomina "sobrecarga de NAT" o "traducción de dirección de puerto" para distinguirlo de otras variedades. Una buena descripción es http://www.ciscozine.com/nat-and-pat-a-complete-explanation/

Si desea aceptar paquetes entrantes en su servidor, necesitará configurar una entrada estática en el dispositivo NAT para ese servidor en ese puerto. Efectivamente, esto dice que los paquetes entrantes pueden agregar entradas a la tabla NAT.

Los detalles dependen del dispositivo y el software.

jonathanjo
fuente
OK ya veo gracias. Dejaré esto votado por un tiempo antes de marcar como respuesta aceptada más adelante, para permitir otras opiniones si las hay. Me sorprende que tanto software P2P se base en el descubrimiento UDP pero no parece adoptar estrategias relacionadas con NAT, aparte de UPnP
Sentinel
3

Como señala jonathanjo, una entrada de tabla UDP NAPT consistirá en algo más que un número de puerto UDP (con NAPT, hay tablas separadas para UDP, TCP e ICMP, y el puerto UDP 12345 es diferente del puerto TCP 12345, mientras que ICMP no no use puertos, pero use una ID de consulta en lugar del número de puerto).

Sin la dirección IP externa específica en una entrada de la tabla NAPT, el dispositivo NAPT asumirá que el paquete está destinado a sí mismo porque es el dispositivo que realmente se direcciona con la dirección IP entrante. Si el dispositivo NAPT, en sí mismo, no tiene el puerto UDP abierto, debería descartar el paquete, pero eso depende realmente del sistema operativo del dispositivo NAPT y de cómo está configurado.

Esta es una gran razón por la que NAPT no es seguridad. Realmente también necesitas un firewall. El firewall de manera predeterminada bloqueará todas las conexiones originadas en el exterior, protegiendo el dispositivo NAPT. Si el dispositivo NAPT se ve comprometido, tiene acceso total a la red interna, y un atacante tiene acceso completo a la red interna, incluso si se trata de una red privada.

Ron Maupin
fuente
¿Podrías ayudarme con una cosa? Para los enrutadores domésticos típicos, ¿por qué el 'reenvío de puertos' (pat estático, siesta estática?) No produce tráfico iniciador saliente siguiendo esa regla? Parece que ignoran la regla y continúan con las entradas dinámicas de todos modos. ¿Es esta la norma?
Sentinel
1
El reenvío de puertos es una regla para el tráfico iniciado por el exterior para permitir que los hosts externos inicien una conexión con un host interno especificado en la regla, no para el tráfico iniciado por el interior. Básicamente es una entrada estática en la tabla NAPT para uno de los tres protocolos que pueden usar NAPT (TCP, UDP, ICMP). Consulte RFC 2663, Terminología y consideraciones del traductor de direcciones de red IP (NAT) .
Ron Maupin