SNMP原理与实践


NMS:采用SNMP协议对网络设备进行管理的系统
Agent:被管理设备中的一个代理进程,与NMS交互
MIB:被管理设备所维护的变量,构成的数据库
Managent object:被管理对象,如设备中的某个硬件,也可以是在软件是配置的参数集合
Device:被管理设备
MIB:指明了呗管理设备所维护的变量,在数据库定义了呗管理设备的一系列属性
·对象标识符
·对象状态
·对象访问权限
·对象数据类型
MIB给出了一个数据结构,包含网络中所有可能被管理对象的集合
MIB的定义与具体网络关了协议无关,
私有MIB:公有MIB的必要不充,公司自行开发私有协议或者特有功能时,可以利用私有MIB完善SNMP接口的管理功能,通杀对第三方网管软件管理存在私有功能提供支持
公有MIB:由RFC定义,用来对各种公有协议进行结构化谁家和接口标准化处理

MIB节点最大的访问权限表明网管能够通过该MIB节点对设备进行的操作
not-accessible:无法任何操作
read-only:只读
read-write:读写
read-create:增删改查
设备在生成告警时,不仅会上报类型,同时绑定变量,发送接口linkdown告警时,同时绑定接口索引,接口当前配置状态等变量
ifindex:接口索引
ifAdminStatus:管理状态 1为undo shutdown 2为shutdown
ifOperStatuts:接口当前的操作状态,即接口的链路层协议状态 1up 2down
ifDesc:接口描述

NMS通过SNMPv3向被管理设备下发查询和操作设置命令,并接收操作响应信息,同时监听被管理设备发送的告警信息

SNMP在执行Get、Set等基本操作面临安全威胁,v3相较v1,v2版本安全提升
v1/v2使用团体名进行安全认证,大多数网络产品出厂设定只读团体名为public,读写private,网管人员未修改过默认值,且明文传输容易泄露
V3定义了用户组和用户安全模块

SNMP交互:
Get:从被管理设备的Agent提取参数
被管理设备Device监听UDP端口161,get,getnext,getbulk,set报文目的端口为161
网络管理系统监听端口162,trap,informb报文目的端口162
加密模块和鉴权模块分别对应SNMPv3中用户安全模块USM的数据加密和身份验证功能,对发出和收到的snmp报文进行加密和认证处理

GetNext:从Agent按照字典顺序提取下个参数

GetBulk:对Agent进行信息群查询

Set:通过Agent设置一个或多个参数

Trap:Agent主动向NMS发出信息,告知被管理设备出现情况

inform:与trap相同,Agent主动向NMS发出信息,但inform操作需要NMS进行接收确认

SNMP配置:



被管理侧配置举例:

PySNMP:第三方模块,实现SNMPv1/v2/v3所有功能,提供了简单易用的高层封装接口
架构


SnmpEngine:核心对象,实现所有SNMP操作
使用方法:engine = SnmpEngine()
UsmUserData:v3版本安全模块的视线,利用该类创建v3用户和对应认证与加密算法
使用方法:

UdpTransportTarget:包含被干了设备IP地址和端口号的类
使用方法:
target = UdpTransportTarget(("192.168.56.101",161))
ContextData:表示SNMP上下文
使用方法:
context = ContextData()
Objectidentity:表示MIB节点OID的类
使用方法:
oid1 = ObjectIdentity(‘SNMPv2-MIB’,’sysName’,0)#sysName节点对象实例
oid2 = ObjectIdentity(‘1.3.6.1.2.1.1.5.0’) #使用节点OID字符进行初始化
ObjectType:表示MIB节点,使用objectidentity对象进行初始化
obj1 = ObjectType(ObjectIdentity(‘SNMPv2-MIB’,sysName’0))#实例化sysName的ObjectType的对象
getCmd:实现SNMP Get操作类型的方法,返回值是一个生成器

使用方法:
g = getCmd(snmpEngine,authData,transportTarget,contextData,*varBinds)






更新: 2025-03-14 10:51:24
原文: https://www.yuque.com/yuhui.net/network/gu4y9c951a6vaon9

评论(0)
暂无评论