
Digamos que eu tenha um cliente e um servidor. O cliente está atrás do NAT e o servidor é público.
O cliente quer ter umsessãocom o servidor.
Digamos que o cliente esteja em 192.168.1.1, NAT em endereços IP privados 192.168.1.2. E NAT em 50.0.0.1 e servidor em 50.0.0.2 endereços IP públicos.
O cliente envia o pacote UDP/IP (espero que seja semelhante ao TCP/IP) para o servidor. Este pacote tem seu IP de origem 192.168.1.1 e porta de origem digamos 1000 (selecionada aleatoriamente), também possui porta de destino 50.0.0.2 e porta de destino 2000, pois esta é a porta que a aplicação roda no servidor.
O pacote TCP/IP chega ao NAT que altera o IP de origem para 50.0.0.1 e a porta, digamos 5000 (selecionada aleatoriamente) e é roteado para o servidor.
O servidor envia o pacote de resposta com destino IP 50.0.0.1 e porta 5000.
O NAT altera o IP de destino do pacote para 192.168.1.1 e a porta de destino para 1000.
Agora, o servidor pode enviar muitos pacotes UDP/IP para o mesmo IP 50.0.0.1 e porta 5000, e todos os pacotes serão encaminhados para o cliente 192.168.1.1 porta 1000?
Se sim, por quanto tempo essa porta 5000 do lado público do NAT encaminhará os pacotes para o cliente mencionado?
Somente os pacotescom o IP de origem 50.0.0.2 e porta de origem 2000será encaminhado ao cliente?
Responder1
Respostas:
- Sim.
- Isto depende da implementação do NAT para o dispositivo. No Linux isso pode ser ajustado poreditando /proc/sys/net/ipv4/netfilter/ip_conntrack_udp_*
- Sim - a menos que existam portas "relacionadas" reconhecidas pelo NAT, caso em que módulos NAT adicionais são usados para descobrir o que está relacionado (pelo menos no Linux)