使用 iptables 更改目标端口
是否可以使用 iptables 更改 UDP 数据包的目标端口?
我正在尝试让 SNMP 代理在 1620 而不是 162 上发送陷阱。不幸的是,到目前为止我只能更改源端口:
iptables -t nat -A POSTROUTING -p udp --dport 162 -j SNAT --to :1620
Is it possible to change the destination port of a UDP packet using iptables?
I'm trying to get an SNMP agent to send out traps on 1620 instead of 162. Unfortunately so far I've only managed to change the source port:
iptables -t nat -A POSTROUTING -p udp
--dport 162 -j SNAT --to :1620
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
假设您知道要发送到哪台机器:
Assuming you know which machine you are sending to:
您可以将 162 重定向到 1620
you could redirect 162 to 1620
显然不支持这种用法。 取自 http://www.netfilter.org/documentation/HOWTO/NAT- HOWTO.txt:
This usage is apparently not supported. Taken from http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txt:
@PiedPiper 是对的。 使用 DNAT 时,您必须指定 IP 地址,但我们只想进行端口重定向,因此 -j REDIRECT 在这种情况下可能有效。
请参阅 http://www.netfilter.org/文档/HOWTO//NAT-HOWTO-6.html#ss6.2
@PiedPiper was right. With DNAT you must specify an ip address, but we only want to do port redirection, so -j REDIRECT may work in this case.
See http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html#ss6.2
尝试使用 DNAT,而不是进行 SNAT。 源端口发生更改,因为 SNAT 意味着 SourceNAT,因此 DNAT 将为您工作。
Instead of making SNAT, try with DNAT. The source port gets changed because SNAT means SourceNAT, so DNAT will work for you.
您可以设置转移规则,然后使用修改后的端口重新注入数据包。
我之前在 Mac OS X 上做过这个,但在 Linux 上也是同样的原理:
http://blog.dv8。 ro/2006/08/using-divert-sockets-on-mac-os-x.html
您基本上需要创建一个非常简单的透明代理。
You could set up a divert rule and then re-inject the packet with the modified port.
I've done this a while back on Mac OS X but it's the same principle on Linux:
http://blog.dv8.ro/2006/08/using-divert-sockets-on-mac-os-x.html
You basically need to create a very simple transparent proxy.