我的 iptables 設定中是否需要此行來進行重新導向?

我的 iptables 設定中是否需要此行來進行重新導向?

我有一個應用程式在連接埠 7162 上偵聽 SNMP 陷阱。陷阱到達連接埠 162,因此我的 iptables 中有此重定向:

-A PREROUTING -p udp -m udp --dport 162 -j REDIRECT --to-ports 7162

我是否還需要明確允許傳入連接到連接埠 162

-A INPUT -p udp -m state --state NEW -m udp --dport 162 -j ACCEPT

有時它只適用於第一行,有時則不然,所以我試圖找出原因。

答案1

第一條規則應該足夠了 - 除非您以INPUT某種方式限制對鏈中連接埠 7162 的存取。

事實上,您的 UDP 封包甚至不應該透過INPUT目標連接埠設定為 162 的鏈,至少根據下圖是如此:https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

此外,你的INPUT規則似乎太複雜了。 UDP 是一種無狀態協議,因此您要處理 netfilter 內某種形式的狀態。我什至還沒有找到關於這些狀態與 UDP 一起使用時的含義的正確文件。

嘗試使用程式監視兩個連接埠tcpdump以獲取線索(注意:如果您在PREROUTING鏈中丟棄任何資料包,tcpdump 將看不到它們它只能看到連接埠 162 上的傳入資料包,即使偵聽環回也不會顯示重新導向)。

編輯:您不會在單一機器內嘗試連線規則,對吧?PREROUTING不會在僅限本機的連線上遍歷。

相關內容