Tôi có một ứng dụng UDP gửi các gói có số cổng nguồn đến bằng với số cổng đích từ cả hai phía của giao tiếp. Tài liệu cũng nói rằng ứng dụng này sẽ không hoạt động trong trường hợp có liên quan đến Dịch cổng địa chỉ mạng (NAPT). Tôi đã xác minh rằng đây thực sự là trường hợp và cả NAT, bảo toàn số cổng Đích VÀ NGUỒN hoạt động chính xác, đôi khi được gọi là "NAT chế độ tĩnh". Tuy nhiên, tôi đang cố gắng làm cho ứng dụng này hoạt động bằng cách sử dụng NAPT, đôi khi còn được gọi là "NAT chế độ ẩn". Tôi nghĩ rằng điều này có thể thực hiện được khi sử dụng iptables như sau, ở phía máy chủ Ubuntu nhận được số phần nguồn UDP đã sửa đổi:
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 1 -p udp --dport 12000 -j SNAT --to-source :12000
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 2 -p udp --dport 12001 -j SNAT --to-source :12001
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 3 -p udp --dport 12002 -j SNAT --to-source :12002
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 4 -p udp --dport 12003 -j SNAT --to-source :12003
hercules@pjjs12:~$ sudo iptables -t nat -I POSTROUTING 5 -p udp --dport 12004 -j SNAT --to-source :12004
Khi tôi chạy ứng dụng, tcpdump cho thấy rằng ứng dụng này không hoạt động. Cũng thế iptables -L
các lệnh cho thấy rằng các quy tắc dường như không được sử dụng:
hercules@pjjs12:~$ Sudo iptables -vxnL -t nat --line-numbers
Chuỗi PREROUTING (chính sách CHẤP NHẬN 0 gói, 0 byte)
num pkts byte target prot opt in out đích nguồn
Chuỗi INPUT (chính sách CHẤP NHẬN 0 gói, 0 byte)
num pkts byte target prot opt in out đích nguồn
ĐẦU RA chuỗi (chính sách CHẤP NHẬN 0 gói, 0 byte)
num pkts byte target prot opt in out đích nguồn
Chuỗi POSTROUTING (chính sách CHẤP NHẬN 0 gói, 0 byte)
num pkts byte target prot opt in out đích nguồn
1 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12000 tới::12000
2 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12001 tới::12001
3 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12002 tới::12002
4 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12003 tới::12003
5 0 0 SNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:12004 tới::12004
hercules@pjjs12:~$ Sudo iptables -vxnL --line-numbers
Chuỗi INPUT (chính sách CHẤP NHẬN 542660 gói, 30600115 byte)
num pkts byte target prot opt in out đích nguồn
Chuỗi FORWARD (chính sách CHẤP NHẬN 1838 gói, 100767 byte)
num pkts byte target prot opt in out đích nguồn
ĐẦU RA chuỗi (chính sách CHẤP NHẬN 562972 gói, 888057717 byte)
num pkts byte target prot opt in out đích nguồn
hercules@pjjs12:~$
Tôi phải thừa nhận rằng đây là nỗ lực đầu tiên của tôi để sử dụng iptables
vì vậy tôi không chắc liệu điều này có khả thi hay không hay liệu tôi có đang xem xét những điều thực sự cơ bản hay không. Một trợ giúp về điều này sẽ được đánh giá rất cao.
Cảm ơn,
Peter