通过Linux+SNMP+zabbix的实验理解SNMP协议

本文介绍了SNMP协议的基础知识,包括版本分类、PDU交互和MIB概念。通过Linux+SNMP+zabbix的实验,详细讲解了如何配置SNMPv2c和SNMPv3,以及在Zabbix中添加主机和模板的过程。同时,文章提到了带外管理和带内管理的概念,并给出了配置SNMP时的注意事项。
摘要由CSDN通过智能技术生成

1、前言

SNMP,即简单网络管理协议,是目前广泛采用的一种,实现对IT基础设施进行统一监控、管理的一种网络协议。随着诸如机房、数据中心等建设日益复杂,对IT设备的统一管理成为必须所具备的一个模块,因此为解决这个需求,SNMP出现在大家的视野中。本文将从Linux+SNMP+zabbix这样的一个简单实验来阐述SNMP的一些基础知识。

2、SNMP基本概念

2.1、SNMP分类

2.1.1、按照版本划分

SNMP分为v1、v2c和v3三个版本,这三个版本主要是管理的粗细程度和SNMP客户端与服务端之间验证方式的区别,可以用以下列表概括:

  • SNMPv1:适用于较小规模网络,基于团体字进行明文验证,安全性较低,支持错误码少;
  • SNMPv2c:适用于较大规模网络,基于团体字进行明文验证,安全性较低,在v1基础上扩充更多错误码;
  • SNMPv3:适用于不同规模网络,基于安全用户名或安全上下文进行加密验证,安全性较高,错误码支持较多。

目前在实际环境内,考虑到运维难度等方面的原因,使用v2c版本的情况是最多的。

2.1.2、按照SNMP模块类型划分

  • agent:运行在被管理设备上的一个SNMP代理模块;
  • NMS:管理IT设备的网络管理系统,如:zabbix、weAdmin和华为eSight等。

2.2、SNMP协议中PDU报文的交互

【本小节内容来源:华为AR接入路由器产品文档】
在这里插入图片描述

  • get-request:从代理进程处提取一个或多个参数值。
  • get-next-request:从代理进程处提取紧跟当前参数值的下一个参数值。
  • set-request:设置代理进程的一个或多个参数值。
  • get-response:返回的一个或多个参数值。这个操作是由代理进程发出的,它是对前面3种操作的响应。
  • trap:代理进程主动发出的报文,通知管理进程有某些事件发生

前面3种操作由NMS向Agent发出,后面2种操作由Agent向NMS发出。

2.3、MIB基本介绍

MIB,即管理信息数据库,是由agent维护的,用于被NMS读取的一些数据对象。通常情况下,NMS所展现出的,例如CPU、内存占用率等数值都是读取自MIB。
MIB是一种树状的数据结构,它包含不同标准组织所定义数据对象,较为完整的树状图如下所示:
在这里插入图片描述
通常情况下,我们以对象后面的数字来定义某一个数据对象,这被称为OID。SNMP协议所管理的对象,是图中internet节点(表示为1.3.6.1或iso.3.6.1)的下面所有部分(图中阴影部分),这一点可以在运行SNMP的Linux设备中,通过snmpwalk命令体现出来,而对于其他设备,例如运行SNMP的路由交换设备,则可以用wireshark工具查看SNMP协议交互的PDU报文体现,如下图所示:

在这里插入图片描述
在这里插入图片描述站在SNMP运维的角度,MIB可分为公有MIB和私有MIB两大部分,公有MIB是绝大多数IT设备都必须支持的标准,而私有MIB则定位在MIB树状结构的private(1.3.6.1.4)部分,如1.3.6.1.4.1.2代表的是IBM公司的私有节点,1.3.6.1.4.1.9代表的是思科公司的私有节点。

2.4、带外管理和带内管理

在对IT设备进行管理的方式上,大体上分为带外管理和带内管理两种。其中带外管理指的是管理流量业务流量物理隔离,走不同的网络链路;而带内管理指的是管理流量和业务流量共同使用同一条网络链路。
绝大多数情况下,采用的方式都是带外管理,带外管理的优点在于管理流量不会占用业务的网络带宽资源,另外在业务网络中断的情况下,独立的带外管理链路可以作为远程维护的一个“逃生通道”。

3、实验

3.1、实验拓扑与zabbix官方安装方法链接

本文将采用三台Linux服务器来进行实验,其中一台Linux服务器已经部署了zabbix,另外两台是被zabbix管理的Linux服务器,具体的部署步骤可以参阅zabbix官网,并根据实际的Linux发行版进行安装步骤,相关链接为:https://www.zabbix.com/cn/download
在这里插入图片描述

