Odpowiedzi NAT i UDP

20

Proszę sprawdzić stan zdrowia.

Jeśli wyślę pakiety UDP z Komputera A za NAT do portu N Maszyny B, gdzie Maszyna B znajduje się poza NAT (gdzie indziej w Internecie), czy mogę oczekiwać, że NAT przekaże pakiety UDP otrzymane z Maszyny B na porcie N z powrotem do port N na komputerze A, bez konieczności ręcznego przekierowywania portów na NAT?

tomfanning
źródło

Odpowiedzi:

21

Tylko jeśli port źródłowy oryginalnego wychodzącego datagramu był również portem N, a NAT nie zdecydował się na przeniesienie portu źródłowego.

Oznacza to, że pierwszy datagram UDP z maszyny A wygląda tak w twojej sieci LAN:

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

Następnie, po przetłumaczeniu przez NAT w kierunku wychodzącym, wygląda to tak:

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

Teraz, gdy Maszyna B odpowiada, odpowiedź zwykle wygląda następująco:

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

Następnie, po przejściu procesu translacji przychodzącej translacji NAT:

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

Zatem IF Maszyna A wysyła ramkę z tego samego portu źródłowego co port docelowy („Port N”), a JEŻELI NAT jest w stanie zachować ten port źródłowy (tzn. Jest skonfigurowany tak, aby zachować porty źródłowe, gdy to możliwe, i ten port źródłowy nie jest używany), NASTĘPNIE możesz spodziewać się odpowiedzi na „Port N”, aby wrócić do komputera A.

Oto wiarygodne odniesienie do prawidłowego zachowania NAT UDP:
RFC 4787 / BCP 127: Wymagania behawioralne translacji adresów sieciowych (NAT) dla UDP Unicast

Spiff
źródło
3

Zamknij, ale maszyna B musi spojrzeć na adres źródłowy i numer portu, który faktycznie otrzymuje, które mogą być inne niż N.

NAT na komputerze A może nie używać tego samego portu N, na którym wysłano komputer A. (Wyobraź sobie, że maszyna C za tym samym NATem wysyła również na port N: obaj nie mogą z niej korzystać.) Tak więc Maszyna B może zobaczyć inny port źródłowy, M. Ale jeśli NAT to zrobi, powinien zaakceptować ruch przesyłany z powrotem do port M i automatycznie zamapuj go z powrotem na N na komputerze B.

Innymi słowy, tak długo, jak Maszyna B odsyła adres źródłowy i port źródłowy podany w otrzymanym pakiecie, można zasadnie oczekiwać, że pakiet zwrotny znajdzie drogę powrotną do pierwotnego źródła. Zakłada się, że pakiet zwrotny jest wysyłany w krótkim czasie, ponieważ automatyczne reguły NAT mają tendencję do upływu czasu po pewnej liczbie minut.

Seth Noble
źródło
-1

Nie spodziewałbym się tego.

Możesz mieć wiele adresów IP za NAT, więc musisz wybrać, do którego mają być przekazywane. Poza NAT widoczny jest tylko adres IP routera, a wewnętrzne adresy IP NAT nie są widoczne.

UDP nie tworzy połączenia, ale jest tylko datagramem podróżującym przez sieć.

Istnieje również różnica między portem wysyłającym a numerem portu odbiorczego.

rumburak
źródło
Masz rację, że UDP nie „gra postać” jednak porty źródłowe i docelowe sparowane razem ma rzeczywiście umożliwić NAT do jednoznacznej identyfikacji która IP za NAT, aby wysłać pakiety
portforwardpodcast