Como o roteador sabe como rotear os pacotes para o meu terminal?

10

Suponha que eu tenha uma rede de 2 computadores, cada um com um endereço de rede privado 192.168.1.101 e 192.106.1.102.

Para o meu endereço IP público, é 10.2.10.172.

Quando faço uma solicitação http para google.com, meu computador envia um pacote com o endereço IP de origem 192.168.1.101 ao roteador e o NAT o altera para 10.2.10.172.

Minha pergunta é: quando o google.com recebe a solicitação e envia a resposta para 10.2.10.172, como o roteador sabe para qual computador encaminhar? (192.168.1.101 ou 192.168.1.102).

Eu estava pensando no número da porta no começo, mas acho que poderíamos estar navegando no mesmo site ao mesmo tempo, então não tenho idéia de como ele funciona aqui.

Mc Kevin
fonte
11
possível repetição de porta UDP perfuração NAT
Sebastian Wiesinger
11
A rede 10 também é "interna não roteável" - estou trabalhando rápido na fila hoje à noite, então talvez eu esteja doida ... há outra camada de NAT que está acontecendo para transformar esse número 10 líquido em uma rota pública . Enfim ... McKevin, bem-vindo ao Net Eng! Este é um Q de softbol por aqui, mas suponho que seja o suficiente ...
Craig Constantine
@CraigConstantine Eu sou apenas um estudante CCNA, eu acho que explica sobre a Q softball :)
Mc Kevin

Respostas:

7

NAT
Se você estiver usando estática (one-to-one) NAT , o roteador irá atribuir o 11.2.10.172IP público para o primeiro PC (por exemplo 192.168.1.101) tentando alcançar google.com. Nesse caso, os dois computadores não poderão se comunicar com o google.com de uma só vez, porque o único IP público disponível já está distribuído.
A tabela NAT no roteador:
11.2.10.172 -> 192.168.1.101

PAT
No seu caso, PAT (sobrecarga de NAT) é a solução.
Com o PAT, vários endereços podem ser mapeados para um IP privado. Quando um dispositivo inicia uma sessão TCP / IP, ele gera um número de porta de origem TCP ou UDP para identificar exclusivamente a sessão. Quando o roteador recebe esse pacote, ele usa o número da porta de origem para identificar exclusivamente a tradução.

O exemplo
PC1 ( 192.168.1.101) faz uma solicitação HTTP para google.com ( 64.233.161.1) com um número de porta de origem aleatória (1444). PC1 enviará um pacote com DA: 64.233.161.1:80 | SA: 192.168.1.101:1444. Quando o roteador recebe esse pacote, ele é inserido 11.2.10.172:1444 -> 192.168.1.101:1444na tabela NAT e altera o endereço L3 do pacote para DA: 64.233.161.1:80 | SA: 11.2.10.172:1444e encaminha para google.com.
O Google responde com DA: 11.2.10.172:1444 | SA: 64.233.161.1:80. O roteador recebe esse pacote e o converte para DA: 192.168.1.101:1444 | SA: 64.233.161.1:80depois encaminha-lo para PC1.

Se o PC2 ( 192.168.1.102) enviar um pacote com o mesmo número da porta de origem que o PC1, o roteador simplesmente aumentará o número da porta em 1. Nesse caso, a tabela NAT se pareceria com esta

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

Espero que ajude um pouco.

ATUALIZAÇÃO
Como o @CraigConstantine notou, 10.2.10.172ainda está no espaço de endereço privado, então mudei para 11.2.10.172.

Adam Hornyak
fonte
então você quer dizer que teremos 2 números de porta no pacote? um para o NAT e outro para o terminal (porta http 80)?
Mc Kevin
11
Sim. O PC envia um pacote com <dest: 64.233.161.1:80, fonte 192.168.1.101>. O roteador o converte para <dest: 64.233.161.1:80, fonte: 10.2.10.172:1317> e o envia ao Google. O Google responde com <dest: 10.2.10.172:1317, fonte: 64.233.161.1:80>. O roteador recebe o pacote, procura o mapeamento 10.2.10.172:1317 na tabela NAT. Localiza a linha correta, converte e envia o pacote para o PC com <dest: 192.168.1.101, fonte: 64.233.161.1:80>
Adam Hornyak
11
Apenas um no pacote. o roteador reescreve o endereço de destino e os números de porta à medida que são convertidos.
Ron Trunk
11
Se quisermos ser técnicos (e quem não o faria?), O PC atribui uma porta de origem que é traduzida pelo dispositivo NAT. Portanto, no comentário de Adam, a primeira fonte seria realmente mais parecida com 192.168.1.101:33123, e da mesma forma o destino final correspondente no final de seu comentário seria 192.168.1.101:33123.
Todd Wilcox
11
@ToddWilcox Você está certo. Eu esqueci disso. Vou atualizar minha resposta.
Adam Hornyak
4

Seu roteador sabe para onde rotear o tráfego, pois mantém uma tabela de conexões com estado que são IPaddress de origem: porta e relacionamentos IPaddress: port de destino. Eles são estabelecidos com base nas regras de firewall, políticas NAT e algumas outras configurações (como tempo limite de TCP e UDP). Existem 4 estados possíveis: NOVO, RELACIONADO, ESTABELECIDO e INVÁLIDO. Com base nas regras do firewall, o firewall determina em que estado uma conexão deve estar. Portanto, normalmente, você pode fazer NOVAS conexões de saída por padrão, mas somente conexões RELACIONADAS ou ESTABELECIDAS são permitidas de entrada se você criar uma regra NAT ou PAT e corresponder à política de firewall para permitir isso.

Em seguida, com base nas regras que você configurou (no caso de uma conexão NEW) ou na tabela de conexões existente (no caso de uma conexão ESTABELECIDA), um pacote será permitido ou não permitido.

Além disso, é mantida uma tabela [ARP] que ajuda o firewall a saber a que endereço MAC físico um endereço IP corresponde.

James Shewey
fonte