¿Cómo sabe el enrutador cómo enrutar los paquetes a mi terminal?

10

Supongamos que tengo una red de 2 computadoras, cada una con una dirección de red privada de 192.168.1.101 y 192.106.1.102.

Para mi dirección IP pública, es 10.2.10.172.

Cuando realizo una solicitud http a google.com, mi computadora enviará un paquete con la dirección IP de origen 192.168.1.101 al enrutador y el NAT lo cambiará a 10.2.10.172.

Mi pregunta es, cuando google.com recibe la solicitud y envía la respuesta al 10.2.10.172, ¿cómo sabe el enrutador a qué computadora dirigirse? (192.168.1.101 o 192.168.1.102).

Al principio estaba pensando en el número de puerto, pero creo que podríamos estar navegando en el mismo sitio web al mismo tiempo, así que no tengo idea de cómo funciona aquí.

Mc Kevin
fuente
1
posible duplicado del puerto NAT de perforación de agujeros UDP
Sebastian Wiesinger
1
La red 10 también es "interna no enrutable": estoy trabajando rápidamente en la cola esta noche, así que tal vez estoy loco ... hay otra capa de NAT que debe estar sucediendo para convertir ese número 10 neto en un publick enrutable . De todos modos ... McKevin, bienvenido a Net Eng! Esta es una Q de softbol por aquí, pero supongo que es un tema suficiente ...
Craig Constantine
@CraigConstantine Soy solo un estudiante de CCNA, supongo que eso se explica en el softball P :)
Mc Kevin

Respuestas:

7

NAT
Si está utilizando estática (uno-a-uno) NAT , el router asignará la 11.2.10.172dirección IP pública a la primera PC (por ejemplo 192.168.1.101) tratando de llegar a google.com. En este caso, las dos PC no podrán comunicarse con google.com a la vez, porque la única IP pública disponible ya está distribuida.
La tabla NAT en el enrutador:
11.2.10.172 -> 192.168.1.101

PAT
En su caso, PAT (sobrecarga de NAT) es la solución.
Con PAT, se pueden asignar múltiples direcciones a una IP privada. Cuando un dispositivo inicia una sesión TCP / IP, genera un número de puerto de origen TCP o UDP para identificar de forma exclusiva la sesión. Cuando el enrutador recibe este paquete, utiliza ese número de puerto de origen para identificar de forma exclusiva la traducción.

Ejemplo
PC1 ( 192.168.1.101) realiza una solicitud HTTP a google.com ( 64.233.161.1) con un número de puerto de origen aleatorio (1444). PC1 enviará un paquete con DA: 64.233.161.1:80 | SA: 192.168.1.101:1444. Cuando el enrutador recibe este paquete, se inserta 11.2.10.172:1444 -> 192.168.1.101:1444en la tabla NAT y luego cambia el direccionamiento L3 del paquete DA: 64.233.161.1:80 | SA: 11.2.10.172:1444y lo reenvía a google.com.
Google responde con DA: 11.2.10.172:1444 | SA: 64.233.161.1:80. El enrutador recibe este paquete y lo traduce para DA: 192.168.1.101:1444 | SA: 64.233.161.1:80luego reenviarlo a la PC1.

Si PC2 ( 192.168.1.102) envía un paquete con el mismo número de puerto de origen que PC1, el enrutador simplemente aumenta el número de puerto en 1. En ese caso, la tabla NAT se vería así

11.2.10.172:1444 -> 192.168.1.101:1444
11.2.10.172:1445 -> 192.168.1.102:1444

Espero que ayude un poco.

ACTUALIZACIÓN
Como notó @CraigConstantine, 10.2.10.172todavía está en el espacio de direcciones privadas, así que lo he cambiado a 11.2.10.172.

Adam Hornyak
fuente
¿Quieres decir que tendremos 2 números de puerto en el paquete? uno para el NAT y uno para el terminal (puerto http 80)?
Mc Kevin
1
Si. La PC envía un paquete con <dest: 64.233.161.1:80, fuente 192.168.1.101>. El enrutador lo traduce a <dest: 64.233.161.1:80, fuente: 10.2.10.172:1317> y lo envía a Google. Google responde con <dest: 10.2.10.172:1317, fuente: 64.233.161.1:80>. El enrutador recibe el paquete, busca la asignación 10.2.10.172:1317 en la tabla NAT. Encuentra la fila correcta, traduce y envía el paquete a la PC con <dest: 192.168.1.101, fuente: 64.233.161.1:80>
Adam Hornyak
1
Solo uno en el paquete. el enrutador reescribe la dirección de destino y los números de puerto a medida que se traduce.
Ron Trunk
1
Si queremos obtener todo lo técnico (¿y quién no?), La PC asigna un puerto de origen que luego es traducido por el dispositivo NAT. Entonces, en el comentario de Adam, la primera fuente sería más como 192.168.1.101:33123, y del mismo modo el destino final correspondiente al final de su comentario sería 192.168.1.101:33123.
Todd Wilcox
1
@ToddWilcox Tienes razón. Olvidé eso. Actualizaré mi respuesta.
Adam Hornyak
4

Su enrutador sabe dónde enrutar el tráfico porque mantiene una tabla de conexiones con estado que son direcciones IP de origen: puerto y direcciones IP de destino: puerto. Estos se establecen en función de las reglas del firewall, las políticas NAT y algunas otras configuraciones (como el tiempo de espera de TCP y UDP). Hay 4 estados posibles: NUEVO, RELACIONADO, ESTABLECIDO e INVÁLIDO. Según las reglas de su firewall, su firewall determina en qué estado debe estar una conexión. Por lo tanto, por lo general, puede hacer NUEVAS conexiones salientes de forma predeterminada, pero solo las conexiones RELACIONADAS o ESTABLECIDAS se permiten entrantes si crea una regla NAT o PAT y una política de firewall coincidente para permitir esto.

Luego, ya sea en base a las reglas que ha configurado (para el caso de una NUEVA conexión) o la tabla de conexión existente (para el caso de una conexión ESTABLECIDA), se permitirá o rechazará un paquete.

Además, se mantiene una tabla [ARP] que ayuda al firewall a saber a qué dirección MAC física corresponde una dirección IP.

James Shewey
fuente