在 CentOS 8 上安装和配置 SNMP

歡迎來到我們的指南,了解如何在 CentOS 8 上安裝和設定 SNMP。SNMP 代表Simple Network Management Protocol。它是一种 Internet 标准协议,它提供了一种无代理方法来管理和监视网络设备和服务器,以获取运行状况信息、系统指标(如 CPU 负载)、物理内存使用情况、正在运行的进程数、服务状态或支持通过该协议进行轮询的任何其他指标。SNMP

在 CentOS 8 上安装和配置 SNMP

在 CentOS 8 上安裝 Net-SNMP

Net-SNMP是一套应用程序,它提供了一个代理和实用程序,可以使用 SNMP 协议从系统中检索数据。

在安装 Net-SNMP 之前,请确保您的系统软件包是最新的。

dnf update

要在 CentOS 8 上安装 Net-SNMP(SNMP 代理、SNMP 守护程序和其他 SNMP 实用程序),只需执行以下命令即可;

dnf install net-snmp net-snmp-libs net-snmp-utils

在 CentOS 8 上运行 SNMP 守护程序

安装snmpd后,Net-SNMP 将创建一个名为 的 SystemD 服务。可以使用 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 Wed 2020-03-04 20:36:52 EAT; 2s ago
 Main PID: 3017 (snmpd)
    Tasks: 1 (limit: 11500)
   Memory: 4.8M
   CGroup: /system.slice/snmpd.service
           └─3017 /usr/sbin/snmpd -LS0-6d -f

Mar 04 20:36:52 centos8.kifarunix-demo.com systemd[1]: Stopped Simple Network Management Protocol (SNMP) Daemon..
Mar 04 20:36:52 centos8.kifarunix-demo.com systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
Mar 04 20:36:52 centos8.kifarunix-demo.com snmpd[3017]: NET-SNMP version 5.8
Mar 04 20:36:52 centos8.kifarunix-demo.com systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..

重新启动 SNMP 守护程序;

systemctl restart snmpd

在 CentOS 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.58.9 system
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos8.kifarunix-demo.com 4.18.0-147.5.1.el8_1.x86_64 #1 SMP Wed Feb 5 02:00:39 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (7884) 0:01:18.84
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: centos8.kifarunix-demo.com
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00

要更新此信息,只需打开SNMPD配置文件,然后调整上述对象的值;/etc/snmp/snmpd.conf

vim /etc/snmp/snmpd.conf

请注意,默认情况下,该对象的值设置为系统主机名。因此,并且可以在"系统联系人信息"部分下的配置文件中进行设置。sysNamesysLocationsysContact

###############################################################################
# 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 <root@localhost> (configure /etc/snmp/snmp.local.conf)
syslocation Serverfarm, DC2, Rack 3
syscontact Kifarunix-Admin <admin@kifarunix-demo.com>

保存配置文件并重新加载 SNMPD 以影响更改。

systemctl reload snmpd

验证更改;

snmpwalk -v2c -c public localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos8.kifarunix-demo.com 4.18.0-147.5.1.el8_1.x86_64 #1 SMP Wed Feb 5 02:00:39 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (138942) 0:23:09.42
SNMPv2-MIB::sysContact.0 = STRING: Kifarunix-Admin <admin@kifarunix-demo.com>
SNMPv2-MIB::sysName.0 = STRING: centos8.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、2c3

  • 版本 1 和 2c 都使用community string提供身份验证,这是代理和客户端之间的共享密钥,通过网络以明文形式传递。
  • 版本 3 支持使用各种协议的用户身份验证和消息加密,因此更加安全。

在 CentOS 8 上配置 SNMP 版本 2c 社群

如上所述,SNMP v2 使用权限指令、社区字符串和源地址提供访问权限。源地址可以是 Nagios Server(SNMP 服务器)的 IP。此指令应以以下格式设置;

directive community [source [OID]]

其中指令可以是rocommunity(提供只读访问)或​​​​​​​rwcommunity(提供读写访问),OID 是可选的 SNMP 树来提供访问。

例如,要配置SNMP v2c以允许从特定源主机(如Nagios等监视服务器)到使用社区字符串monsvronly的系统对象进行只读访问,只需在snmpd配置文件中输入下面的行即可。

rocommunity monsvronly 192.168.58.8

您可以使用以下命令;

echo -e "# SNMP version 2c community\nrocommunity monsvronly 192.168.58.8" >> /etc/snmp/snmpd.conf

允许访问的远程服务器的 IP 在哪里。192.168.58.8

要允许来自本地主机,请添加行;

rocommunity monsvronly 127.0.0.1

配置 SNMP 守护程序连接端口

默认情况下,SNMP 守护程序代理在 UDP 端口 161 上接收请求。但是,默认情况下,SNMPd 不会打开此端口。

要将 SNMPd 配置为通过 UDP 端口 161 侦听环回和 IP 接口,您需要编辑 snmpd systemd 启动脚本,如下所示;/lib/systemd/system/snmpd.service

vim /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.56.9:161

服务器接口 IP 在哪里。192.168.58.9

这样你的配置看起来像;

[Unit]
Description=Simple Network Management Protocol (SNMP) Daemon.
After=syslog.target network.target

[Service]
Type=notify
Environment=OPTIONS="-LS0-6d"
EnvironmentFile=-/etc/sysconfig/snmpd
#ExecStart=/usr/sbin/snmpd $OPTIONS -f
ExecStart=/usr/sbin/snmpd $OPTIONS -f udp:127.0.0.1:161 udp:192.168.58.9:161
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

