Linux
用於活動 UDP 連接的 iptables 埠轉發
我正在嘗試在 UDP 上設置埠轉發,
port 12345
以port 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:12345
到192.168.0.1:54321
.添加以上兩條規則後,
192.168.0.1:12345
除192.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