视频加载失败

SNMP-技术详解

3703 字
19 分钟
SNMP-技术详解

SNMP 技术详解#

一、SNMP概述#

1.1 SNMP定义#

SNMP(Simple Network Management Protocol,简单网络管理协议)是IETF定义的用于管理和监控网络设备的应用层协议。它工作在UDP之上,采用管理者-代理模型,广泛应用于路由器、交换机、服务器、打印机等各种网络设备的管理。

1.2 SNMP发展历程#

版本发布时间RFC主要改进
SNMPv11988RFC 1157首个SNMP标准,基本管理功能
SNMPv2c1996RFC 3416增加GetBulk/Inform,增强批量操作
SNMPv32002RFC 3411-3418引入USM安全模型,提供认证和加密

1.3 SNMP架构组件#

SNMP网络管理架构由以下核心组件构成:

  • NMS(Network Management Station,网络管理站):网络管理的中心节点,运行网络管理软件(如华为eSight/iMaster NCE),负责发送管理请求、接收告警通知,是网络管理的”管理者”。
  • Agent(代理):运行在被管理设备上的软件模块,负责接收和处理NMS发送的管理请求,并将设备的状态和告警信息上报给NMS,是被管理设备的”被管理者”。
  • MIB(Management Information Base,管理信息库):被管理对象的集合,以树状层次结构组织,定义了设备可以被管理的所有参数。
  • OID(Object Identifier,对象标识符):MIB树中每个节点的唯一标识,采用点分数字命名,如 1.3.6.1.2.1.1.1.0 表示系统描述信息。
  • Community(团体名):SNMPv1/v2c中用于NMS与Agent之间认证的字符串,类似于密码,分为只读团体名和读写团体名。
┌──────────────────────────────────────────────────────────────┐
│ SNMP 管理架构 │
│ │
│ ┌─────────────┐ Get/Set (UDP 161) ┌─────────────────┐ │
│ │ │ ──────────────────► │ │ │
│ │ NMS │ │ Agent │ │
│ │ (管理者) │ ◄────────────────── │ (被管理设备) │ │
│ │ │ Response (UDP 161) │ │ │
│ └─────────────┘ └─────────────────┘ │
│ ▲ │ │
│ │ Trap/Inform (UDP 162) │ │
│ └────────────────────────────────────┘ │
│ │
│ MIB: 被管理对象集合 | OID: 对象标识符 | Community: 认证 │
└──────────────────────────────────────────────────────────────┘

二、SNMP版本对比 🏷️高频考点#

2.1 三版本特性对比#

特性SNMPv1SNMPv2cSNMPv3
安全性无认证(仅Community)无认证(仅Community)认证+加密
报文类型Get/GetNext/Set/Trap+GetBulk/Inform+USM安全模型
Community明文传输明文传输不使用Community
认证方式CommunityCommunityHMAC-MD5/HMAC-SHA
加密方式DES/AES
兼容性最广广新设备支持
传输协议UDPUDPUDP
错误处理基本错误码扩展错误码+异常码扩展错误码+异常码
大数据传输不支持支持(GetBulk)支持(GetBulk)
告警确认无(Trap不可靠)Trap不可靠/Inform可靠Trap不可靠/Inform可靠

2.2 版本选择建议#

  • SNMPv1:仅在对安全性无要求的老旧设备环境中使用,已逐步淘汰。
  • SNMPv2c:适合内部网络管理,需要批量查询但安全性要求不高的场景,目前应用广泛。
  • SNMPv3:推荐在生产环境中使用,尤其是涉及公网或安全性要求高的场景,提供完整的认证和加密机制。

三、SNMP报文类型 🏷️高频考点#

3.1 报文类型汇总#

