Respostas NAT e UDP

20

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 está fora do NAT (em outro lugar da Internet), posso esperar razoavelmente que o NAT passe os pacotes UDP recebidos da Máquina B na porta N de volta para porta N na máquina A, sem exigir encaminhamento de porta manual no NAT?

tomfanning
fonte

Respostas:

21

Somente se a porta de origem do datagrama de saída original também for a porta N e se o NAT não escolher flutuar na 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  

Depois, depois de traduzido pelo NAT na direção de saída, fica 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 fica assim:

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

Depois, após o processo de conversão NAT de entrada:

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

Portanto, o IF Machine A envia o quadro da mesma porta de origem da porta de destino ("Porta N"), e se o NAT for capaz de preservar essa porta de origem (ou seja, ele estiver configurado para preservar as portas de origem quando possível, e essa porta de origem) não está em uso), ENTÃO , você pode esperar uma resposta para "Porta N" para voltar à Máquina A.

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

Spiff
fonte
3

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

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

Em outras palavras, desde que a Máquina B envie de volta ao endereço de origem e à porta de origem fornecidos no pacote recebido, você pode esperar razoavelmente que o pacote de retorno encontre o caminho de volta à fonte original. Isso pressupõe que o pacote de retorno seja enviado dentro de um curto período de tempo, pois as regras NAT automáticas tendem a atingir o tempo limite após alguns minutos.

Seth Noble
fonte
-1

Eu não esperaria isso.

Você pode multiplicar IPs por trás do NAT, portanto, é necessário escolher para qual encaminhamento. Fora do NAT, apenas o IP do roteador é visível e os IPs internos da NAT não são visíveis.

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

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

rumburak
fonte
Está certo que UDP não "conexão forma", no entanto os portos de origem e destino emparelhados na verdade não permitir que o NAT para identificar quais IP atrás do NAT para enviar os pacotes para
portforwardpodcast