能否向SNMP Trap来源设备通过UDP 161端口发送自定义回应消息?
SNMP自定义通知发送需求可行性解答
核心结论
你当前设计的方案不可行,具体原因及可落地的调整建议如下:
方案不可行的原因
- 端口使用不符合SNMP协议规范:UDP 161是SNMP代理端(也就是你说的Trap来源设备)默认用于接收
GET/SET类查询、配置请求的端口,SNMP Trap类通知的默认接收端口为UDP 162,你直接往161端口发送自定义字符串,设备SNMP进程会判定为非法报文直接丢弃,不会处理你发送的内容。 - 报文格式不符合要求:SNMP协议有严格的ASN.1编码规则,你直接发送明文
Hi, your trap is came!不属于合法的SNMP报文,设备端的SNMP服务无法解析,自然不会识别你要发送的通知内容。
可行调整方案
你可以根据实际场景选择以下任意一种方案实现需求:
方案1:通过SNMP SET操作推送通知(可复用161端口)
如果目标设备开放了SNMP写权限,你可以将自定义通知写入设备预留的可写MIB节点实现通知推送:
- 提前获取设备厂商提供的可写私有MIB节点OID
- 按照SNMP协议规范编码SET请求报文,将
Hi, your trap is came!作为值写入对应OID - 向设备UDP 161端口发送该编码后的合法SNMP SET报文即可
方案2:发送标准SNMP Trap通知到设备
如果你的目标就是给设备推送SNMP协议格式的通知:
- 确认设备端已开启SNMP Trap接收功能,获取它监听的Trap端口(默认是162,部分设备支持自定义端口)
- 按照SNMP Trap报文规范编码,将自定义通知内容放到Trap的变量绑定字段中
- 向设备对应Trap接收端口发送编码后的合法报文即可
方案3:跳过SNMP协议直接发UDP明文通知
如果设备端支持自定义UDP端口接收明文消息,你可以不用适配SNMP协议,选择设备开放的空闲UDP端口,直接发送Hi, your trap is came!明文内容即可。
内容的提问来源于stack exchange,提问作者NoobDeveloper
相关产品推荐
相关产品推荐