报文类型方向作用版本支持
GetNMS → Agent查询指定OID的值v1/v2c/v3
GetNextNMS → Agent查询下一个OID的值v1/v2c/v3
GetBulkNMS → Agent批量查询(非重复+重复)v2c+
SetNMS → Agent设置指定OID的值v1/v2c/v3
ResponseAgent → NMS响应Get/Set请求v1/v2c/v3
TrapAgent → NMS主动告警通知(无确认)v1/v2c/v3
InformAgent → NMS告警通知(需确认,可靠传输)v2c+
ReportAgent → NMSSNMPv3特殊报告v3

3.2 报文详细说明#

Get请求#

NMS向Agent查询一个或多个指定OID的当前值。Agent返回Response报文包含查询结果。如果OID不存在,返回错误码 noSuchObject(v2c+)或错误状态 noSuchName(v1)。

GetNext请求#

NMS向Agent查询指定OID的下一个OID的值,常用于遍历MIB表。Agent返回的Response中包含下一个有效OID及其值。

GetBulk请求(v2c+新增)#

GetBulk是对GetNext的扩展,一次请求获取多条数据,减少网络交互次数。包含两个关键参数:

  • non-repeaters(非重复数):前N个OID仅查询一次(类似GetNext)
  • max-repetitions(最大重复数):剩余OID循环查询M次
GetBulk(non-repeaters=1, max-repetitions=5)
等价于:1次GetNext + 5次连续GetNext = 6次GetNext操作

Set请求#

NMS向Agent设置指定OID的值,用于修改设备配置。Agent执行操作后返回Response表示成功或失败。

Trap报文#

Agent主动向NMS发送的异步告警通知,不需要NMS确认,属于不可靠传输。适用于对可靠性要求不高的告警场景。

Inform报文(v2c+新增)#

Agent主动向NMS发送的异步告警通知,需要NMS确认(发送Response),属于可靠传输。如果超时未收到确认,Agent会重传Inform报文。

四、SNMP工作原理#

4.1 SNMP通信机制#

  • NMS通过 UDP 161端口 向Agent发送Get/GetNext/GetBulk/Set请求
  • Agent通过 UDP 161端口 向NMS返回Response响应
  • Agent通过 UDP 162端口 向NMS发送Trap/Inform通知

SNMP使用无连接的UDP协议,优点是开销小、效率高,缺点是不保证可靠传输(因此v2c+引入Inform弥补Trap的不可靠性)。

4.2 SNMP交互流程图#

Agent (被管理设备)NMS (管理者)Agent (被管理设备)NMS (管理者)一、查询/配置交互流程二、Trap告警流程(不可靠)无需确认,不可靠三、Inform告警流程(可靠)超时未确认则重传Get/GetNext/GetBulk 请求 (UDP 161)Response 响应 (UDP 161)Set 请求 (UDP 161)Response 响应 (UDP 161)Trap 告警通知 (UDP 162)Inform 告警通知 (UDP 162)Response 确认 (UDP 161)
Agent (被管理设备)NMS (管理者)Agent (被管理设备)NMS (管理者)一、查询/配置交互流程二、Trap告警流程(不可靠)无需确认,不可靠三、Inform告警流程(可靠)超时未确认则重传Get/GetNext/GetBulk 请求 (UDP 161)Response 响应 (UDP 161)Set 请求 (UDP 161)Response 响应 (UDP 161)Trap 告警通知 (UDP 162)Inform 告警通知 (UDP 162)Response 确认 (UDP 161)

4.3 Community认证机制#

SNMPv1/v2c使用Community进行简单的认证:

  • Read Community(只读团体名):允许NMS执行Get/GetNext/GetBulk查询操作
  • Write Community(读写团体名):允许NMS执行Set配置操作(同时也具有读权限)

Community以明文方式在UDP报文中传输,安全性低,容易被抓包获取。这也是SNMPv3引入USM安全模型的主要原因。

五、MIB与OID 🏷️高频考点#

5.1 MIB树结构#

MIB采用层次化的树状结构,从根节点开始,每个分支代表一个不同的管理类别。MIB树的主要分支如下:

