我在 CentOS 上设置 net-snmp,设置非默认端口时出现问题。基本上,如果我将其设置为 161 或端口 32768 或更高,它就可以正常工作,但对于 10000 到 32767 之间的任何端口,它都不起作用。
知道是什么原因造成的吗?它只针对一台服务器,在其他类似配置的服务器上运行良好。
以下是日志/var/log/messages
:
May 3 11:15:27 oninfra01 snmpd[27709]: Error opening specified endpoint "5161"
May 3 11:15:27 oninfra01 kernel: type=1400 audit(1336058127.584:57070): avc: denied { name_bind } for pid=27709 comm="snmpd" src=5161 scontext=unconfined_u:system_r:snmpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=udp_socket
May 3 11:15:27 oninfra01 kernel: type=1400 audit(1336058127.584:57071): avc: denied { name_bind } for pid=27709 comm="snmpd" src=5161 scontext=unconfined_u:system_r:snmpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=udp_socket
May 3 11:15:27 oninfra01 snmpd[27709]: Server Exiting with code 1
答案1
SELINUX 再次来袭。
添加允许它的规则或禁用 selinux。
#getenforce
#setenforce permissive
这可能对为 selinux 创建新规则有用,但如果您不理解它,最好禁用它,它会再次咬人。
# grep snmp /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
答案2
在 SELinux 中允许 snmp 有更多端口的方法如下
semanage port -a -t snmp_port_t -p tcp 10000-32767
semanage port -a -t snmp_port_t -p udp 10000-32767
(命令可能需要一段时间才能运行,这是正常的,因为 SELinux 会编译其规则集)
检查是否正常:
semanage port -l | grep snmp