Iptables

IP 表轉發問題

  • October 29, 2021

預先感謝您的幫助。

我已經嘗試在這裡閱讀和搜尋,但我似乎無法讓它工作。

電腦 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(並返回用於傳出數據包)。第二條規則實際上允許這個翻譯後的數據包到達本地程序。

引用自:https://serverfault.com/questions/1082125