Risposte NAT e UDP


20

Controllo di sanità mentale per favore.

Se invio pacchetti UDP dalla macchina A dietro un NAT alla porta N della macchina B, dove la macchina B è al di fuori del NAT (altrove su Internet), posso ragionevolmente aspettarmi che NAT passi i pacchetti UDP ricevuti dalla macchina B sulla porta N a porta N sulla macchina A, senza richiedere il port forwarding manuale sul NAT?

Risposte:


21

Solo se la porta di origine del datagramma in uscita originale era anche la porta N e se il NAT non avesse scelto di rendere mobile la porta di origine.

Cioè, il primo datagramma UDP dalla macchina A appare così sulla tua LAN:

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

Quindi, dopo che è stato tradotto dal NAT nella direzione di uscita, appare così:

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

Ora, quando la macchina B risponde, la risposta in genere è simile alla seguente:

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

Quindi, dopo che passa attraverso il processo di traduzione NAT in entrata:

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

Pertanto, IF Machine A invia il frame dalla stessa porta di origine della porta di destinazione ("Porta N") e SE il NAT è in grado di preservare quella porta di origine (ovvero è configurata per preservare le porte di origine quando possibile e quella porta di origine non è in uso), POI puoi aspettarti una risposta a "Porta N" per tornare alla Macchina A.

Ecco il riferimento autorevole sul comportamento NAT UDP corretto:
RFC 4787 / BCP 127: Requisiti comportamentali NAT (Network Address Translation) per Unicast UDP


3

Chiudi, ma la macchina B deve esaminare l'indirizzo di origine e il numero di porta che riceve effettivamente, che potrebbe essere diverso da N.

Il NAT sulla macchina A potrebbe non utilizzare la stessa porta N inviata dalla macchina A. (Immagina che la macchina C dietro quello stesso NAT invii anche sulla porta N: non possono usarla entrambe.) Quindi la macchina B potrebbe vedere una porta di origine diversa, M. Ma se il NAT lo fa, allora dovrebbe accettare il traffico inviato a porta M e la mappa automaticamente su N sulla Macchina B.

In altre parole, fintanto che la Macchina B rinvia all'indirizzo di origine e alla porta di origine indicati nel pacchetto ricevuto, si può ragionevolmente aspettarsi che il pacchetto di ritorno ritorni alla fonte originale. Ciò presuppone che il pacchetto di ritorno venga inviato entro un breve periodo di tempo, poiché le regole NAT automatiche tendono a scadere dopo un certo numero di minuti.


-1

Non me lo sarei aspettato.

Puoi avere moltiplicare gli IP dietro NAT, quindi devi scegliere a quale inoltrare. Al di fuori di NAT è visibile solo l'IP del router e gli IP NAT interni non sono visibili.

UDP non costituisce una connessione, ma è solo un datagramma che viaggia attraverso la rete.

C'è anche una differenza tra la porta di invio e la ricezione del numero di porta.


Hai ragione sul fatto che UDP non "forma connessione", tuttavia le porte di origine e destinazione accoppiate insieme in realtà consentono al NAT di identificare in modo univoco a quale IP dietro il NAT inviare i pacchetti
portforwardpodcast
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.