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.
Respostas:
NAT
Se você estiver usando estática (one-to-one) NAT , o roteador irá atribuir o
11.2.10.172
IP público para o primeiro PC (por exemplo192.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 comDA: 64.233.161.1:80 | SA: 192.168.1.101:1444
. Quando o roteador recebe esse pacote, ele é inserido11.2.10.172:1444 -> 192.168.1.101:1444
na tabela NAT e altera o endereço L3 do pacote paraDA: 64.233.161.1:80 | SA: 11.2.10.172:1444
e 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 paraDA: 192.168.1.101:1444 | SA: 64.233.161.1:80
depois 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 esta11.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.172
ainda está no espaço de endereço privado, então mudei para11.2.10.172
.fonte
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.
fonte