我们有一个系统,可以接收来自各种设备的陷阱。
由于系统不以 的身份运行(并且无法运行)root
,因此它会监听非默认端口(在我们的例子中是 2162 而不是 162)。
问题是我们管理的某些设备始终将其陷阱发送到默认的 162 端口。
因此,我们需要将从端口 162 传入的陷阱转发到端口 2162。
我尝试了以下操作,但没有作用(它没有转发任何内容):
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 162 -j REDIRECT --to-port 2162
iptables -A FORWARD -p udp --dport 2162 -j ACCEPT
我是一名软件工程师,而不是系统管理员,对 iptables、网络、NAT 等了解甚少。
我在谷歌上搜索了一下,得到了上述陈述。
由于 UDP 数据包的发送者非常重要,我们不能简单地创建一个以 root 身份运行的小进程,该进程在端口 162 上接收陷阱并创建新的陷阱并将其发送到端口 2162。
这会改变发送地址。
的输出iptables -t nat -L -n -v
为:
Chain PREROUTING (policy ACCEPT 11339 packets, 2709K bytes)
pkts bytes target prot opt in out source destination
0 0 DNAT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to::2162
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to:163.162.154.208:2162
0 0 REDIRECT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 redir ports 2162
0 0 REDIRECT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 redir ports 2162
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to:163.162.154.208:2162
0 0 DNAT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to::2162
0 0 DNAT udp -- eth0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:162 to::2162
Chain POSTROUTING (policy ACCEPT 80991 packets, 5033K bytes)
pkts bytes target prot opt in out source destination
5 470 SNAT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2162 to:163.162.154.208
Chain OUTPUT (policy ACCEPT 80993 packets, 5033K bytes)
pkts bytes target prot opt in out source destination
而输出iptables -L -n -v
是:
Chain INPUT (policy ACCEPT 3372K packets, 561M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2163
0 0 ACCEPT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2162
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:2162
0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:162
0 0 ACCEPT udp -- * * 0.0.0.0/0 163.162.154.208 udp dpt:2162 state NEW,RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 3349K packets, 733M bytes)
pkts bytes target prot opt in out source destination
的输出netstat -lnup | grep 2162
为:
udp 0 0 :::2162 :::* 13871/java