Respostas NAT e UDP

17

Verificação de sanidade, por favor.

Se eu enviar pacotes UDP da Máquina A atrás de um NAT para a porta N da Máquina B, onde a Máquina B estiver fora da NAT (em outro lugar na Internet), posso razoavelmente esperar que a NAT passe pacotes UDP recebidos da Máquina B na porta N de volta para a porta N na Máquina A, sem precisar de encaminhamento manual de portas no NAT?

    
por tomfanning 02.08.2012 / 18:15

3 respostas

17

Somente se a porta de origem do datagrama de saída original também for a porta N e se o NAT não tiver escolhido flutuar a porta de origem.

Ou seja, o primeiro datagrama UDP da Máquina A se parece com isso na sua LAN:

       Source IP: MachineAPrivate  
     Source Port: PortA     <-- note this is typically different than the destination port  
  Destination IP: MachineBPublic  
Destination Port: PortN  

Então, depois que ele é traduzido pelo NAT na direção de saída, é assim:

       Source IP: NATPublic  
     Source Port: PortC   <-- note this may or may not be the same as "PortA" above  
  Destination IP: MachineBPublic  
Destination Port: PortN  

Agora, quando a Máquina B responde, a resposta normalmente é assim:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: NATPublic  
Destination Port: PortC  

Em seguida, depois de passar pelo processo de conversão do NAT de entrada:

       Source IP: MachineBPublic  
     Source Port: PortN  
  Destination IP: MachineAPrivate  
Destination Port: PortA  

Portanto, SE a Máquina A envia o quadro da mesma porta de origem que a porta de destino ("Porta N") e IF o NAT é capaz de preservar esse porta de origem (ou seja, ela está configurada para preservar as portas de origem quando possível e essa porta de origem não está em uso), ENTÃO você pode esperar que uma resposta "Porta N" retorne à Máquina A.

Aqui está a referência autoritativa sobre o comportamento adequado do NAT UDP:
RFC 4787 / BCP 127: Requisitos de comportamento de conversão de endereços de rede (NAT) para Unicast UDP

    
por 02.08.2012 / 19:15
3

Fechar, mas a Máquina B precisa examinar o endereço de origem e o número da porta que realmente recebe, o que pode ser diferente de N.

O NAT na Máquina A pode não usar a mesma porta N da Máquina A enviada. (Imagine a máquina C atrás do mesmo NAT também enviando na porta N: eles não podem usá-la.) Então a Máquina B pode ver uma porta de origem diferente, M. Mas se o NAT fizer isso, então deve aceitar o tráfego enviado de volta para porta M e mapeá-lo automaticamente de volta para N na Máquina B.

Em outras palavras, desde que a Máquina B retorne ao endereço de origem e à porta de origem fornecidas no pacote recebido, é possível esperar que o pacote de retorno encontre o caminho de volta para a fonte original. Isso pressupõe que o pacote de retorno seja enviado dentro de um curto período de tempo, pois as regras automáticas de NAT tendem a expirar após alguns minutos.

    
por 15.08.2012 / 23:19
-1

Eu não esperava isso.

Você pode ter vários IPs por trás do NAT, portanto, é necessário escolher para o qual ele deve ser encaminhado. Fora do NAT, somente o IP do roteador é visível e os IPs internos do NAT não são visíveis.

O UDP não forma conexão, mas é apenas um datagrama que viaja pela rede.

Também há diferença entre o envio de porta e o número da porta de recebimento.

    
por 02.08.2012 / 18:38

Tags