第126篇:SNMP v1/v2c/v3——网络管理协议演进
关键词
SNMP、网管协议、SNMP v1、SNMP v2c、SNMP v3、MIB、Trap、网管系统
一、SNMP 简介
1.1 什么是 SNMP
SNMP(Simple Network Management Protocol)是互联网标准的网络管理协议,用于网管系统(NMS)与受管设备(Agent)之间的通信。
网管系统(NMS) 受管设备(Agent)
| SolarWinds Zabbix eSight |
◄─── SNMP ────► |
交换机/路由器 SNMP Agent MIB 数据库 |
|
|
|
1.2 SNMP 的组件
| 组件 |
说明 |
| NMS(Network Management Station) |
网管服务器(管理端) |
| Agent |
设备上的 SNMP 代理程序(被管端) |
| MIB(Management Information Base) |
管理信息库,定义可管理的对象 |
| OID(Object Identifier) |
MIB 中每个对象的唯一标识 |
二、SNMP 版本演进
2.1 SNMP v1
- RFC 1157(1990 年)
- 只支持团体字(Community)认证——明文密码
- 团体字:
public(只读)、private(读写)
- 无加密、无认证——安全性极差
2.2 SNMP v2c
- RFC 1901-1908(1996 年)
- 增强功能:批量获取(GetBulk)、更丰富的错误码
- 认证方式与 v1 相同——仍然是明文团体字
- "c" 表示 Community-based SNMP
| 特性 |
SNMP v1 |
SNMP v2c |
| 认证 |
明文团体字 |
明文团体字 |
| 加密 |
无 |
无 |
| GetBulk |
不支持 |
支持 |
| 错误码 |
5 种 |
更多 |
| 安全 |
极低 |
极低 |
2.3 SNMP v3
- RFC 3410-3418(2002 年)
- 引入完整的安全框架:认证 + 加密 + 访问控制
| SNMP v3 安全模型 |
认证 |
加密 |
说明 |
| noAuthNoPriv |
无 |
无 |
无安全(不推荐) |
| authNoPriv |
MD5/SHA |
无 |
仅验证身份 |
| authPriv |
MD5/SHA |
DES/AES |
验证 + 加密 |
三、SNMP 报文类型
3.1 NMS → Agent(请求)
| 报文 |
功能 |
v1 |
v2c |
v3 |
| GetRequest |
获取一个或多个 OID 的值 |
✓ |
✓ |
✓ |
| GetNextRequest |
获取 OID 的下一个值(遍历表) |
✓ |
✓ |
✓ |
| GetBulkRequest |
批量获取(高效获取表数据) |
✗ |
✓ |
✓ |
| SetRequest |
设置 OID 的值(修改配置) |
✓ |
✓ |
✓ |
3.2 Agent → NMS(响应+主动通知)
| 报文 |
功能 |
说明 |
| Response |
响应 Get/Set 请求 |
包含请求的 OID 值或错误码 |
| Trap |
Agent 主动发送告警 |
如端口 Down、CPU 过高等 |
| InformRequest |
带确认的 Trap |
确保 NMS 收到(v2c+) |
| 特性 |
Trap |
Inform |
| 确认机制 |
无(UDP 不可靠) |
有(NMS 回复确认) |
| 可靠性 |
低 |
高 |
| 资源消耗 |
低 |
高 |
| 推荐 |
非关键告警 |
关键告警 |
四、SNMP 配置
4.1 SNMP v2c 配置
# ===== 华为交换机 =====
# 配置团体字(只读)
snmp-agent community read cipher Public@123
# 配置团体字(读写)
snmp-agent community write cipher Private@456
# 配置 Trap 发送
snmp-agent trap enable
snmp-agent target-host trap address udp-domain 10.254.1.100 params securityname cipher Trap@789 v2c
# 配置 ACL 限制 SNMP 访问
acl number 2000
rule 5 permit source 10.254.1.100 0
snmp-agent community read cipher Public@123 acl 2000
4.2 SNMP v3 配置
# ===== SNMP v3 用户配置 =====
# 创建 SNMP v3 用户(authPriv 模式)
snmp-agent sys-info version v3
snmp-agent group v3 adminGroup privacy # 隐私模式组
snmp-agent usm-user v3 admin
authentication-mode sha
privacy-mode aes256
# 交互式输入密码
# 配置 Trap(v3)
snmp-agent target-host trap address udp-domain 10.254.1.100 params securityname admin v3 privacy
4.3 查看 SNMP 配置
# 查看 SNMP 状态
display snmp-agent summary
-----------------------------------------------
SNMP version: v3
Community: Configured(2)
Group: adminGroup
USM User: admin
# 查看 Trap 配置
display snmp-agent target-host
五、SNMP 版本选择建议
| 场景 |
推荐版本 |
原因 |
| 实验室/测试 |
v2c |
简单易用 |
| 企业内部网 |
v2c + ACL |
内网 + ACL 限制访问 |
| 运营商/数据中心 |
v3 |
安全要求高 |
| 互联网管理 |
v3 |
必须加密 |
| 旧设备兼容 |
v2c |
v3 可能不支持 |
六、SNMP 安全风险
| 风险 |
说明 |
防护 |
| 团体字泄露 |
v1/v2c 团体字明文传输 |
使用 v3 + ACL |
| 暴力破解 |
尝试常见团体字(public/private) |
复杂团体字 + ACL |
| Set 攻击 |
通过 SNMP 修改设备配置 |
只读团体字限制 |
| Trap 伪造 |
伪造 Trap 欺骗网管 |
v3 认证 |
七、总结
| 知识点 |
核心要点 |
| SNMP 目的 |
网络设备统一管理 |
| v1 |
明文团体字,无安全 |
| v2c |
增强功能(GetBulk),仍明文 |
| v3 |
认证 + 加密(authPriv) |
| Trap |
Agent 主动告警(UDP) |
| 最佳实践 |
v3 优先,ACL 辅助 |
八、思考
- SNMP v1、v2c、v3 的核心区别是什么?
- SNMP Trap 和 Inform 有什么区别?
- 在企业内网如果使用 SNMP v2c,应该采取什么安全措施?
- SNMP v3 的三种安全级别分别是什么?
- 为什么说 SNMP v1/v2c 的团体字不安全?
下篇预告:第127篇《SNMP MIB 与 OID——如何读取设备指标》——深入讲解 SNMP MIB 树结构、OID 的含义以及如何用命令行获取设备监控数据。