如何正確配置 snmpd?
我安裝
snmp
在 CentOS 上7.2
,如下所示:yum -y install net-snmp net-snmp-utils
我備份了我的
snmpd.conf
文件:cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig
然後我用這個清除了文本:
echo "" > /etc/snmp/snmpd.conf
並添加到
snmpd.conf
以下內容:
rocommunity "#random$" monitoring_server_ip
monitoring_server_ip
是允許連接到此 snmpd 伺服器的伺服器。重啟snmpd
/bin/systemctl restart snmpd
當我在我的 CentOS
7.2
伺服器上執行 snmpwalksnmpwalk -v2c -c public localhost system
然後我得到:
超時:本地主機沒有響應
這是準確的,因為只有一個 IP 地址可以做到這一點,正如我們之前定義的那樣。
ps
顯示snmp
正在執行
/usr/sbin/snmpd -LS0-6d -f
這是我第一次玩,
snmp
非常感謝任何幫助!的輸出
iptables -L -n | grep udp
顯示:... Chain IN_public_allow (1 references) 94 target prot opt source destination 95 ACCEPT udp -- XX.XXX.XXX.XXX 0.0.0.0/0 udp dpt:161 ctstate NEW ...
所有的目的地都過了
0.0.0.0/0
嗎?Netstat 顯示以下埠:
netstat -ulnp | grep 161 udp 0 0 0.0.0.0:161 0.0.0.0:* 19062/snmpd
還有這個:
netstat -lu | grep snmp udp 0 0 0.0.0.0:snmp 0.0.0.0:*
另外,在我的防火牆中,添加了只有一個 IP 地址可以訪問我的 snmp 伺服器:
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="XX.XXX.XXX.XX" port protocol="udp" port="161" accept"
com2sec 安全模型不再是強制性的。
這樣
snmpd.conf
做應該足夠了:rocommunity "#randomsometinh$" 2.2.2.2
其中 2.2.2.2 是允許連接的監控 IP 地址。我通常更喜歡分配單個 IP,而不是授予對整個 /24 的訪問權限。所以這個配置意味著 SNMP 服務將回答來自 2.2.2.2 地址的請求。
出於安全原因,您可能還必須註釋將 snmpd 守護程序限制為 localhost 的行。
# agentAddress udp:127.0.0.1:161
更改配置文件後,執行以下操作:
service restart snmpd
要確認它是否在本地收聽:
$ netstat -lu | grep snmp udp 0 0 *:snmp *:*
並且從允許的網路/IP,用於遍歷整個 MIB 樹。假設 2.2.2.1 是被監控的機器:
snmpwalk -c "#randomsometinh$" -v2c 2.2.2.1
或詢問sysUpTime OID:
snmpwalk -c "#randomsometinh$" -v2c 2.2.2.1 1.3.6.1.2.1.1.3 snmpget -c #randomsometinh$ -v2c 2.2.2.1 1.3.6.1.2.1.1.3.0
snmpget 必須具有特定對象實例/索引的 0。
PS:2.2.2.2是監控伺服器,2.2.2.1是要監控的snmpd伺服器/主機。