Iptables
IP 表轉發問題
預先感謝您的幫助。
我已經嘗試在這裡閱讀和搜尋,但我似乎無法讓它工作。
電腦 A:192.168.1.2 電腦 B:192.168.1.3
我正在嘗試將 UDP 消息從 .2 發送到 .3 並更改埠。.2 將在 1003 上發送一條消息,我希望 .3 在 1004 上接受它。
下面的程式碼放在.3電腦上
iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.1.2 --dport 1003 -j DNAT --to-destination 192.168.1.3:1004 iptables -t nat -A PREROUTING -i eth0 -d 192.168.1.2 -p udp --dport 1003 -j REDIRECT --to-ports 1004 iptables -A FORWARD -i eth0 -p udp -d 192.168.1.2 --dport 1004 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
你的比賽是錯誤的。如果目的地是,他們會開火
192.168.1.2
。在您的情況下,源是192.168.1.2
,目標是192.168.1.3
。此外,您似乎只需要規則
DNAT
或規則REDIRECT
,而不是兩者。過濾規則應該在
INPUT
鏈中,因為目的地是本地機器。我認為state
在這條規則中使用模組沒有意義,但可能需要添加其他連接跟踪相關規則;目前還不清楚是否需要這些。這取決於防火牆的其餘部分。如果防火牆中沒有任何內容,則不需要過濾規則,因為無論如何都會啟用所有內容。順便說一句,
state
已經過時了,你應該使用conntrack
模組,ctstate
匹配來代替。所以,你似乎需要以下兩條規則:
iptables -t nat -A PREROUTING -s 192.168.1.2 -d 192.169.1.3 -p udp --dport 1003 -j REDIRECT --to-ports 1004 iptables -t filter -A INPUT -s 192.168.1.2 -p udp --dport 1004 -j ACCEPT
第一條規則將傳入數據包重定向到 1003 到埠 1004(並返回用於傳出數據包)。第二條規則實際上允許這個翻譯後的數據包到達本地程序。