将SNMP陷阱转发到不同的端口

我们有一个从各种设备接收陷阱的系统。
由于系统不以root身份运行(并且不能运行),所以它监听非默认端口(在我们的例子中是2162而不是162)。
问题是我们pipe理的一些设备总是把它们的陷阱发送到默认的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

我是软件工程师,而不是系统pipe理员,对于iptables,networking,NAT等知之甚less。
我得到了上面的一些谷歌search一点。

由于UDP数据包的发送者是非常重要的,我们不能简单地创build一个以root身份运行的小进程来接收端口162上的陷阱并创build新的进程发送到端口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的输出 netstat -lnup | grep 2162是:

 udp 0 0 :::2162 :::* 13871/java