SNMPv3 学习笔记

SNMPv3报文类型

请求类

1.Get-Request

功能:查询指定OID值
备注:也可以用来查询EngineID

2.Get-NextRequest

功能:按顺序查询下一个OID值

3.Set-Request

功能:设定指定OID值

4.Get-BulkRequest

功能:批量获取多条OID数据

响应类

1.Get-Response

功能:对请求类的报文回复,包含查询结果或者错误信息

通知类

1.Report

功能:报告安全相关错误(认证失败、加密失败)

SNMPv3 引擎ID(EngineID)

一、核心功能:标识 SNMP 引擎

engineID 是 SNMP 引擎的全局标识符,其核心作用是:

1.区分不同引擎实例

同一设备上可能运行多个 SNMP 引擎(如管理端和代理)。
跨设备时,engineID 用于建立安全上下文(Security Context)。

2.绑定安全参数

用户(User)、组(Group)、视图(View)等安全配置均与 engineID 关联。

3.支持分布式管理

在大规模网络中,通过 engineID 快速定位设备或引擎实例。

二、工作原理:贯穿协议栈

1. 初始化阶段

管理端(NMS):
启动时生成或加载 engineID(通常为 00:00:00:00:00:00:00:00,需手动配置)。
代理(Agent):
厂商预配置(如 1.3.6.1.4.1.20408.1.1.1.1,包含 OID 和序列号)。
或基于 MAC 地址生成(如 00:0c:29🆎cd:ef)。

2. 通信阶段

请求类报文:

管理端在报文中携带自身 engineID,代理通过 engineID 匹配本地安全配置。

响应类报文:

代理返回自身 engineID,管理端验证是否为预期设备。

3. 安全参数推导

密钥生成:
engineID 参与 USM(用户安全模型)的密钥推导:

三、简单理解

1.SNMP v3 EngineID 是设备一个SNMP实例(租户)的唯一标识,可以配置多个租户。
2.SNMP v3 加密过程需要EngineID参与

SNMPv3新查询连接建立过程

1.管理端向终端发送Get-Request

SNMPv3 建立连接 1
管理端发送一个Get-Request请求,第一次查询不清楚终端的EngineID,不携带信息,PDU中不携带OID

2.终端回复Report,报告错误内容

SNMP建立连接2
终端发现管理端发送的 EngineID不正确,向管理端发送Report,并告知自己的EngineID和相关信息,并附上OID(此OID为usmStatsUnknownEngineIDs ,在RFC 3414进行查询,具体内容是“记录 SNMP 引擎收到的、未知 engineID 的消息次数”。)

3.管理端认证并开始查询信息

SNMP 建立连接3
管理端得到终端EngineID 向终端发送正确的EngineID,并携带认证信息和PDU,PDU中携带需要查询的OID

4.终端回复查询信息

图略

结语

在学习SNMP v3的过程中发现,每个查询周期开始,笔者这边的管理端都会发送空值的EngineID,终端都要回复Report并计数,计数已经达到1600w次,按常理来说管理端应该记住每个设备的SNMP实例的EngineID,但查询了几个运维平台,均不记录这个值,每次查询都需要计数,暂不清楚这个计数导致什么问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风丶新凤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值