使用 iptables 更改目标端口

发布于 2024-07-08 16:15:59 字数 218 浏览 7 评论 0原文

是否可以使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

太阳男子 2024-07-15 16:15:59

假设您知道要发送到哪台机器:

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

Assuming you know which machine you are sending to:

iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination <dest-ip>:1620
风轻花落早 2024-07-15 16:15:59

您可以将 162 重定向到 1620

iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620

you could redirect 162 to 1620

iptables -t nat -A PREROUTING -p UDP --dport 162 -j REDIRECT --to-port 1620
み青杉依旧 2024-07-15 16:15:59

显然不支持这种用法。 取自 http://www.netfilter.org/documentation/HOWTO/NAT- HOWTO.txt

6.3.7。 更改本地生成的连接的目标

NAT 代码允许您插入
DNAT 规则在 OUTPUT 链中,但是
2.4 中不完全支持这一点(它
可以,但是需要一个新的
配置选项,一些测试,
和相当多的编码,所以除非
有人与 Rusty 签约来写它,我
没想到很快)。

当前的限制是您
只能将目的地更改为
本地机器(例如`j DNAT --to
127.0.0.1'),不要发送到任何其他机器,否则回复不会
翻译正确。

This usage is apparently not supported. Taken from http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO.txt:

6.3.7. Altering the Destination of Locally-Generated Connections

The NAT code allows you to insert
DNAT rules in the OUTPUT chain, but
this is not fully supported in 2.4 (it
can be, but it requires a new
configuration option, some testing,
and a fair bit of coding, so unless
someone contracts Rusty to write it, I
wouldn't expect it soon).

The current limitation is that you
can only change the destination to
the local machine (e.g. `j DNAT --to
127.0.0.1'), not to any other machine, otherwise the replies won't
be translated correctly.

柠檬色的秋千 2024-07-15 16:15:59

@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

我三岁 2024-07-15 16:15:59

尝试使用 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.

抹茶夏天i‖ 2024-07-15 16:15:59

您可以设置转移规则,然后使用修改后的端口重新注入数据包。

我之前在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文