Máy khách và máy chủ NAT, và đóng cổng


0

Hãy nói rằng tôi có một khách hàng và máy chủ. Khách hàng đứng sau NAT và máy chủ là công khai.

Khách hàng muốn có một phiên với máy chủ.

Giả sử khách hàng ở trên 192.168.1.1, NAT trên 192.168.1.2 địa chỉ IP riêng. Và NAT trên 50.0.0.1 và máy chủ trên 50.0.0.2 địa chỉ IP công cộng.

Máy khách gửi gói UDP / IP (hy vọng nó tương tự với gói TCP / IP) đến máy chủ. Gói này có IP nguồn 192.168.1.1 và cổng nguồn giả sử 1000 (được chọn ngẫu nhiên), cũng có cổng đích 50.0.0.2 và cổng đích 2000, vì đây là ứng dụng cổng chạy trên máy chủ.

Gói TCP / IP đến NAT sẽ thay đổi IP nguồn thành 50.0.0.1 và cổng giả sử 5000 (được chọn ngẫu nhiên) và định tuyến đến máy chủ.

Máy chủ gửi gói phản hồi với IP đích 50.0.0.1 và cổng 5000.

NAT thay đổi IP đích của gói thành 192.168.1.1 và cổng đích thành 1000.

  1. Bây giờ, máy chủ có thể gửi nhiều gói UDP / IP đến cùng IP 50.0.0.1 và cổng 5000 không, và tất cả các gói sẽ được chuyển tiếp đến cổng khách 192.168.1.1?

  2. Nếu vậy, cổng 5000 này ở phía công cộng của NAT sẽ chuyển tiếp các gói tới máy khách được đề cập trong bao lâu?

  3. Chỉ các gói với IP nguồn 50.0.0.2 và cổng nguồn 2000 sẽ được chuyển tiếp cho khách hàng?


1
Bạn có hỏi về sự khác biệt giữa TCP và UDP liên quan đến NAT không? UDP thực hiện NAT rất khác so với TCP, vì TCP chứa thông tin về mạch ảo không tồn tại cho UDP, vì vậy bạn không thể nói rằng một gói nhất định là một phần của luồng hiện có.
Frank Thomas

2
@FrankThomas TCP KHÔNG chứa thông tin về mạch ảo - và để làm điều này, ít nhất là một phần, sẽ phá vỡ định tuyến động được sử dụng bởi tất cả các ISP rất lớn. techrepublic.com/article/exploring-the-anatomy-of-a-data-packet hiển thị nội dung của tiêu đề UDP và TCP và giải thích cách TCP đàm phán kết nối đáng tin cậy (sử dụng xác nhận và chuỗi gói, không phải thông tin mạch ảo)
davidgo

@FrankThomas không bảo vệ những gì thẳng thắn đang nói, vì anh ta nói UDP không NAT, điều này hoàn toàn vô nghĩa, nhưng liên quan đến các mạch ảo, trong đó anh ta nói TCP có chứa thông tin về mạch ảo và bạn nói nó không có. Điều này nói rằng nó làm vi.wikipedia.org/wiki/Virtual_circuit cho biết "có thể sử dụng TCP như một mạch ảo, vì TCP bao gồm đánh số phân đoạn cho phép sắp xếp lại ở phía bên nhận để phù hợp với việc phân phối không theo thứ tự."
barlop

@barlop Ý của bạn là "UDP không làm NAT" là gì? Và mạch ảo theo nghĩa bạn đề cập không giống như đề cập của Fran. Trong văn bản của bạn là về sắp xếp lại, điều đó làm cho đường may gói đó đến qua kênh (mạch). Nhưng UDP và TCP giống nhau về việc xác định luồng - chỉ bằng IP và số cổng (mặc dù TCP sử dụng cả nguồn và đích và chỉ đích UDP).
croraf

1
ok, rõ ràng tôi đã sai, xin vui lòng thay thế từ "Kết nối" cho "mạch ảo". TCP có các trạng thái kết nối được điều khiển bởi các cờ và giá trị syn / ack cung cấp quy tắc và tính liên tục cho một luồng gói (ví dụ: bạn biết tất cả chúng đều liên quan đến cùng một luồng và chúng sẽ theo thứ tự nào, bất kể chúng đến theo thứ tự nào trong). cho TCP NAT sử dụng các đặc điểm này để xác định trạng thái kết nối. UDP phải sử dụng các thủ thuật như cửa sổ thời gian và khớp địa chỉ để xác định rằng một cặp gói UDP có liên quan với nhau.
Frank Thomas

Câu trả lời:


3

Đáp án:

  1. Vâng.
  2. Điều này phụ thuộc vào việc triển khai NAT cho thiết bị. Trong Linux, điều này có thể được điều chỉnh bởi chỉnh sửa / Proc / sys / net / ipv4 / netfilter / ip_conntrack_udp_ *
  3. Có - trừ khi có các cổng "liên quan" được NAT công nhận, trong trường hợp đó, các mô-đun NAT bổ sung được sử dụng để tìm ra những gì có liên quan (ít nhất là trên Linux)
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.