保存配置文件并重新加载系统化单元;

systemctl daemon-reload

重新启动 SNMP 守护程序。

systemctl restart snmpd

验证 UDP 端口 161 是否已打开。

netstat -alun | grep 161
udp        0      0 192.168.58.9:161      0.0.0.0:*                          
udp        0      0 127.0.0.1:161           0.0.0.0:*

打开防火墙 D 上的 SNMP 端口

如果防火墙正在运行,请运行以下命令以打开 SNMPd 端口

firewall-cmd --add-port=161/udp --permanent
firewall-cmd --reload

验证连接性

测试来自允许的远程主机的连接。

检查服务器上的 UDP 端口是否可访问。

nc -uvz 192.168.58.9 161
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.58.9:161.
Ncat: UDP packet sent successfully
Ncat: 1 bytes sent, 0 bytes received in 2.03 seconds.

测试是否可以使用和读取输出的前 10 行来查询服务器上的 SNMP 对象。snmpwalk

snmpwalk -v2c -c monsvronly 192.168.58.9 | head -10
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos8.kifarunix-demo.com 4.18.0-147.3.1.el8_1.x86_64 #1 SMP Fri Jan 3 23:55:26 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (732) 0:00:07.32
SNMPv2-MIB::sysContact.0 = STRING: Kifarunix-Admin <admin@kifarunix-demo.com>
SNMPv2-MIB::sysName.0 = STRING: centos8.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
...

在 CentOS 8 上配置 SNMP 版本 3

SNMP v3 使用usernamepermission 、​​​​​​​​​​​​​​security levelauthenticationprivacy passphrases来允许访问。​​​​​​​​​​​​​​

因此,您需要创建用于身份验证的用户。创建后,用户将添加到以下配置文件中; /etc/snmp/snmpd.conf/var/lib/net-snmp/snmpd.conf。​​​​​​​

在继续之前,请像上面一样制作原始配置文件的副本。

cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak

注释上面添加的 snmp V2 配置行;

# rocommunity monsvronly 127.0.0.1
# rocommunity monsvronly 192.168.58.8

停止 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 STrP@SSWRD -a SHA -X STr0ngP@SSWRD -x AES snmpadmin
adding the following line to /var/lib/net-snmp/snmpd.conf:
   createUser snmpadmin SHA "STrP@SSWRD" AES "STr0ngP@SSWRD"
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 STrP@SSWRD -x AES -X STr0ngP@SSWRD -l authPriv -u snmpadmin localhost | head
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos8.kifarunix-demo.com 4.18.0-147.3.1.el8_1.x86_64 #1 SMP Fri Jan 3 23:55:26 UTC 2020 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (5705) 0:00:57.05
SNMPv2-MIB::sysContact.0 = STRING: Kifarunix-Admin <admin@kifarunix-demo.com>
SNMPv2-MIB::sysName.0 = STRING: centos8.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 STrP@SSWRD -x AES -X STr0ngP@SSWRD -l authPriv -u snmpadmin 192.168.58.9 | head
SNMPv2-MIB::sysDescr.0 = STRING: Linux centos8.kifarunix-demo.com 4.18.0-147.3.1.el8_1.x86_64 #1 SMP Fri Jan 3 23:55:26 UTC 2020 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 <admin@kifarunix-demo.com>
SNMPv2-MIB::sysName.0 = STRING: centos8.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

宏伟!!!您已成功在 CentOS 8 上安装和配置 SNMP。现在,您可以从远程监视服务器轮询系统指标。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux环境下的snmp测试脚本, Installing SNMPv2C Agent Conformance Test Package 2008/04/08 IPv6 Promotion Council Terminology =========== Tester Node (TN) A tester node for the conformance tests. Node Under Test (NUT) A testee node for the conformance tests. Network Under Test The network where the conformance tests are executed. Tester Interface The network interface of TN hooked up to the Network Under Test. Interface Under Test The network interface of NUT hooked up to the Network Under Test. Prerequisites ============= Prerequisites for TN: - The package supports FreeBSD 6.0-RELEASE or higher version. - The package can also coexist with FreeBSD version of KAME. Installing the package onto TN ============================== 0. Before Starting (A) You need to install following softwares. - Perl (Required version : 5.8.7 or higher) - Net-SNMP (Required version : 5.3.1 or higher) *** You can download it from the following URL: http://net-snmp.sourceforge.net/ - v6eval (Required version : 3.0.11 or higher) Please refer to 00README.v6eval in "v6eval" for more information. *** You can download it from the following URL: http://www.tahi.org/release/ - koi (Required version : 1.1.1 or higher) Please refer to README file in "koi" package for more information. *** You can download it from the following URL: http://www.tahi.org/release/ 1. Extracting ct package % tar zxvf ct-snmpv2c-ag-X.X.tar.gz 2. Copying ct package Copy ct directory to any directory you like. % cp -pR $ORGDIR/ct-snmpv2c-ag-X.X $SOMEWHERE/ct-snmpv2c-ag-X.X % chmod -R +w $SOMEWHERE/ct-snmpv2c-ag-X.X 4. Setup ct environment % (enable TN's ipv6 capibility) % cd $SOMEWHERE/ct-snmpv2c-ag-X.X % edit config.txt % make test [End of INSTALL]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值