MIB树根节点 (iso, 1)
├── 1 (iso)
│ ├── 3 (identified-organization)
│ │ ├── 6 (dod)
│ │ │ ├── 1 (internet)
│ │ │ │ ├── 2 (mgmt)
│ │ │ │ │ ├── 1 (mib-2)
│ │ │ │ │ │ ├── 1 (system) 系统信息
│ │ │ │ │ │ ├── 2 (interfaces) 接口信息
│ │ │ │ │ │ ├── 4 (ip) IP信息
│ │ │ │ │ │ ├── 5 (icmp) ICMP信息
│ │ │ │ │ │ ├── 6 (tcp) TCP信息
│ │ │ │ │ │ └── 7 (udp) UDP信息
│ │ │ │ │ └── ...
│ │ │ │ ├── 4 (private)
│ │ │ │ │ └── 1 (enterprises)
│ │ │ │ │ └── 2011 (Huawei) 华为私有MIB
│ │ │ │ │ └── ...

5.2 OID命名规则#

OID采用点分数字命名法,从根节点到目标节点的完整路径即为OID。例如:

OID名称说明
1.3.6.1.2.1.1.1.0sysDescr.0系统描述信息
1.3.6.1.2.1.1.5.0sysName.0系统名称
1.3.6.1.2.1.1.3.0sysUpTime.0系统运行时间
1.3.6.1.2.1.2.1.0ifNumber.0接口数量
1.3.6.1.2.1.2.2.1.10ifInOctets接口入流量字节数
1.3.6.1.2.1.2.2.1.16ifOutOctets接口出流量字节数

OID末尾的 .0 表示标量对象的实例索引,表示该对象只有一个实例(非表格对象)。

5.3 常用MIB节点#

标准MIB-2(1.3.6.1.2.1)#

节点名称OID说明
system1.3.6.1.2.1.1系统信息(描述、位置、联系人等)
interfaces1.3.6.1.2.1.2接口信息(数量、状态、流量等)
at1.3.6.1.2.1.3地址转换表(ARP表)
ip1.3.6.1.2.1.4IP相关信息(地址、路由表等)
icmp1.3.6.1.2.1.5ICMP统计信息
tcp1.3.6.1.2.1.6TCP连接和统计信息
udp1.3.6.1.2.1.7UDP统计信息
snmp1.3.6.1.2.1.11SNMP自身统计信息

华为私有MIB(1.3.6.1.4.1.2011)#

华为私有MIB定义了华为设备特有的管理对象,如:

  • 1.3.6.1.4.1.2011.2.23 - 华为接口管理
  • 1.3.6.1.4.1.2011.5 - 华为设备硬件管理
  • 1.3.6.1.4.1.2011.6 - 华为设备配置管理

六、SNMPv3安全模型(USM) 🏷️高频考点#

6.1 USM概述#

USM(User-based Security Model,基于用户的安全模型)是SNMPv3引入的安全框架,提供认证和加密两种安全服务,解决SNMPv1/v2c Community明文传输的安全问题。

6.2 安全级别#

USM定义了三个安全级别,安全级别依次递增:

安全级别认证加密说明
noAuthNoPriv无认证无加密,安全性最低
authNoPriv仅认证,数据明文传输
authPriv认证+加密,安全性最高

NMS和Agent的SNMPv3用户安全级别必须一致,否则通信失败。

6.3 认证机制#

认证用于验证报文的完整性和来源的真实性,采用HMAC(Hash-based Message Authentication Code)算法:

认证算法密钥长度安全性说明
HMAC-MD5-96128位MD5摘要,逐渐被淘汰
HMAC-SHA-1-96160位较高SHA-1摘要,推荐使用
HMAC-SHA-224224位华为扩展支持
HMAC-SHA-256256位更高华为扩展支持

6.4 加密机制#

加密用于保护报文内容的机密性,使用对称加密算法:

加密算法密钥长度安全性说明
DES-CBC56位已不推荐使用
AES128-CFB128位推荐使用
AES192-CFB192位较高华为扩展
AES256-CFB256位华为扩展,最安全

