Linux

用於活動 UDP 連接的 iptables 埠轉發

  • September 30, 2012

我正在嘗試在 UDP 上設置埠轉發,port 12345port 54321使用以下內容:

iptables -t nat -A PREROUTING -p udp -i eth0 -d 192.168.0.1  --dport 12345 -j DNAT --to 192.168.0.1:54321

iptables -A FORWARD -p udp -i eth0 -d 192.168.0.1 --dport 54321 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

這適用於新連接,但不適用於目前活動的連接。

為了澄清我的意思,假設在添加規則之前,有一個來自192.168.0.2:55555<—>的活動連接192.168.0.1:12345,我正在嘗試將所有傳入連接重定向192.168.0.1:12345192.168.0.1:54321.

添加以上兩條規則後,192.168.0.1:12345192.168.0.1:54321來自192.168.0.2:55555.

我想連接的狀態在這方面起了作用。我該如何解決這個問題並從192.168.0.1:55555目的地port 12345獲取數據包port 54321

我想出了怎麼做!

您需要在 NAT 上使用 REDIRECT!但是在此之前,您必須從 conntrack 中刪除與此連接對應的條目!類似於以下內容

conntrack -D -p udp -d  192.168.0.1 --dport=55555 

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