boxmoe_header_banner_img

⋅無⋅限⋅進⋅步⋅

加载中

文章导读

SNMP原理与实践


avatar
yuhui 2025年10月21日 47

SNMP原理与实践

1741920673859-0b9667b3-b0ce-475e-bcd9-efef15f4b025.png

1741920673833-f1f5530b-676c-42df-8d07-c1dc6ed7877b.png

NMS:采用SNMP协议对网络设备进行管理的系统

Agent:被管理设备中的一个代理进程,与NMS交互

MIB:被管理设备所维护的变量,构成的数据库

Managent object:被管理对象,如设备中的某个硬件,也可以是在软件是配置的参数集合

Device:被管理设备

MIB:指明了呗管理设备所维护的变量,在数据库定义了呗管理设备的一系列属性

·对象标识符

·对象状态

·对象访问权限

·对象数据类型

MIB给出了一个数据结构,包含网络中所有可能被管理对象的集合

MIB的定义与具体网络关了协议无关,

私有MIB:公有MIB的必要不充,公司自行开发私有协议或者特有功能时,可以利用私有MIB完善SNMP接口的管理功能,通杀对第三方网管软件管理存在私有功能提供支持

公有MIB:由RFC定义,用来对各种公有协议进行结构化谁家和接口标准化处理

1741920673778-784e3d5d-0545-45b6-8a0b-9a38f7c9e18c.png

MIB节点最大的访问权限表明网管能够通过该MIB节点对设备进行的操作

not-accessible:无法任何操作

read-only:只读

read-write:读写

read-create:增删改查

设备在生成告警时,不仅会上报类型,同时绑定变量,发送接口linkdown告警时,同时绑定接口索引,接口当前配置状态等变量

ifindex:接口索引

ifAdminStatus:管理状态 1为undo shutdown 2为shutdown

ifOperStatuts:接口当前的操作状态,即接口的链路层协议状态 1up 2down

ifDesc:接口描述

1741920673803-5cea4392-78ca-4cdb-9fc4-4322e6f40c73.png

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

1741920673907-c81a7fe8-6bd5-42d1-891c-a27a49da0ee6.png

SNMP在执行Get、Set等基本操作面临安全威胁,v3相较v1,v2版本安全提升

v1/v2使用团体名进行安全认证,大多数网络产品出厂设定只读团体名为public,读写private,网管人员未修改过默认值,且明文传输容易泄露

V3定义了用户组和用户安全模块

1741920675274-da2703d3-bb84-414d-8d39-41fd5172ccaa.png

SNMP交互:

Get:从被管理设备的Agent提取参数

被管理设备Device监听UDP端口161,get,getnext,getbulk,set报文目的端口为161

网络管理系统监听端口162,trap,informb报文目的端口162

加密模块和鉴权模块分别对应SNMPv3中用户安全模块USM的数据加密和身份验证功能,对发出和收到的snmp报文进行加密和认证处理

1741920675240-b08cfb80-91ba-4056-b918-940b18a73f4b.png

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

1741920675273-bb50a279-3ec6-4464-99f0-7227d41e0a8e.png

GetBulk:对Agent进行信息群查询

1741920675288-6b6be954-78d4-4191-8271-688b767f9f52.png

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

1741920675256-e507eba5-4348-4191-bc94-128fbcedde0b.png

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

1741920675881-ac182f84-d3d9-4081-990a-3e31e3f53717.png

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

1741920675786-9ae69ff1-7afa-4379-8cec-a6af74fb31af.png

SNMP配置:

1741920675892-ae790fdb-29da-4c85-8cb6-4aa1dae7788e.png

1741920676013-206a677c-ce40-4dca-915b-b34232060b16.png

1741920676046-9151facd-0b39-4bb0-ac31-4aafa027ecbc.png

被管理侧配置举例:

1741920676848-1d383eb3-8dd4-4552-8289-bde86a17a559.png

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

架构

1741920676755-b56ba7a0-c498-485d-a270-121bb0f69b47.png

1741920676822-82490438-22a9-45c7-abf0-557469cf7c5f.png

SnmpEngine:核心对象,实现所有SNMP操作

使用方法:engine = SnmpEngine()

UsmUserData:v3版本安全模块的视线,利用该类创建v3用户和对应认证与加密算法

使用方法:

1741920676759-8130fa25-078e-4a5e-acda-66b4b33cc494.png

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操作类型的方法,返回值是一个生成器

1741920676781-3eec21fd-73d4-4f23-b74d-bab911c86eba.png

使用方法:

g = getCmd(snmpEngine,authData,transportTarget,contextData,*varBinds)

1741920677820-99e3bb8e-4062-4f9a-b106-79464745ab7b.png

1741920677887-c5ede3b7-b959-414c-bc56-e10b33b9ebf2.png

1741920677870-6b4259e2-ffd3-4dea-b20a-ed7aa86d4c4f.png

1741920677941-e8ae15d6-1391-4f55-a06b-d86eefcdf0c7.png

1741920677882-cfe5618f-53c7-44ea-84c3-0677d82d70c6.png

1741920679177-62628c8a-e34e-4779-adeb-8bcfb2f9c4dd.png

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



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字

插入代码