Trả lời NAT và UDP


20

Vui lòng kiểm tra.

Nếu tôi gửi các gói UDP từ Máy A phía sau NAT đến cổng N của Máy B, trong đó Máy B nằm ngoài NAT (nơi khác trên Internet), tôi có thể mong đợi một cách hợp lý rằng NAT sẽ chuyển các gói UDP nhận được từ Máy B trên cổng N trở lại cổng N trên Máy A, không yêu cầu chuyển tiếp cổng thủ công trên NAT?

Câu trả lời:


21

Chỉ khi cổng nguồn của datagram đi ban đầu cũng là cổng N và nếu NAT không chọn thả nổi cổng nguồn.

Đó là, datagram UDP đầu tiên từ Máy A trông như thế này trên mạng LAN của bạn:

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

Sau đó, sau khi được NAT dịch theo hướng ra ngoài, nó trông như thế này:

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

Bây giờ, khi Máy B trả lời, câu trả lời thường trông như thế này:

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

Sau đó, sau khi trải qua quá trình dịch thuật NAT gửi đến:

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

Vì vậy, IF Machine A gửi khung từ cùng một cổng nguồn với cổng đích ("Cổng N") và IF NAT có thể bảo vệ cổng nguồn đó (nghĩa là nó được cấu hình để bảo toàn các cổng nguồn khi có thể và cổng nguồn đó không được sử dụng), THÌ bạn có thể mong đợi câu trả lời cho "Cổng N" để quay lại Máy A.

Đây là tài liệu tham khảo chính thức về hành vi UDP NAT phù hợp:
RFC 4787 / BCP 127: Yêu cầu hành vi dịch địa chỉ mạng (NAT) cho UDP Unicast


3

Đóng, nhưng Máy B cần xem địa chỉ nguồn và số cổng mà nó thực sự nhận được, có thể khác với N.

NAT tại Máy A có thể không sử dụng cùng cổng N mà Máy A đã gửi. (Hãy tưởng tượng máy C đằng sau cùng một NAT cũng gửi trên cổng N: cả hai đều không thể sử dụng nó.) Vì vậy, Máy B có thể thấy một cổng nguồn khác, M. Nhưng nếu NAT làm điều đó, thì nó sẽ chấp nhận lưu lượng được gửi trở lại cổng M và tự động ánh xạ trở lại N tại Máy B.

Nói cách khác, miễn là Máy B gửi lại địa chỉ nguồn và cổng nguồn được cung cấp trong gói mà nó nhận được, bạn có thể mong đợi một cách hợp lý gói trả về sẽ tìm đường trở về nguồn ban đầu. Điều này giả định rằng gói trả về được gửi trong một khoảng thời gian ngắn, vì các quy tắc NAT tự động có xu hướng hết thời gian chờ sau một số phút.


-1

Tôi không mong đợi điều đó.

Bạn có thể có nhiều IP phía sau NAT, vì vậy bạn cần chọn chuyển tiếp IP. Bên ngoài NAT chỉ có IP bộ định tuyến hiển thị và IP NAT bên trong không hiển thị.

UDP không hình thành kết nối, nhưng nó chỉ là một datagram di chuyển trên mạng.

Cũng có sự khác biệt giữa gửi cổng và nhận số cổng.


Bạn đã đúng rằng UDP không "hình thành kết nối" tuy nhiên các cổng nguồn và đích được ghép nối với nhau thực sự cho phép NAT xác định duy nhất IP nào phía sau NAT gửi các gói đến
portforwardpodcast
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.