文章目录
SNMP概述
SNMP原理
- SNMP(简单网络管理协议),用来实现设备的统一管理。所有支持SNMP协议的网络设备,网络管理员都可将其统一纳入管理。
- SNMP的发展
- SNMPv2c
- GetBulk:实现了NMS对被管理设备的信息群查询。
- Inform:被管理设备向NMS(网络管理系统)主动发送告警,需要NMS进行接受确认。
- SNMPv3
- 适应性强:适应于多种操作环境,既可以管理最简单的网络,又能够满足复杂网络的管理需求。
- 方便管理:SNMP框架体系由多个功能相对独立的子系统或应用程序集合而成,因而可以很方便地对其进行管理。例如,若系统发生了故障,可以根据发生故障的功能类型,定位到相应的子系统。
- 扩展性好:可以很方便地进行系统扩展。比如,为了应用新的安全协议,就可以在安全子系统中为其定义单独的模块,从而在SNMP中支持该协议。
SNMP管理模型
- 基本概念:
- NMS:又称为对象命名树,采用SNMP协议对网络设备进行管理的系统。
- Agent:被管理设备中的一个代理进程,与NMS进行交互。
- MIB:被管理设备所维护的变量(能够被Agent查询和设置的信息)构成的数据库。
- Management object:被管理的对象,如设备中的某个硬件(如接口板),也可以是在硬件或软件上配置的参数集合。
- Device:被管理的设备。
基本操作
- NMS通过SNMPv3向被管理设备下发查询和设置操作指令,并接收操作响应信息,同时监听被管理设备发送的告警信息。
MIB
- MIB是一个数据库,其在数据库中定义了被管理设备的一系列属性:对象标识符(OID)、对象的状态、对象的访问权限、对象的数据类型等。
- MIB分为公有MIB和私有MIB。
- 常见MIB节点
SNMPv3与v1、v2相比
- SNMP v3版本较v1、v2c在安全性方面做了提升。
- 基本概念:
- 用户组:拥有特定安全级别属性的一个用户集合。安全级别:
- 1级:private(鉴权且加密)
- 2级:authentication(只鉴权)
- 3级:noauthentication(不鉴权不加密)
- 视图:允许用户访问的MIB节点集合。
- SNMPv3安全性增强,具体表现为:
- 用户安全模块USM
- 身份验证:Agent或NMS接到信息时首先必须确认信息是否来自有权限的NMS或Agent,并且信息在传输过程中未被改变。
- 数据加密:通过对称密钥系统,NMS和Agent共享同一密钥对数据进行加密和解密。
- 基于视图的访问控制模块VACM:对用户组实现基于视图的访问控制。
SNMP交互-Get
以下已Get操作为例,其它操作与之类似。
- Get操作:从被管理设备的Agent提取一个或多个参数值。下图介绍NMS使用Get操作获取被管理设备特定接口IP地址的交互过程。
- GetNext操作:从Agent中按照字典顺序提取下一个参数值。
- GetBulk操作:对Agent进行信息群查询。
- Set操作:通过Agent设置一个或多个参数值。
- Trap操作:Agent主动向NMS发出信息,告知被管理设备出现的情况。
- Inform操作:与Trap作用相同,Agent主动向NMS发出信息,告知被管理设备出现的情况,但Inform操作需要NMS进行接受确认。
- 被管理设备(Device)监听UDP 161端口,Get、GetNext、GetBulk、Set报文目的端口为161。
- 网络管理系统(NMS)监听UDP 162端口,Trap、Informb报文目的端口为162。
- 加密模块和鉴权模块分别对应SNMPv3中用户安全模块USM的数据加密和身份验证功能。对发出和收到的SNMP报文进行加密和认证处理。
PySNMP介绍
PySNMP高层接口架构
PySNMP编码流程图
PySNMP类的介绍
SnmpEngine类
- SnmpEngine类:PySNMP模块中的一个核心对象,PySNMP实现所有SNMP操作都涉及 SnmpEngine类实例。
- 使用方法:engine = SnmpEngine()
UsmUserData类
-
UsmUserData类:PySNMP模块对SNMPv3用户安全模块USM的实现。可以利用该类创建SNMPv3用户及其对应的认证与加密算法。
-
使用方法:
userData = UsmUserData(
‘admin’, #用户名
authKey = ‘admin@123’ #认证密钥
privKey = ‘client@123’, #加密密钥
authProtocol = usmHMACSHAAuthProtocol, #认证算法
privProtocol = usmAesCfb128Protocol #加密算法
) -
认证算法和加密算法的取值,可以在http://snmplabs.com/pysnmp/docs/api-reference.html?highlight=usmuserdata#pysnmp.hlapi.UsmUserData获取。