Pregunta: Suponiendo que PAT esté habilitado en el enrutador de Internet de mi hogar, ¿cómo sabe mi enrutador en qué hosts demultiplexar paquetes cuando recibe paquetes de Internet?
Ejemplo: en mi LAN hay 2 hosts. Cada uno envía una solicitud al mismo servidor para obtener la misma información. Cada host utiliza el mismo puerto. ¿Cómo sabe el enrutador qué paquetes deben ir a dónde? Cada paquete debe tener la misma dirección de origen y destino. Los puertos deberían ser los mismos a menos que haya algún puerto mágico del que no tenga conocimiento.
Mi conjetura: voy a suponer que hay algunos metadatos que no conozco y que están adjuntos a paquetes que de alguna manera identifican a cada host individual en una red privada. Pero esto no parece funcionar en el siguiente ejemplo.
Ejemplo: algún host (otro) en una red diferente quiere enviar un paquete a un host (mi) en mi LAN. El otro host envía el paquete a la dirección IP pública de mi red. Pero como mi host no espera el paquete, no podría haberle dado a mi enrutador ningún metadato sobre cómo demultiplexar el paquete. Y el otro host no conoce más metadatos que la dirección IP pública de mi red.
Respuesta1
Los dispositivos que realizan traducción de direcciones de red mantienen una tabla de traducción que incluye información sobre las direcciones IP y los números de puerto de origen y destino. La combinación de dirección IP de origen y número de puerto, y dirección IP de destino y número de puerto crea un identificador único para cada sesión.
Respuesta2
Puertos de origen.
Cada cliente dentro de NAT asigna un puerto aleatorio de alto número como puerto de origen de su conexión al servidor.
Cuando el enrutador traduce una solicitud, también establece un puerto de origen y realiza un seguimiento de qué puerto de origen asignó a qué conexión. Entonces, el servidor web devuelve algo con el puerto de origen 80 y el puerto de destino 35201 (o lo que sea), el enrutador busca cuál de las conexiones de cliente de red había asignado como 35201.
Tenga en cuenta que esto significa que el servidor web probablementenosaber qué puerto de origen había solicitado el cliente original, exactamente a qué puerto de origen lo tradujo el enrutador. (El puerto de origen de la solicitud se convierte en el puerto de destino de la respuesta).
Respuesta3
Solo quiero continuar con las respuestas anteriores, con respecto al ejemplo que mencionaste sobre un dispositivo externo que intenta comunicarse con tu host interno, por lo que, según lo anterior, de manera predeterminada tu enrutador descartará el tráfico que se inició desde Internet, porque no sabe cuál El host interno de su LAN debería recibir tráfico, ya que todavía no se ha creado ninguna entrada para esto en la tabla NAT del enrutador.
La forma de permitir el tráfico entrante a su LAN desde Internet sería definir una regla de reenvío de puerto específica, también conocida como nat estática, para que le indique a su enrutador cuando el tráfico proviene de Internet al puerto 80, por ejemplo, reenvíe este tráfico. a mi servidor web en lan en ip y puerto 192.168.1.5:80, por ejemplo.