Centos

如何正確配置 snmpd?

  • March 15, 2016

我安裝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

當我在我的 CentOS7.2伺服器上執行 snmpwalk

snmpwalk -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伺服器/主機。

引用自:https://unix.stackexchange.com/questions/268959