
Digamos que tengo un cliente y un servidor. El cliente está detrás de NAT y el servidor es público.
El cliente quiere tener unsesióncon el servidor.
Digamos que el cliente está en 192.168.1.1, NAT en 192.168.1.2 direcciones IP privadas. Y NAT en 50.0.0.1 y servidor en direcciones IP públicas 50.0.0.2.
El cliente envía el paquete UDP/IP (con suerte, es similar a TCP/IP) al servidor. Este paquete tiene su IP de origen 192.168.1.1 y el puerto de origen, digamos 1000 (seleccionado al azar), también tiene el puerto de destino 50.0.0.2 y el puerto de destino 2000, ya que este es el puerto que la aplicación se ejecuta en el servidor.
El paquete TCP/IP llega a NAT, lo que cambia la IP de origen a 50.0.0.1 y el puerto, digamos 5000 (seleccionado al azar) y se enruta al servidor.
El servidor envía el paquete de respuesta con destino IP 50.0.0.1 y puerto 5000.
La NAT cambia la IP de destino del paquete a 192.168.1.1 y el puerto de destino a 1000.
Ahora, ¿puede el servidor enviar muchos paquetes UDP/IP a la misma IP 50.0.0.1 y al puerto 5000, y todos los paquetes se reenviarán al cliente 192.168.1.1, puerto 1000?
Si es así, ¿durante cuánto tiempo este puerto 5000 en el lado público de NAT reenviará los paquetes al cliente mencionado?
solo los paquetescon la IP de origen 50.0.0.2 y el puerto de origen 2000¿Será reenviado al cliente?
Respuesta1
Respuestas:
- Sí.
- Esto depende de la implementación de NAT para el dispositivo. En Linux esto se puede ajustar medianteedición /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_*
- Sí, a menos que haya puertos "relacionados" reconocidos por NAT, en cuyo caso se utilizan módulos NAT adicionales para determinar qué está relacionado (al menos en Linux)