我在CentOS上设置了net-snmp,并且遇到了设置非默认端口的问题。 基本上,如果我设置为161或端口32768或更大,它工作正常,但它不适用于10000和32767之间的任何东西。
任何想法可能是什么原因造成的? 这只适用于一台服务器,在其他类似configuration的服务器上工作正常。
以下是/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
SELINUX再次触击。
添加一个规则,允许或禁用selinux。
#getenforce #setenforce permissive
这可能会为selinux创build一个新的规则,但是如果你不理解,最好禁用它,它会再次咬人。
# grep snmp /var/log/audit/audit.log | audit2allow -M mypol # semodule -i mypol.pp
在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