2008-10-28 114 views
18

是否可以使用iptables更改UDP數據包的目標端口?使用iptables更改目標端口

我試圖讓一個SNMP代理對1620發出的陷阱,而不是162.遺憾的是到目前爲止,我只設法改變源端口:

的iptables -t NAT -A POSTROUTING -p UDP --dport 162 -j SNAT --to:1620

回答

4

這個用法顯然不被支持。取自http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txt

6.3.7。改變本地產生的連接

NAT代碼允許你在OUTPUT鏈插入 DNAT規則,但
這不是完全2.4的支持(這 能的目標,但它需要一個新的
配置選項,一些測試, 和一點點的編碼,所以除非有人約定Rusty寫它,我 不會期待它很快)。

目前的限制是你 只能更改目的地,以
本地計算機(如:`ĴDNAT --to 127.0.0.1' ),而不是任何其他機器,否則答覆不會 被正確翻譯。

0

而不是使SNAT的,試着用DNAT。由於SNAT意味着SourceNAT,因此源端口發生更改,因此DNAT將爲您工作。

+0

獲得DNAT工作,你需要-p指定一個ip地址作爲 - 到 - 目的地 – PiedPiper 2008-10-28 11:06:26

+0

這在這種情況下不會有太大問題,但是DNAT規則似乎也不起作用。該規則未命中,發送的數據包未被修改。 – 2008-10-28 11:11:45

+0

您不能在POSTROUTING鏈上使用DNAT。 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#DNATTARGET – borodimer 2008-10-28 17:11:38

4

假設你知道你發送到哪個機:

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620 
5

你可以重定向162到1620

的iptables -t NAT -A PREROUTING UDP --dport 162 -j REDIRECT --to端口1620