网络管理有五大功能域:故障管理,配置管理,计费管理,性能管理和安全管理。(助记:安配能计障)
网络管理协议的五大标准:
- ISO定制:CMIS/CMIP公共管理信息服务规范。
- 基于TCP/IP:简单网络管理协议,SNMPv1,SNMPv2c,SNMPv3。
- 基于局域网:远程监控网络RMON-1和RMON-2。
- IEEE定制:基于物理层和数据链路层,CMOL。
- ITU-T:电信网络管理标准TMN。
三个版本
SNMPv1:1990年
- ①SNMP协议的最初版本,容易实现且成本低。
- ②缺少大量读取数据的能力,没有足够的安全机制。
- ③适合规模较小,设备较少,安全性要求不高或本身就比较安全的网络,如校园网、小型企业网等。
SNMPv2c:1996年
- ①扩充SNMPv 1的功能,增加GetBulk 和 inform操作。
- ②没有足够的安全机制。
- ③适合规模较大,设备较多,安全性要求不高或本身就比较安全,但业务比较繁忙,有可能发生流量拥塞的网络。
SNMPv3:1998年
- ①增加了身份验证和加密处理。
- ②新的SNMP体系结构,适应性强,方便管理,扩展性好。
- ③适合各种规模,尤其是对安全性要求较高,只有合法的管理员才能对设备进行管理的网络。
NMS和Agent
客户端(Manager/NMS):网络管理系统,主动发起请求(如查询设备状态),监听162端口接收Trap消息。
服务端(Agent):部署在网络设备(如路由器、服务器)上的代理程序,监听161端口接收请求,并管理本地MIB库。
UDP 161端口发送请求报文
- NMS → Agent:NMS通过161端口向Agent发送Get、GetNext、GetBulk、Set等管理请求。
- Agent → NMS:Agent通过161端口返回请求的响应(如设备状态、配置信息)。
- 特点:
- 支持用户配置,但需确保NMS和Agent的161端口一致。
- 适用于所有SNMP版本(v1/v2c/v3)。
UDP 162端口(单向通信)
- Agent → NMS:Agent通过162端口主动发送Trap或Inform告警(如设备故障、链路中断)。
- 特点:
- Trap是单向通知,无需NMS确认;Inform需NMS回复确认(通过随机端口)。
- 支持用户配置,但需确保NMS监听端口与Agent发送端口一致。
- 仅Trap/Inform使用此端口,与SNMP版本无关。
SNMPv3基本操作
- 查询:
- Get,从agent中提取一个或多个参数值
- GetNext,从agent中按照字典顺序提取下一个参数值
- GetBulk,从agent进行信息群查询
- 设置:
- set通过agent设置一个或多个参数
- 告警:
- trap,agent主动向NMS发出信息,告知被管理设备出现的情况。
- inform,作用与trap相同,但需要NMS进行接收确认,NMS需回复Agent,会占用较多资源。
- 响应:
- Response ,Agent 对 Get/set操作的响应消息,NMS 对 Inform的响应消息。
交互流程与报文类型
NMS通过SNMPv3向被管理设备下发查询和设置操作指令,并接收响应信息,同时监听被管理设备发送的告警信息。
基础流程初始化:服务端启动时绑定UDP端口(默认161),客户端配置目标设备的IP和SNMP版本。
请求-响应:客户端构造SNMP请求(如 get 获取CPU利用率),通过UDP发送至服务端。
服务端解析请求:查询MIB库中的OID对应数据,返回响应报文。
主动通知:服务端检测到异常时,主动发送Trap到客户端的162端口(如接口宕机)
数据存储与安全机制
MIB库与OID
- 服务端通过MIB(管理信息库)定义设备可管理的数据结构
- 客户端通过OID(对象标识符)访问具体指标(如 1.3.6.1.2.1.1.5.0 表示设备名称)。
- 示例:客户端请求OID对应的接口流量,服务端返回 OCTETSTRING 或 INTEGER 类型数据。
安全性控制
- SNMPv1/v2c:基于社区名(Community,如 public )验证,明文传输,安全性低。
- SNMPv3:
- 支持用户认证(如SHA/MD5)和数据加密(如AES),提升通信安全性。
- 用户组(Group),拥有特定安全级别属性的用户集合。
- 安全级别:
- 1级:privacy鉴权且加密
- 2级:authentication只鉴权
- 3级:noauthentication不鉴权也不加密。
- 使用TLS/DTLS加密时,默认端口可能调整为10161(请求)和10162(Trap)(如RFC 3114定义)。
交互特点与工具
协议特性
- 基于UDP:低延迟、无连接,但可能丢包(重要操作建议使用Inform报文)。
- 跨平台支持:可通过C、Java、Python等语言实现客户端和服务端(如C#示例,Java的snmp4j库)。
常用工具
- 服务端工具:Net-SNMP(Linux)、iReasoning MIB Browser(Windows)。
- 客户端调试:Wireshark抓包分析、Nmap扫描SNMP端口
典型应用场景
- 设备监控:实时采集路由器的CPU、内存、接口流量数据。
- 告警管理:接收服务器的硬盘故障Trap并触发告警通知。
- 远程配置:通过SET操作修改交换机的VLAN配置。
- 通过以上机制,SNMP实现了高效的网络设备管理,但其安全性需结合版本选择和访问控制策略(如防火墙限制SNMP端口访问)来保障。
SNMP 基本配置
- 使能 SNMP Agent 功能:
- [Huawei]snmp-agent
- 配置 SNMP协议版本:
- [Huawei]snmp-agent sys-info version v1/v2c/v3 //版本必须和NMS的版本一致
- 创建或更新 MIB 视图的信息
- [Huawei]snmp-agent mib-view view-name(exclude I include}subtree-name[mask mask]
- 创建一个新的SNMP组,将该组用户映射到SNMP 视图
- [Huawei]snmp-agent group v3 {authentication noauth privacy}[head-view view-name Wriet-view view-name notify-view view-namel //该命令用于SNMPv3版本中创建 SNMP组,指定认证加密
- 为一个SNMP组织加一个新用户
- snmp-agent usmiuser v了user-name group group-name
- 配置SNMPV3用户认证密码
- snmp-agent usm-user v3 user-name authentication-mode{md5 sha shaz-256)
- 配置SNMPV3用户加密密码
- snmp-agent usmouser v3 user-name privacy-mode{aes25/des56}
- 配置设备发送Trap报文的参数
- snmp-agent target-host trap-paramsname paramsname is securityname securityname{authentication I no authnopriv privacy}
- 配置Trap报文的目标主机
- snmp-agent target-host trap-hostname hostname address ipu4-address tarp-paramsname paramsname