3.2、配置SNMPv2c(以UOS企业版/Ubuntu/debian为例)

(1)输入“sudo apt install snmpd”命令,在debian系Linux上安装snmpd;
(2)输入“sudo vim /etc/snmp/snmpd.conf”命令编辑配置文件,进行下列修改:
找到agentaddress字段,将IP地址从127.0.0.1修改为0.0.0.0

在这里插入图片描述
找到“view systemonly included”字段,根据实际情况添加所需要监控的OID数值,通常情况下,为方便配置,都是在该位置添加view systemonly included .1这样的配置”

在这里插入图片描述
(3)SNMP的配置文件修改完成后,输入命令“systemctl restart snmpd”重启SNMP服务,重启完成后,配置生效;
在这里插入图片描述
(4)通过命令”snmpwalk -v 2c -c public 192.168.68.139 .1”测试SNMP的MIB能否通过192.168.68.139这个地址读取到,如果读取到,则说明SNMP配置无误;
在这里插入图片描述
(5)登录zabbix,选择“配置—>主机”,然后选择“创建主机”;
在这里插入图片描述
(6)随后,在弹出的对话框的“主机”选项卡中,根据实际情况填入如下信息
在这里插入图片描述
(7)在对话框的模板选项卡中添加Linux的SNMP模板,并保存;
在这里插入图片描述
(8)等待一段时间后,发现“SNMP”标志变为绿色后,则表示SNMP所有配置完成并对接成功;
在这里插入图片描述

3.3、配置SNMPv3(以UOS欧拉版、龙晰版/openEuler/CentOS为例)

(1)输入命令“sudo yum install net-snmp-utils net-snmp”安装SNMP服务;
(2)输入命令“systemctl stop snmpd”确保SNMP的服务处于停止的状态;
(3)输入命令“net-snmp-create-v3-user -ro -A authpasswd -a MD5 -X privpasswd -x DES yanmuhuan”设置SNMPv3的密码、完整性校验方式、加密密钥、加密方式和安全用户名等(需注意的是,debian系Linux的SNMP并不带有net-snmp-create-v3-user命令,如要使用,则需要通过命令“sudo apt install libsnmp-dev”额外安装libsnmp-dev);
在这里插入图片描述
(4)”net-snmp-create-v3-user”命令配置成功的反馈如下:
在这里插入图片描述

(5)输入命令“systemctl start snmpd”重新启动SNMP服务;
(6)输入命令“snmpwalk -v 3 -u yanmuhuan -a MD5 -A authpasswd -x DES -X privpasswd -l authPriv 192.168.68.136”,验证SNMP是否配置成功,如果配置成功,则会表现如下:
在这里插入图片描述
(7)配置zabbix的部分和配置SNMPv2c的部分大体相同,只不过在添加主机时,弹出的对话框应选择SNMPv3,并做如下配置,注意模板仍旧选择Linux的SNMP模板:
在这里插入图片描述
在这里插入图片描述
上图中,zabbix面板出现了安全级别这样的一个选项,该项有三个选项可供选择,分别为noAuthNoPriv(不认证不加密)、authNoPriv(认证但不加密)和authPriv(既认证又加密),此处我们选择authPriv。
(8)所有配置完成后,等待一段时间,直到SNMP标志变为绿色。
在这里插入图片描述

4、注意事项

4.1、通用环境下

(1)在根据zabbix官方网站安装zabbix时,应该尽可能使用新的普通版本或新的LTS版本,否则将很可能出现zabbix和数据库版本不一致的情况,从而安装失败。这是因为所有Linux公网上的软件仓库都是该Linux发行版的最新版本,此时如果使用旧版zabbix,就会因为数据库版本过新而不兼容;
(2)配置SNMPv3的密码时,位数默认不要少于8位数,否则将出现以下错误:
在这里插入图片描述
(3)要保证被管理设备的161端口可以正常访问。

4.2、针对部分最小化安装的Linux发行版(如UOS企业版)在内网环境且没有软件仓库的情况下

针对这样的情况,通行的做法是,使用另一台同CPU架构且可以连接互联网的主机,安装同版本操作系统后,来拉取SNMP的安装包和依赖。需要注意的是,部分Linux发行版(如UOS企业版)在选择最小化安装和基本安装两种方式下,系统所自带的依赖是不同的,因此,如果需要在最小化安装的Linux系统上离线安装SNMP,那么用于在线拉取的Linux也应该是最小化安装,否则在最小化系统上进行离线安装时,将出现依赖不全的情况。

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]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值