6.5 VACM(View-based Access Control Model)#

VACM是基于视图的访问控制模型,在USM认证通过后,进一步控制用户对MIB对象的访问权限:

VACM访问控制流程:
1. 用户通过USM认证 → 确定用户身份
2. 用户所属的组 → 确定组的访问权限
3. 组绑定的MIB视图 → 确定可访问的OID范围
4. 读写权限 → 确定可执行的操作(读/写)

VACM核心概念:

  • 视图(View):定义可访问的OID子树
  • 组(Group):包含一个或多个用户,绑定MIB视图和读写权限
  • 用户(User):属于某个组,配置USM认证和加密参数

七、SNMP Trap与Inform对比 🏷️高频考点#

对比项TrapInform
传输可靠性不可靠(UDP,无确认)可靠(需NMS确认)
重传机制有(超时重传)
网络资源消耗小(不重传)可能大(重传)
告警丢失风险有(NMS离线则丢失)无(重传直到确认)
适用版本v1/v2c/v3v2c+
适用场景非关键告警、网络稳定关键告警、需确保送达
NMS离线影响告警丢失告警暂存,NMS上线后送达

选择建议#

  • Trap适用场景:网络环境稳定、告警频率高、对个别告警丢失不敏感的场景。优点是不消耗网络带宽(无重传)。
  • Inform适用场景:关键告警必须送达、网络可能不稳定、NMS可能短暂离线的场景。优点是可靠传输。

八、华为设备配置命令示例#

8.1 SNMPv2c配置#

Terminal window
# 使能SNMP Agent服务
snmp-agent
# 配置SNMP版本(仅允许v2c)
snmp-agent sys-info version v2c
# 配置只读团体名(public),并绑定ACL 2001限制访问源
snmp-agent community read read123 acl 2001
# 配置读写团体名(private),并绑定ACL 2001限制访问源
snmp-agent community write write123 acl 2001
# 配置Agent发送Trap的目标主机(NMS地址:192.168.1.100)
snmp-agent target-host trap-host name NMS address 192.168.1.100 trap-params paramsNMS
# 配置Trap参数(使用v2c版本,团体名public)
snmp-agent target-host trap-params paramsNMS v2c securityname read123
# 使能所有模块的Trap功能
snmp-agent trap enable
# 配置Agent的系统信息(位置、联系人)
snmp-agent sys-info contact "Network Admin"
snmp-agent sys-info location "DataCenter-Room1"
# ACL配置:仅允许192.168.1.0/24网段访问
acl number 2001
rule 5 permit source 192.168.1.0 0.0.0.255
rule 10 deny

8.2 SNMPv3配置#

Terminal window
# 使能SNMP Agent服务
snmp-agent
# 配置SNMP版本(仅允许v3)
snmp-agent sys-info version v3
# 创建MIB视图(视图名ViewAll,包含整个MIB树)
snmp-agent mib-view included ViewAll iso
# 创建SNMPv3组(组名GroupAdmin,使用authPriv安全级别,绑定视图ViewAll,读写权限)
snmp-agent group v3 GroupAdmin privacy read-view ViewAll write-view ViewAll
# 创建SNMPv3用户(用户名UserAdmin,属于GroupAdmin组,使用SHA认证,AES128加密)
snmp-agent usm-user v3 UserAdmin group GroupAdmin
snmp-agent usm-user v3 UserAdmin authentication-mode sha
# 输入认证密码:Admin@123
snmp-agent usm-user v3 UserAdmin privacy-mode aes128
# 输入加密密码:Encrypt@123
# 配置Trap目标主机(NMS地址:192.168.1.100,使用v3版本)
snmp-agent target-host trap-host name NMS address 192.168.1.100 trap-params paramsV3
snmp-agent target-host trap-params paramsV3 v3 user UserAdmin securitymodel usm
# 使能所有模块的Trap功能
snmp-agent trap enable

