是否可以使用iptables更改UDP数据包的目标端口?使用iptables更改目标端口
我试图让一个SNMP代理对1620发出的陷阱,而不是162.遗憾的是到目前为止,我只设法改变源端口:
的iptables -t NAT -A POSTROUTING -p UDP --dport 162 -j SNAT --to:1620
是否可以使用iptables更改UDP数据包的目标端口?使用iptables更改目标端口
我试图让一个SNMP代理对1620发出的陷阱,而不是162.遗憾的是到目前为止,我只设法改变源端口:
的iptables -t NAT -A POSTROUTING -p UDP --dport 162 -j SNAT --to:1620
这个用法显然不被支持。取自http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txt:
6.3.7。改变本地产生的连接
NAT代码允许你在OUTPUT链插入 DNAT规则,但
这不是完全2.4的支持(这 能的目标,但它需要一个新的
配置选项,一些测试, 和一点点的编码,所以除非有人约定Rusty写它,我 不会期待它很快)。目前的限制是你 只能更改目的地,以
本地计算机(如:`ĴDNAT --to 127.0.0.1' ),而不是任何其他机器,否则答复不会 被正确翻译。
而不是使SNAT的,试着用DNAT。由于SNAT意味着SourceNAT,因此源端口发生更改,因此DNAT将为您工作。
@PiedPiper是对的。使用DNAT你必须指定一个IP地址,但我们只想做端口重定向,所以-j REDIRECT可能在这种情况下工作。
见http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2
假设你知道你发送到哪个机:
iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620
你可以建立一个转接规则,然后用修改后的端口重新注入数据包。
我做这个Mac OS X上,而回,但它是在Linux上同样的原则: http://blog.dv8.ro/2006/08/using-divert-sockets-on-mac-os-x.html
你基本上需要创建一个非常简单的透明代理。
你可以重定向162到1620
的iptables -t NAT -A PREROUTING UDP --dport 162 -j REDIRECT --to端口1620
获得DNAT工作,你需要-p指定一个ip地址作为 - 到 - 目的地 – PiedPiper 2008-10-28 11:06:26
这在这种情况下不会有太大问题,但是DNAT规则似乎也不起作用。该规则未命中,发送的数据包未被修改。 – 2008-10-28 11:11:45
您不能在POSTROUTING链上使用DNAT。 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#DNATTARGET – borodimer 2008-10-28 17:11:38