第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+)

3.3 Trap vs Inform

特性 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 辅助

八、思考

  1. SNMP v1、v2c、v3 的核心区别是什么?
  2. SNMP Trap 和 Inform 有什么区别?
  3. 在企业内网如果使用 SNMP v2c,应该采取什么安全措施?
  4. SNMP v3 的三种安全级别分别是什么?
  5. 为什么说 SNMP v1/v2c 的团体字不安全?

下篇预告:第127篇《SNMP MIB 与 OID——如何读取设备指标》——深入讲解 SNMP MIB 树结构、OID 的含义以及如何用命令行获取设备监控数据。