我想从一个局域网转发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