按照本教程学习如何在 Rocky Linux 8 上安装和配置 SNMP。 SNMP 代表 秒实施 N网络 米管理 磷协议。 它是一种 Internet 标准协议,提供了一种无代理方法来管理和监控网络设备和服务器的健康信息、系统指标,例如 CPU 负载、物理内存使用情况、正在运行的进程数量、服务状态或支持轮询的任何其他指标这 SNMP
协议。
在 Rocky Linux 8 上安装和配置 SNMP
在 Rocky Linux 8 上安装 Net-SNMP
Net-SNMP 是一套应用程序,它提供了一个代理和实用程序,可以使用 SNMP 协议从系统中检索数据。
在安装 Net-SNMP 之前,请确保您的系统包是最新的。
dnf update
要在 Rocky Linux 8 上安装 Net-SNMP(SNMP 代理、SNMP 守护程序和其他 SNMP 实用程序),只需执行以下命令;
dnf install net-snmp net-snmp-libs net-snmp-utils
在 Rocky Linux 8 上运行 SNMP 守护进程
安装后,Net-SNMP 会创建一个名为的 SystemD 服务 snmpd
. 可以使用 systemctl 命令管理该服务。
例如,启动并使其在系统引导时运行;
systemctl enable --now snmpd
检查状态;
systemctl status snmpd
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon. Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2021-08-06 23:14:51 EAT; 4s ago Main PID: 6113 (snmpd) Tasks: 1 (limit: 4938) Memory: 7.7M CGroup: /system.slice/snmpd.service └─6113 /usr/sbin/snmpd -LS0-6d -f Aug 06 23:14:48 nfs.kifarunix-demo.com systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon.... Aug 06 23:14:51 nfs.kifarunix-demo.com snmpd[6113]: NET-SNMP version 5.8 Aug 06 23:14:51 nfs.kifarunix-demo.com systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
重新启动 SNMP 守护进程;
systemctl restart snmpd
在 Rocky Linux 8 上配置 SNMP
Net-SNMP 安装完成后,继续对其进行配置,使您能够远程轮询系统指标。
Net-SNMP 代理守护进程的默认配置文件是 /etc/snmp/snmpd.conf
. 该文件受到高度评价,因此,我们只会进行一些更改。 因此,请在继续之前制作原始文件的副本。
cp /etc/snmp/snmpd.conf{,orig}
配置系统信息
默认情况下,Net-SNMP 提供基本信息,例如 主机名、位置、管理员联系信息 关于系统。 此信息由对象的值提供 sysName
, sysLocation
和 sysContact
分别。
要使用 SNMP 列出默认系统信息,只需使用 snmpwalk
带有默认版本 2 社区字符串的命令, public
. 确保 SNMP 守护进程正在运行,然后才能运行以下命令;
snmpwalk -v2c -c public localhost system
您甚至可以尝试使用服务器IP;
snmpwalk -v2c -c public 192.168.60.19 system
SNMPv2-MIB::sysDescr.0 = STRING: Linux rocky8.kifarunix-demo.com 4.18.0-305.10.2.el8_4.x86_64 #1 SMP Tue Jul 20 20:34:55 UTC 2021 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (467) 0:00:04.67 SNMPv2-MIB::sysContact.0 = STRING: Root <[email protected]> (configure /etc/snmp/snmp.local.conf) SNMPv2-MIB::sysName.0 = STRING: rocky8.kifarunix-demo.com SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf) SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.5 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORID.6 = OID: TCP-MIB::tcpMIB SNMPv2-MIB::sysORID.7 = OID: IP-MIB::ip SNMPv2-MIB::sysORID.8 = OID: UDP-MIB::udpMIB
要更新系统信息,只需打开 SNMPD 配置文件, /etc/snmp/snmpd.conf
并调整上述对象的值;
vim /etc/snmp/snmpd.conf
请注意,该值 sysName
object 默认设置为系统主机名。 因此, sysLocation
和 sysContact
可以在配置文件下设置 System contact information
部分。
在下面评论这些默认行;
#syslocation Unknown (edit /etc/snmp/snmpd.conf)
#syscontact Root <[email protected]> (configure /etc/snmp/snmp.local.conf)
这样它可能看起来像下面的配置所示;
############################################################################### # System contact information # # It is also possible to set the sysContact and sysLocation system # variables through the snmpd.conf file: # Comment the default lines below #syslocation Unknown (edit /etc/snmp/snmpd.conf) #syscontact Root <[email protected]> (configure /etc/snmp/snmp.local.conf) syslocation Serverfarm, DC2, Rack 3 syscontact Kifarunix-Admin <[email protected]>
Save 配置文件并重新加载 SNMPD 以使更改生效。
systemctl reload snmpd
验证更改;
snmpwalk -v2c -c public localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux rocky8.kifarunix-demo.com 4.18.0-305.10.2.el8_4.x86_64 #1 SMP Tue Jul 20 20:34:55 UTC 2021 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (75513) 0:12:35.13 SNMPv2-MIB::sysContact.0 = STRING: Kifarunix-Admin <[email protected]> SNMPv2-MIB::sysName.0 = STRING: rocky8.kifarunix-demo.com SNMPv2-MIB::sysLocation.0 = STRING: Serverfarm, DC2, Rack 3 SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
配置 SNMP 认证
SNMP 支持三个版本的 SNMP 协议; version 1
, 2c
和 3
.
- 版本 1 和 2c 都使用
community string
,代理和客户端之间的共享秘密,通过网络以明文形式传递。 - 版本 3 支持使用各种协议的用户身份验证和消息加密,因此更安全一些。
在 Rocky Linux 8 上配置 SNMP 版本 2c 社区
如上所述,SNMP v2 使用权限指令、社区字符串和源地址提供访问。 源地址可以是 Nagios Server(SNMP 服务器)的 IP。 这个指令应该在格式中设置;
directive community [source [OID]]
指令可以在哪里 rocommunity
(提供只读访问权限)或 rwcommunity
(提供读写访问权限),OID 是提供访问权限的可选 SNMP 树。
例如,配置 SNMP v2c 以允许 read-only
从一个访问 specific source host
,像 Nagios 等监控服务器,使用社区字符串到系统对象, monsvronly
, 只需在 snmpd 配置文件中输入以下行。
rocommunity monsvronly 192.168.58.8
您可以使用下面的命令;
echo -e "# SNMP version 2c communitynrocommunity monsvronly 192.168.58.8" >> /etc/snmp/snmpd.conf
在哪里 192.168.58.8
是允许访问的远程服务器的 IP。
要允许来自本地主机,请添加以下行;
rocommunity monsvronly 127.0.0.1
配置 SNMP 守护程序连接端口
默认情况下,SNMP 守护程序代理在 UDP 端口 161 上接收请求。但是,默认情况下 SNMPd 不打开此端口。
要将 SNMPd 配置为通过 UDP 端口 161 侦听环回和 IP 接口,您需要编辑 snmpd systemd 启动脚本, /lib/systemd/system/snmpd.service
如下所示;
替换行:
ExecStart=/usr/sbin/snmpd $OPTIONS -f
和;
ExecStart=/usr/sbin/snmpd $OPTIONS -f udp:127.0.0.1:161 udp:192.168.60.19:161
在哪里 192.168.60.19
是服务器接口IP。
通过运行下面的命令;
sed -i '/$OPTIONS -f/ s/$/ udp:127.0.0.1:161 udp:192.168.56.9:161/' /lib/systemd/system/snmpd.service
这样你的配置看起来像;
cat /lib/systemd/system/snmpd.service
[Unit] Description=Simple Network Management Protocol (SNMP) Daemon. After=syslog.target network-online.target [Service] Type=notify Environment=OPTIONS="-LS0-6d" EnvironmentFile=-/etc/sysconfig/snmpd ExecStart=/usr/sbin/snmpd $OPTIONS -f udp:127.0.0.1:161 udp:192.168.60.19:161 ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
Save 配置文件并重新加载 systemd 单元;
systemctl daemon-reload
重新启动 SNMP 守护进程。
systemctl restart snmpd
验证 UDP 端口 161 是否已打开。
netstat -alun | grep 161
UNCONN 0 0 192.168.60.19:161 0.0.0.0:* UNCONN 0 0 127.0.0.1:161 0.0.0.0:*
在 FirewallD 上打开 SNMP 端口
如果 firewalld 正在运行,请运行以下命令打开 SNMPd 端口
firewall-cmd --add-port=161/udp --permanent firewall-cmd --reload
验证连接
测试来自允许的远程主机的连接。
检查服务器上的 UDP 端口是否可达。
nc -uvz 192.168.60.19 161
Ncat: Version 7.70 ( https://nmap.org/ncat ) Ncat: Connected to 192.168.60.19:161. Ncat: UDP packet sent successfully Ncat: 1 bytes sent, 0 bytes received in 2.03 seconds.
测试您是否可以使用以下命令查询服务器上的 SNMP 对象 snmpwalk
并读取输出的前 10 行。
snmpwalk -v2c -c monsvronly 192.168.60.19 | head -10
确保您从允许的主机运行上述命令。
SNMPv2-MIB::sysDescr.0 = STRING: Linux rocky8.kifarunix-demo.com 4.18.0-305.10.2.el8_4.x86_64 #1 SMP Tue Jul 20 20:34:55 UTC 2021 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (486) 0:00:04.86 SNMPv2-MIB::sysContact.0 = STRING: Kifarunix-Admin <[email protected]> SNMPv2-MIB::sysName.0 = STRING: rocky8.kifarunix-demo.com SNMPv2-MIB::sysLocation.0 = STRING: Serverfarm, DC2, Rack 3 SNMPv2-MIB::sysORLastChange.0 = Timeticks: (1) 0:00:00.01 SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance ...
在 Rocky Linux 8 上配置 SNMP 版本 3
SNMP v3 使用 username
, permission
, security level
, authentication
和 privacy passphrases
允许访问。
因此,您需要创建用户进行身份验证。 创建时,用户被添加到以下配置文件中; /etc/snmp/snmpd.conf
和 /var/lib/net-snmp/snmpd.conf
.
在继续之前,请像我们上面所做的那样复制原始配置文件。
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
注释上面添加的 snmp V2 配置行;
sed -i '/^rocommunity/ s/^/#/' /etc/snmp/snmpd.conf
停止 SNMP 守护进程
systemctl stop snmpd
使用以下命令创建只读身份验证用户 net-snmp-create-v3-user
命令。 命令语法是;
net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA] [-X privpass][-x DES|AES] [username]
例如;
net-snmp-create-v3-user -ro -A [email protected] -a SHA -X [email protected] -x AES snmpadmin
示例命令输出;
adding the following line to /var/lib/net-snmp/snmpd.conf: createUser snmpadmin SHA "[email protected]" AES "[email protected]" adding the following line to /etc/snmp/snmpd.conf: rouser snmpadmin
启动 SNMP 守护进程
systemctl start snmpd
启用 SNMP 守护程序以在系统重新启动时运行。
systemctl enable snmpd
像上面一样将入站防火墙规则配置为 UDP 端口 161。
测试以验证一切是否按预期工作。
snmpwalk -v3 -a SHA -A [email protected] -x AES -X [email protected] -l authPriv -u snmpadmin localhost | head
SNMPv2-MIB::sysDescr.0 = STRING: Linux rocky8.kifarunix-demo.com 4.18.0-305.10.2.el8_4.x86_64 #1 SMP Tue Jul 20 20:34:55 UTC 2021 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (1775) 0:00:17.75 SNMPv2-MIB::sysContact.0 = STRING: Kifarunix-Admin <[email protected]> SNMPv2-MIB::sysName.0 = STRING: rocky8.kifarunix-demo.com SNMPv2-MIB::sysLocation.0 = STRING: Serverfarm, DC2, Rack 3 SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
从远程主机验证;
snmpwalk -v3 -a SHA -A [email protected] -x AES -X [email protected] -l authPriv -u snmpadmin 192.168.60.19 | head
SNMPv2-MIB::sysDescr.0 = STRING: Linux rocky8.kifarunix-demo.com 4.18.0-305.10.2.el8_4.x86_64 #1 SMP Tue Jul 20 20:40:55 UTC 2021 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (22366) 0:03:43.66 SNMPv2-MIB::sysContact.0 = STRING: Kifarunix-Admin <[email protected]> SNMPv2-MIB::sysName.0 = STRING: rocky8.kifarunix-demo.com SNMPv2-MIB::sysLocation.0 = STRING: Serverfarm, DC2, Rack 3 SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
华丽的!!! SNMP 已配置!
关于如何在 Rocky Linux 8 上安装和配置 SNMP 的指南到此结束。
您现在可以从远程监控服务器轮询系统指标。
相关教程:
AlienVault USM/OSSIM 上 Linux 主机的 Nagios SNMP 监控
在 Debian 10 Buster 上安装和配置 SNMP
如何在 Debian 9 上配置 SNMP 版本 3