如何让RHEL7的防火墙的SNMP连接通过?

如何让RHEL7的防火墙的SNMP连接通过?

如何让RHEL7的防火墙的SNMP连接通过?

当我在计算机上执行此命令时:

systemctl stop firewalld

所有 SNMP 数据包均顺利通过。当我重新启动防火墙时,所有数据包都被阻止。当然,我在防火墙运行的情况下尝试了几种配置,例如:

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 161 -j ACCEPT

或者

firewall-cmd --zone=public --add-port=161/tcp --permanent

我没有收到任何错误消息,但 SNMP 仍处于超时状态。

答案1

正确的方法是将 SNMP 配置文件添加到firewalld。使用 UDP 161 而不是 TCP

vim /etc/firewalld/services/snmp.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SNMP</short>
  <description>SNMP protocol</description>
  <port protocol="udp" port="161"/>
</service>

那么你应该重新加载你的防火墙

firewall-cmd --reload

然后您需要将服务添加到您的公共区域

firewall-cmd --zone=public --add-service snmp --permanent

然后最后再次重新加载防火墙

firewall-cmd --reload

答案2

SNMP 是 udp 与 tcp 的对比。更改规则中的协议,它应该可以工作。

答案3

您需要打开 161/udp 端口​​(而不是 tcp):

firewall-cmd --zone=public --add-port=161/udp --permanent
firewall-cmd --reload

或者使用这些命令创建一个新的 SNMP 服务(改编自文档 - 操作方法 - 添加服务 |防火墙):

firewall-cmd --permanent --new-service=snmp
firewall-cmd --permanent --service=snmp --set-description="SNMP protocol"
firewall-cmd --permanent --service=snmp --set-short=SNMP
firewall-cmd --permanent --service=snmp --add-port=161/udp
firewall-cmd --permanent --service=snmp --add-protocol=udp

然后使用您全新的 SNMP 服务:

firewall-cmd --zone=public --add-service snmp --permanent
firewall-cmd --reload

相关内容