Linux下用iptables完成snmp的端口映射

现有两台机器,服务器A有公网IP 1.1.1.1和内网IP 192.168.0.1,服务器B只有内网IP 192.168.0.2。需要从公网通过snmp协议来监控服务器A和B。由于161端口被服务器A自己使用,所以只能通过端口映射的方式映射服务器A的10161端口到服务器B的161端口来监控服务器B。

具体指令如下:

iptables -t nat -A PREROUTING -d 1.1.1.1/32 -p udp -m udp --dport 10161 -j DNAT --to-destination 192.168.0.1:161 
iptables -t nat -A POSTROUTING -d 192.168.0.2/32 -p udp -m udp --dport 161 -j SNAT --to-source 192.168.0.1 
/etc/init.d/iptables save
/etc/init.d/iptables restart

测试方法:在某一台公网机器上输入以下指令,如有信息输出,则映射完成。

snmpwalk -v 2c -c public 1.1.1.1:10161

如果需要指定snmp监控的服务器的IP,譬如,只允许2.2.2.2的服务器通过snmp协议来获取服务器B的信息,可修改命令如下:

iptables -t nat -A PREROUTING -s 2.2.2.2/32 -d 1.1.1.1/32 -p udp -m udp --dport 10161 -j DNAT --to-destination 192.168.0.1:161 
iptables -t nat -A POSTROUTING -d 192.168.0.2/32 -p udp -m udp --dport 161 -j SNAT --to-source 192.168.0.1 
/etc/init.d/iptables save
/etc/init.d/iptables restart

测试方法:在2.2.2.2的服务器输入snmpwalk指令可以获得输出,在其他服务器上无法获得输出即为到达目标。

除非注明,本博客文章均为原创,转载请以链接形式标明本文地址

本文地址: http://blog.cnwyhx.com/?p=127

Leave a Reply