SNMP端口转发的一种方式

我想从一个局域网转发snmp到另一个局域网。 我相信我有一种办法(从外到内),但可惜的是,box1似乎无法回复。 (从内到外)

我想做的设置:

box1 box2 box3 [10.1.255.245] -------------------------- [public_ip] | eth0-|-eth1 | |-----------3161---------------- 3161 ----| 

这些是与BOX 2相关的iptables规则,

 -A PREROUTING -i eth1 -p udp -m udp --dport 3161 -j DNAT --to-destination 10.1.255.244:3161 -A FORWARD -d 10.1.255.244/32 -p udp -m udp --dport 3161 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 

现在我validation了来自box3的包是在box1中收到的。

 tcpdump 'port 3161' tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 13:46:03.887718 IP x-20150810-092601.x.be.53329 > compute-0-2.local.doc1lm: UDP, length 48 13:46:04.888851 IP x-20150810-092601.x.be.53329 > compute-0-2.local.doc1lm: UDP, length 48 13:46:05.889977 IP x-20150810-092601.x.be.53329 > compute-0-2.local.doc1lm: UDP, length 48 13:46:06.891108 IP x-20150810-092601.x.be.53329 > compute-0-2.local.doc1lm: UDP, length 48 

所以我假设snmp进程无法响应的位置,因为它不知道如何find这个局外ip …我怎么能添加这个? 这是box1上的路线:

 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 255.255.255.255 * 255.255.255.255 UH 0 0 0 eth0 box2 box2 255.255.255.255 UGH 0 0 0 eth0 224.0.0.0 * 255.255.255.0 U 0 0 0 eth0 10.1.0.0 * 255.255.0.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 1002 0 0 eth0 link-local * 255.255.0.0 U 1003 0 0 eth1 192.168.0.0 * 255.255.0.0 U 0 0 0 eth1 default storage 0.0.0.0 UG 0 0 0 eth1 

还是我缺less其他明显的东西?

SNMP工作槽UDP,所以没有会话,就像TCP一样。 因此,您应该在box2上添加额外的NAT条目,以允许从box1到box3的数据包。

像这样的东西:

 -A PREROUTING -i eth0 -p udp -m udp --dport 3161 -j DNAT --to-destination <RealIP>:3161 -A FORWARD -d <RealIP>/32 -p udp -m udp --dport 3161 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT