构建SNMP协议的Trap请求
一般情况下,网络管理站 NMS 向 SNMP 代理发送请求,获取被管理设备的参数值。然后,SNMP 代理将自己在 MIB 管理信息库中查到的参数值返回给网络管理站 NMS。这种方式采用的是 Get 请求。
但是还有一种情况,就是 SNMP 代理主动向网络管理站 NMS 发出报文,通知发生了某些事件。该种情况使用的是 Trap 请求,它可以用来通知故障、连接的中断和恢复、认证失败等消息。
由于 SNMP 版本不同,netwox 工具提供了不同的模块,用于构建 SNMPv1 版本和 SNMPv2 版本的 Trap 请求。
【实例】已知网络管理站 NMS 地址为 182.16.184.190。主机 192.168.59.133 作为 SNMP 代理,构建 SNMP Trap 请求,具体步骤如下:
1) 构建 SNMP Get 请求,设置企业对象 OID 为 .1.3.6.1.4.1,通知网络管理站 NMS,OID.1.3.6.1.2.1.1.1.0 对应的值为 APC Web/SNMP Management Card。执行命令如下:
2) 通过抓包查看构建的 SNMP Trap 请求,如图所示。
其中,该数据包的源 IP 地址为 192.168.59.133,目标 IP 地址为 182.16.184.190。Info 列显示了 trap,表示该数据包为 SNMP 代理向客户端发送的 Trap 数据包,是针对 SNMPv1 版本的。
Simple Network Management Protocol 部分显示了 Trap 请求的相关报文信息,具体如下:
【实例】构建 SNMPv2 版本的 Trap 请求。执行命令如下:
通过抓包查看构建的 Trap 请求,如图所示。
从报文中可以看到,data 的值为 snmpV2-trap(7),表示 PDU 类型为 SNMPv2 版本的 Trap 请求。
但是还有一种情况,就是 SNMP 代理主动向网络管理站 NMS 发出报文,通知发生了某些事件。该种情况使用的是 Trap 请求,它可以用来通知故障、连接的中断和恢复、认证失败等消息。
由于 SNMP 版本不同,netwox 工具提供了不同的模块,用于构建 SNMPv1 版本和 SNMPv2 版本的 Trap 请求。
构建 SNMPv1 版本的 Trap 请求
netwox 工具编号为 161 的模块实现了 SNMPv1 版本的 Trap 请求功能,其语法格式如下:netwox 161 -i IP -r OID -a IP -s Traptype -z timestamp -n OID -t OIDtype -V oidvalue
参数说明:- -i 选项用来指定远程主机服务(网络管理站 NMS)的地址。
- -r 选项用来指定报文的网络设备的 OID(报文中的企业字段)。
- -a 选项用来指定 SNMP 代理的 IP 地址。
- -s 选项用来指定 Trap 类型。
- -z 选项用来指定时间戳。
- -n 选项用来指定要告诉网络管理站 NMS,发生事情的 OID。
- -t 选项用来指定 OID 类型。
- -V 选项用来指定 OID 对应的值。
【实例】已知网络管理站 NMS 地址为 182.16.184.190。主机 192.168.59.133 作为 SNMP 代理,构建 SNMP Trap 请求,具体步骤如下:
1) 构建 SNMP Get 请求,设置企业对象 OID 为 .1.3.6.1.4.1,通知网络管理站 NMS,OID.1.3.6.1.2.1.1.1.0 对应的值为 APC Web/SNMP Management Card。执行命令如下:
root@daxueba:~# netwox 161 -i "182.16.184.190" -r ".1.3.6.1.4.1.3.1" –a "192.168.59.133" -s "3" -z "0" -n ".1.3.6.1.2.1.1.1.0" -t "s" -V "APC Web/SNMP Management Card"
执行命令后没有任何输出信息,但是会成功构建 SNMP Trap 请求。2) 通过抓包查看构建的 SNMP Trap 请求,如图所示。
Simple Network Management Protocol 部分显示了 Trap 请求的相关报文信息,具体如下:
Simple Network Management Protocol version: version-1 (0) community: public data: trap (4) ) #PDU类型, 这里值为4, 表示为Trap请求 trap enterprise: 1.3.6.1.4.1.3.1 (iso.3.6.1.4.1.3.1) #企业OID agent-addr: 192.168.59.133 #代理IP地址 generic-trap: linkUp (3) #Trap类型 specific-trap: 0 #特定代码 time-stamp: 0 #时间戳 variable-bindings: 1 item 1.3.6.1.2.1.1.1.0: 415043205765622f534e4d50204d616e6167656d656e7420... Object Name: 1.3.6.1.2.1.1.1.0 (iso.3.6.1.2.1.1.1.0) #OID Value (OctetString): 415043205765622f534e4d50204d616e6167656d656e7420... Variable-binding-string: APC Web/SNMP Management Card #OID的值上述输出信息显示了 Trap 请求的报文信息,如代理 IP 地址、Trap 类型、OID,以及对应的值。
构建 SNMPv2 版本的 Trap 请求
netwox 工具中编号为 162 的模块实现了 SNMPv2 版本的 Trap 请求功能,其语法格式如下:netwox 162 -i IP -r OID -z timestamp -n OID -t OIDtype -V oidvalue
参数说明:- -i 选项用来指定网络管理站 NMS 的地址。
- -r 选项用来指定报文中企业字段的 OID。
- -z 选项用来指定时间戳。
- -n 选项用来告诉网络管理站 NMS,发生事情的 OID。
- -t 选项用来指定 OID 类型。
- -V 选项用来指定 OID 对应的值。
【实例】构建 SNMPv2 版本的 Trap 请求。执行命令如下:
root@daxueba:~# netwox 162 -i "182.16.184.190" -r ".1.3.6.1.4.1.3.1" -z "0" -n ".1.3.6.1.2.1.1.1.0" -t "s" -V "APC Web/SNMP Management Card"
执行命令后没有任何输出信息。通过抓包查看构建的 Trap 请求,如图所示。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算