第25章 SNMP:简单网络管理协议
所属:TCP/IP详解 卷1:协议 来源:TCP/IP详解 卷1:协议
本章介绍SNMP协议,包括SNMP的作用、管理信息库MIB、SNMP报文和共同体名等。
25.1 引言
SNMP的作用
SNMP(Simple Network Management Protocol):
- 简单网络管理协议
- 管理网络设备
- 监控设备状态
- 配置设备
- 接收告警
SNMP用于网络管理。
为什么需要SNMP
为什么需要SNMP:
- 网络设备很多
- 路由器、交换机、服务器…
- 要管理它们
- 要知道它们的状态
- 出问题要知道
- 需要一个统一的管理协议
SNMP的作用:
- 监控:看设备状态
- 配置:改设备配置
- 告警:设备主动通知
- 统一管理
SNMP统一管理网络设备。
SNMP的架构
SNMP的架构:
-
管理站(Manager)
- 管理的一方
- 运行管理软件
- 发送查询,接收响应
- 接收告警
-
代理(Agent)
- 被管理的一方
- 设备上运行的代理
- 响应管理站的查询
- 发送告警
-
管理信息库(MIB)
- 管理的信息
- 有哪些变量
- 什么含义
- 结构化的
Manager-Agent架构。
本章讨论的内容
本章讨论的内容:
- SNMP的作用
- 管理信息库MIB
- SNMP报文格式
- 共同体名
- SNMP版本
- SNMP操作
本章介绍SNMP协议。
25.2 管理信息库MIB
什么是MIB
MIB(Management Information Base):
- 管理信息库
- 被管理的信息的集合
- 定义了可以管理哪些变量
- 每个变量叫一个对象
- 有唯一的标识符
MIB是管理信息的集合。
对象标识符
对象标识符(OID, Object Identifier):
- 每个对象的唯一标识
- 层次结构
- 用点分隔的数字
- 比如:1.3.6.1.2.1.1.1
层次结构:
- 从根开始
- 一层一层
- iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysDescr(1)
- 就是1.3.6.1.2.1.1.1
OID是层次化的。
MIB-II
MIB-II:
- 标准的MIB
- RFC 1213定义
- 最常用的MIB
- 包含很多组
MIB-II的组:
| 组 | OID | 说明 |
|---|---|---|
| system | 1.3.6.1.2.1.1 | 系统信息 |
| interfaces | 1.3.6.1.2.1.2 | 接口信息 |
| at | 1.3.6.1.2.1.3 | 地址转换 |
| ip | 1.3.6.1.2.1.4 | IP信息 |
| icmp | 1.3.6.1.2.1.5 | ICMP信息 |
| tcp | 1.3.6.1.2.1.6 | TCP信息 |
| udp | 1.3.6.1.2.1.7 | UDP信息 |
| snmp | 1.3.6.1.2.1.11 | SNMP信息 |
MIB-II是标准的MIB。
例子
常见的MIB对象:
| 对象 | OID | 说明 |
|---|---|---|
| sysDescr | 1.3.6.1.2.1.1.1 | 系统描述 |
| sysUpTime | 1.3.6.1.2.1.1.3 | 系统运行时间 |
| ifNumber | 1.3.6.1.2.1.2.1 | 接口数量 |
| ifDescr | 1.3.6.1.2.1.2.2.1.2 | 接口描述 |
| ifOperStatus | 1.3.6.1.2.1.2.2.1.8 | 接口状态 |
| ifInOctets | 1.3.6.1.2.1.2.2.1.10 | 入站字节数 |
| ifOutOctets | 1.3.6.1.2.1.2.2.1.16 | 出站字节数 |
很多常用的对象。
25.3 SNMP报文
SNMP的操作
SNMP的操作:
| 操作 | 说明 |
|---|---|
| Get | 获取一个对象的值 |
| GetNext | 获取下一个对象的值(遍历) |
| Set | 设置一个对象的值 |
| GetResponse | 响应 |
| Trap | 告警,代理主动发 |
五种基本操作。
SNMPv1报文格式
SNMPv1报文格式:
- 用ASN.1编码
- 结构比较复杂
主要部分:
- 版本:版本号,v1是0
- 共同体名:字符串,类似密码
- PDU:协议数据单元,具体的操作
PDU类型:
- GetRequest
- GetNextRequest
- SetRequest
- GetResponse
- Trap
SNMP报文有版本、共同体名、PDU。
共同体名
共同体名(Community String):
- 类似密码
- 验证身份
- 明文传输
- 不安全
三种共同体名:
-
只读(Read-only)
- 只能读
- 不能改
-
读写(Read-write)
- 可以读可以改
- 权限大
-
Trap共同体
- 发Trap用的
共同体名类似密码,明文不安全。
25.4 SNMP版本
SNMPv1
SNMPv1:
- 第一个版本
- 简单
- 功能少
- 安全性差
- 明文共同体名
- 容易被窃听
- 容易被伪造
v1简单但不安全。
SNMPv2
SNMPv2:
- 第二个版本
- 增加了一些功能
- GetBulk:批量获取
- Inform:确认的Trap
- 更多的数据类型
- 安全性还是有问题
- 有多个变种
- SNMPv2c:用共同体名
- SNMPv2u:用户安全
- 等等
v2功能多了,安全还是问题。
SNMPv3
SNMPv3:
- 第三个版本
- 重点是安全
- 增加了:
- 认证:验证身份
- 加密:加密数据
- 访问控制:权限管理
- 安全多了
- 也更复杂了
v3安全性好。
版本比较
SNMP版本比较:
| 对比项 | SNMPv1 | SNMPv2c | SNMPv3 |
|---|---|---|---|
| 安全性 | 差,明文 | 差,明文 | 好,认证加密 |
| 功能 | 少 | 多(GetBulk等) | 多+安全 |
| 复杂度 | 简单 | 中等 | 复杂 |
| 兼容性 | 好 | 好 | 需要支持v3 |
| 应用 | 还很多 | 也很多 | 越来越多 |
版本越高越安全越复杂。
25.5 SNMP的工作
Get操作
Get操作:
- 管理站发GetRequest
- 指定OID
- 代理回GetResponse
- 带对象的值
例子:
- 管理站:Get sysDescr
- 代理:sysDescr = “Cisco Router”
Get获取对象的值。
GetNext操作
GetNext操作:
- 获取OID的下一个对象
- 用来遍历MIB
- 不知道具体OID也能遍历
例子:
- GetNext system
- 返回sysDescr
- GetNext sysDescr
- 返回sysObjectID
- 继续…
GetNext用来遍历。
Set操作
Set操作:
- 设置对象的值
- 管理站发SetRequest
- 带OID和值
- 代理设置,回响应
例子:
- Set sysName = “Router1”
- 代理改名字
- 回成功
Set修改对象的值。
Trap操作
Trap操作:
- 代理主动发
- 有事件发生时
- 通知管理站
- 不用管理站问
常见的Trap:
- 冷启动
- 热启动
- 链路down
- 链路up
- 认证失败
- 等等
Trap是主动告警。
25.6 小结
SNMP概述
-
什么是SNMP
- 简单网络管理协议
- 管理网络设备
-
架构
- 管理站(Manager)
- 代理(Agent)
- MIB
-
作用
- 监控
- 配置
- 告警
管理信息库MIB
-
什么是MIB
- 管理信息的集合
- 对象的集合
-
OID
- 对象标识符
- 层次结构
- 点分隔的数字
-
MIB-II
- 标准MIB
- 很多组
- system, interfaces, ip, tcp, udp等
SNMP报文
-
操作
- Get
- GetNext
- Set
- GetResponse
- Trap
-
共同体名
- 类似密码
- 明文
- 只读/读写
SNMP版本
-
SNMPv1
- 简单
- 不安全
-
SNMPv2
- 功能多
- 还是不安全
-
SNMPv3
- 安全
- 认证加密
- 复杂
SNMP操作
-
Get
- 获取值
-
GetNext
- 遍历
-
Set
- 设置值
-
Trap
- 主动告警
关键概念
-
SNMP
- 简单网络管理协议
- Manager-Agent
-
MIB
- 管理信息库
- OID
-
共同体名
- 类似密码
- 明文
-
版本
- v1, v2, v3
- 越来越安全
-
操作
- Get, GetNext, Set, Trap