启用IPTables时无法build立出站SNMP连接

我有一堆使用Windows SNMP代理configuration的Windows服务器。 每个服务器有四个IP地址,SNMP全部监听。

我的监控服务器(这是与net-snmp 5.3.2.2的Centos 5.5 32位)有一些非常奇怪的事情。 如果我closures了iptables ,那么在任何这些服务器上的任何IP地址上执行snmp查询都没有问题。

如果我打开IPtables,那么我只能查询每台服务器上只有一个特定的IP地址。 snmpget Timeout: No Response from xxxx

关于允许哪些IP地址连接到这种行为没有模式。 但是每台机器只有一个IP地址。

这是我的iptablesconfiguration:

 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 5668 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 5668 -j ACCEPT -A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT -A RH-Firewall-1-INPUT -s 172.16.3.0/24 -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT 

我没有任何问题连接出站到任何其他服务器,例如使用wget抓取RPM的。

我曾尝试添加这个作为最后的手段,但也没有喜悦:

 -A OUTPUT -p udp -s 0/0 --sport 1024:65535 -d 0/0 --dport 161:162 -m state --state NEW,ESTABLISHED -j ACCEPT -A INPUT -p udp -s 0/0 --sport 161:162 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT 

这是iptables -L的输出:

连锁input(政策接受)
目标人select源目的地
 RH-Firewall-1-INPUT全部在任何地方
接受udp  - 任何地方udp spts:snmp:snmptrap dpts:1024:65535状态ESTABLISHED

连锁FORWARD(政策接受)
目标人select源目的地
 RH-Firewall-1-INPUT全部在任何地方

链式输出(策略ACCEPT)
目标人select源目的地
接受udp  - 在任何地方udp spts:1024:65535 dpts:snmp:snmptrap状态NEW,ESTABLISHED

连锁RH-Firewall-1-INPUT(2参考)
目标人select源目的地
随时随地接受
接受ICMP  - 任何地方任何地方icmp
接受udp  - 任何地方224.0.0.251 udp dpt:mdns
接受所有 - 任何地方的任何地方状态RELATED,ESTABLISHED
接受tcp  -  172.16.3.0/24任何地方状态新tcp dpt:ssh
接受tcp  - 任何地方的任何地方状态新tcp dpt:ssh
接受tcp  -  172.16.3.0/24任何地方状态新tcp dpt:5668
接受udp  -  172.16.3.0/24任何地方状态新udp dpt:5668
接受tcp  - 任何地方的任何地方状态新tcp dpt:5668
接受udp  - 任何地方任何地方状态新udp dpt:5668
接受tcp  -  172.16.3.0/24任何地方状态新tcp dpt:http
接受tcp  - 任何地方的任何地方状态新tcp dpt:http
接受tcp  -  172.16.3.0/24任何地方状态新tcp dpt:https
接受tcp  - 任何地方的任何地方状态新tcp dpt:https
接受tcp  -  172.16.3.0/24任何地方状态新tcp dpt:mysql
接受tcp  - 任何地方的任何地方状态新tcp dpt:mysql
拒绝所有 - 在任何地方拒绝 - 禁止使用icmp-host

由于在“RH-Firewall-1-INPUT”规则中,您必须在“RH-Firewall-1-INPUT”之前放置“ACCEPT udp – 任何地方udp spts:snmp:snmptrap dpts:1024:65535 state ESTABLISHED”在行的最后,iptables从上到下读取。

  Chain INPUT (policy ACCEPT) target prot opt source destination 1 RH-Firewall-1-INPUT all -- anywhere anywhere 2 ACCEPT udp -- anywhere anywhere udp spts:snmp:snmptrap dpts:1024:65535 state ESTABLISHED 

如果你想使用命令行添加,你可以使用:

  iptables -I OUTPUT 1 -p udp -s 0/0 --sport 1024:65535 -d 0/0 --dport 161:162 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -I INPUT 1 -p udp -s 0/0 --sport 161:162 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT 

应该是这样的

  Chain INPUT (policy ACCEPT) target prot opt source destination 1 ACCEPT udp -- anywhere anywhere udp spts:snmp:snmptrap dpts:1024:65535 state ESTABLISHED 2 RH-Firewall-1-INPUT all -- anywhere anywhere