Để DNAT hoạt động (theo nghĩa là để chương trình bật có thể nhận ra các câu trả lời), "NAT đảo ngược" sẽ thay đổi cổng nguồn của các lưu lượng trả lời từ 192.168.30.1
(đến 192.168.30.3:2001
) từ 2003
đến 2002
sẽ cần phải được thực hiện.
Tuy nhiên, khi có lưu lượng truy cập đến từ 192.168.30.1:2003
đến 192.168.30.3:2001
rằng theo quan điểm của conntrack không phải là hệ quả của DNAT (vì theo mục nhập conntrack được tạo, máy chủ lưu trữ không phải là thiết bị khởi tạo kết nối), NAT ngược sẽ không phù hợp.
Do đó, bộ lọc mạng bị "buộc" phải thực hiện SNAT đối với lưu lượng truy cập phù hợp với quy tắc DNAT, để nó có thể phân biệt lưu lượng truy cập trả lời (cũng là từ 192.168.30.1:2003
) theo điểm đến 192.168.30.3:$ngẫu nhiên
.
Tôi cho rằng bộ lọc mạng sẽ thực hiện NAT ngược cho DNAT (là SNAT) trước NAT ngược cho SNAT (là DNAT) hoặc quản lý để sử dụng đích trước NAT ngược cho SNAT (tức là 192.168.30.3:$ngẫu nhiên
) để khớp với NAT ngược cho DNAT, nếu không thì SNAT bắt buộc sẽ vô nghĩa.(Tuy nhiên, trong trường hợp không đảo ngược, cả hai điều này đều không đúng AFAIK: DNAT sẽ được thực hiện trong PREROUTING trước SNAT trong INPUT và đối sánh đích trong quy tắc SNAT, nếu có, sẽ sử dụng giá trị tạo ra trong DNAT)
Vấn đề là, câu chuyện trên/"vấn đề" trong câu hỏi của bạn hầu như không có ý nghĩa gì trong thực tế. Lấy VPN bảo vệ dây hai máy chủ làm ví dụ: giả sử bạn muốn có điểm cuối =
được đặt trên cả hai máy chủ (để một trong hai máy chủ có thể bắt đầu giao tiếp) và không muốn các giá trị được "cập nhật" bất ngờ do SNAT bắt buộc (giả sử rằng điều đó thực sự có thể được kích hoạt), điều bạn nên làm chỉ đơn giản là "luôn luôn -on" SNAT "bổ sung" DNAT / tương đương với NAT dự trữ:
iptables -t nat -A INPUT -s 192.168.30.1 -d 192.168.30.3 -p udp --sport 2003 --dport 2001 -j SNAT --to-source :2002
điều này thường không cần thiết trong mô hình máy khách-máy chủ vì NAT đảo ngược tự động cho DNAT.
Tái bút Bạn vẫn chưa đạt được 192.168.30.1:2003
qua 192.168.30.1:2003
tuy nhiên, nếu không, NAT nguồn bắt buộc cũng sẽ xảy ra nếu bạn truy cập lại bằng cách 192.168.30.1:2002
trước khi mục conntrack của cái cũ bị loại bỏ. Quy tắc SNAT bổ sung trong INPUT cũng sẽ không gây thêm rắc rối cho bạn.