-
目录

-
SNMP的组成
网络管理系统(NMS)
代理进程(Agent)
被管对象(Management object)
管理信息库(MIB)
-
SNMP Trap的两种类型
类型整数值定义

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
TRAP-TYPE
此类型用于SNMPv1,是一种特殊的trap-pdu消息格式(不同于get),是由Agent发送给NMS通知网络状况的告警信息。以下为抓包截图:

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
NOTIFICATION-TYPE
SNMPv2之后,不再使用trap-pdu,而是定义了一套通用消息格式(与get相同),称之为snmpv2-trap-pdu,与trap不同的是,此类消息在接收到Agent发送的告警信息之后,需要对Agent有一个告警消息接收成功的应答。以下为抓包截图:

-
SNMP Trap通用陷阱
SNMP 标准定义了七种由 SNMPv1 代理生成的陷阱类型:六种通用陷阱和一种企业特定陷阱(详情可见:RFC-1157),SNMPv2虽然消息格式与SNMPv1截然不同,但在通用陷阱上其实是一样的(SNMPv2详情可见:RFC-3418)。六种通用陷阱在RFC中是有介绍的,下面是我从网上找的一种解释:

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
按我的理解就是:
1. coldStart(0):Agent重启,所有管理变量重置
2. warmStart(1):Agent重新初始化,所有管理变量不变
3. linkDown(2):设备接口故障时发送,接口链路状态down时也会通知
4. linkUp(3):设备接口恢复时发送,接口链路状态up时也会通知
5. authenticationFailure(4):有人试图使用不正确的community查询Agent时
6. egpNeighborLoss(5):外部网关协议(EGP)邻居已关闭
7. enterpriseSpecific(6):企业特定
-
Trap-pdu抓包分析
消息格式(整数4表示trap-pdu消息类型):
enterprise:与企业相关的trap对象的类型
agent-addr:生成trap的Agent的ip地址
generic-trap:通用陷阱的值(0-5,6的时候认为是企业的)
specific-trap:如果generic-trap为0-5,则此值为0,否则为企业特定陷阱
time-stamp:snmp实体上次初始化/重新初始化以来的时间量
variable-bindings:绑定变量(一个pdu中mib对象的键值对)

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
抓包截图(generic-trap为通用陷阱):

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
抓包截图(generic-trap为企业陷阱):

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
综上,我的理解是,当generic-trap为0-5时,只需要根据generic-trap就可以判断出消息通知类型,根据此类型所对应的variable-bindings个数和对应值就可以得知此消息通知的具体信息。而generic-trap为6时,需要合并enterpries+specific-trap的值,组成代表企业具体消息通知类型的mib节点,然后解析对应variable-bindings的值。
-
Snmpv2-trap-pdu抓包分析
MIB对象类型:
iso(1)
identified-organization(3)
dod(6)
internet(1)
snmpV2(6)
snmpModules(3)
snmpMIB(1)
snmpMIBObjects(1)
--------snmpTrap(4)
----------------snmpTrapOID(1)
--------snmpTraps(5)
----------------coldStart(1)
----------------warmStart(2)
----------------linkDown(3)
----------------linkUp(4)
----------------authenticationFailure(5)
----------------egpNeighborLoss(6)— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
MIB解释:
1.3.6.1.6.3.1.1.4.1:位于pdu绑定变量的第二个位置,代表陷阱通知具体类型
1.3.6.1.6.3.1.1.5.*:最后一个为1-6时,是通用陷阱,否则为企业特定陷阱
— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
消息格式(整数7表示snmpv2-trap-pdu消息类型):
request-id:请求编号,用于请求和回复的数字,由发送请求的设备生成
error-status:请求结果的错误状态
error-index:错误索引
variable-bindings:绑定变量(一个pdu中mib对象的键值对)

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
绑定变量格式:(variable-bindings)
绑定变量的前两个变量是固定的,第一个为snmp实体上次初始化/重新初始化以来的时间量,等同于trap-pdu的time-stamp,第二个变量的值为陷阱具体类型。
— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
抓包截图(generic-trap为通用陷阱):

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
抓包截图(generic-trap为企业陷阱):

— — — — — — — — — — — — — — — — — — — — — — — — —
— — — — — — — — — — — — — — — — — — — — — — — — —
综上,我的理解为,在snmpv2-trap-pdu中,通过判断绑定变量的第二个值的前为1.3.6.1.6.3还是1.3.6.1.4.1可以区分通用陷阱还是企业特定陷阱,之后根据具体的陷阱类型解析对应variable-bindings信息。
-
SNMP工具介绍
基于netsnmp编译工具:
1. snmptrap:模拟Agent发送一个Trap通知到NMS
2. snmpinform:模拟Agent发送一个Inform-request到NMS
3. snmptrapd:模拟NMS接收Trap/Inform-request通知
-
参考文献
SNMP Trap抓包分析
最新推荐文章于 2024-10-11 11:44:44 发布
1827

被折叠的 条评论
为什么被折叠?