8.3 Trap与Inform配置#

Terminal window
# 配置Trap发送(不可靠告警)
snmp-agent target-host trap-host name NMS address 192.168.1.100 trap-params paramsNMS
snmp-agent target-host trap-params paramsNMS v2c securityname read123
# 配置Inform发送(可靠告警,需NMS确认)
# inform参数表示使用Inform方式,重传间隔5秒,最大重传次数3次
snmp-agent target-host trap-host name NMS-Reliable address 192.168.1.100 inform-params paramsInform
snmp-agent target-host inform-params paramsInform v2c securityname read123 timeout 5 retry-times 3
# 使能特定模块的Trap(如OSPF/BGP/接口模块)
snmp-agent trap enable feature-name ospf
snmp-agent trap enable feature-name bgp
snmp-agent trap enable feature-name ifnet

8.4 SNMP日志与MIB绑定配置#

Terminal window
# 使能SNMP日志功能(记录Get/Set操作)
snmp-agent log all
# 配置MIB绑定(将特定OID绑定到特定模块,便于管理)
snmp-agent mib-bind module ifnet oid 1.3.6.1.2.1.2
# 配置SNMP队列参数
# Trap队列大小(默认1024)
snmp-agent trap queue-size 1024
# Trap发送间隔(默认5秒)
snmp-agent trap interval 5

九、常见故障排查#

9.1 NMS无法访问Agent#

排查步骤:

  1. 检查SNMP版本一致性:NMS和Agent的SNMP版本必须匹配
Terminal window
display snmp-agent sys-info version
  1. 检查Community/用户配置:确认团体名或v3用户配置正确
Terminal window
# 查看团体名配置
display snmp-agent community
# 查看v3用户配置
display snmp-agent usm-user
# 查看v3组配置
display snmp-agent group
  1. 检查ACL访问控制:确认NMS的IP地址被ACL放通
Terminal window
display acl 2001
  1. 检查UDP 161端口连通性:确认网络可达且端口未被防火墙拦截
Terminal window
# 在NMS上测试(需安装net-snmp工具)
snmpwalk -v2c -c read123 192.168.1.1 1.3.6.1.2.1.1.1.0

9.2 Trap不发送#

排查步骤:

  1. 检查Trap目标主机配置:确认NMS地址、Trap参数正确
Terminal window
display snmp-agent target-host
  1. 检查Trap功能是否使能:确认对应模块的Trap已开启
Terminal window
display snmp-agent trap all
  1. 检查UDP 162端口连通性:确认NMS的162端口可接收Trap报文

9.3 SNMPv3认证失败#

排查步骤:

  1. 检查用户组配置:确认用户所属的组和安全级别正确
Terminal window
display snmp-agent group v3
  1. 检查认证算法和密码:确认NMS和Agent的认证算法(MD5/SHA)和密码一致
  2. 检查加密算法和密码:确认NMS和Agent的加密算法(DES/AES)和密码一致
  3. 检查MIB视图:确认用户组绑定的视图包含要访问的OID

9.4 常用排查命令汇总#

命令作用
display snmp-agent sys-info查看SNMP系统信息(版本、位置、联系人)
display snmp-agent sys-info version查看SNMP版本信息
display snmp-agent community查看团体名配置
display snmp-agent usm-user查看SNMPv3用户信息
display snmp-agent group查看SNMPv3组信息
display snmp-agent mib-view查看MIB视图配置
display snmp-agent target-host查看Trap/Inform目标主机
display snmp-agent trap all查看Trap使能状态
display snmp-agent log查看SNMP日志
display snmp-agent statistics查看SNMP统计信息

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏

评论区

Profile Image of the Author
zs13
Hello, I'm Zs13.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
22
分类
1
标签
46
总字数
64,717
运行时长
0
最后活动
0 天前
站点信息
构建平台
EdgeOne Pages
博客版本
Firefly v6.15.10
文章许可
CC BY-NC-SA 4.0