SNMP协议开发心得

SNMP

基本概念

agent:设备

manager:网管系统

数据交互方式:

manager 轮询 agent (传统轮询模式)

agent 推送 manager(trap告警模式)

版本

目前有v1、v2c和v3这3个版本,使用Lextm.SharpSnmpLib库的MessageFactory.ParseMessages能自动识别不同的版本,得到统一的ISnmpMessage结构。

常用请求类型

GET请求:一次可以请求多个oid,但受到网络包大小的限制,没法请求太多oid。

GET BUIK请求:可以多次查询全部的oid,等价于分页查询或流式查询,对内存也比较友好

GET NEXT请求:请求下一个oid,GET BULK的基础版

SET请求:修改一个或多个oid的值

上述请求对应linux上snmp工具套件的snmpget、snmpbulkget、snmpgetnext、snmpset这几个命令行,样例如下:

复制代码
snmpget -v 1 -c public localhost:10161 1.3.6.1.4.1.99999.3.1.1
snmpgetnext -v 1 -c public localhost:10161 1.3.6.1.4.1.99999.3.1.1
snmpbulkget -v 2c -c public localhost:10161 1.3.6.1.4.1.99999.3.1.1 
snmpset -v 2c -c public -t 5 localhost:10161 1.3.6.1.4.1.99999.3.4.6 i 30

安全

V1和V2仅支持community string来作为明文密码。

v3支持基于用户安全协议的认证。

v3的安全级别为:noAuthNoPriv、authNoPriv、authPriv。noAuthNoPriv是只靠用户名识别,基本上等同于v1和v2里的community string了,属于裸奔;authNoPriv是身份验证+防篡改,但报文中的oid和值还是明文,可以抓包偷看;authPriv则是在authNoPriv的基础上,对oid和值也做了加密,别人无法抓包偷看。可见,三个安全级别是逐层递增的。

顺带说一下,v3版本下的manager和agent交互也跟v1/v2不一样,因为它有专门的用户安全协议,所以在发送正式的GET/GETNEXT请求前,manager和agent会有一个发现握手(discovery handshake)阶段,该阶段下,manager会先用noAuthNoPriv安全级别获得agent的EngineID和时钟信息,然后manager才用更高的安全级别发送加密请求给agent。

C#的Lextm.SharpSnmpLib库

该库提供了SNMP报文的解析,但没有提供UDP server机制(开发SNMP Agent需要),可自己开发一个简单的udp server做到及时响应,过程不难,udp因为是无连接的,所以不用像tcp server那样listen,同时因为是面向报文的,也无需像tcp那样考虑分包、粘包等繁琐细节,编程时,主线程recvFrom之后起单独的线程处理报文并sendTo结果即可。

顺带说一下,网上资料说Lextm.SharpSnmpLib库有一个SnmpEngine类实现了UDP server机制,并处理了v3版本的发现握手。仔细研究下来发现,早期版本确实有这么一个类,但开发团队不愿持续维护SnmpEngine,就把它移到sample仓了,可以到github上拿这个sample仓的代码参考使用。

相关推荐
ITxiaobing202315 小时前
中国公司海外广告投放的 IP 地址库选型:从“查归属”到“验真实”的工程视角
网络·网络协议·tcp/ip
明天也要努力学习20 小时前
TCP 协议的相关特性
网络·网络协议·tcp/ip
SHENGWEI胜为20 小时前
局域网出现 IP 地址冲突怎么办?如何从 ARP 表定位故障设备
网络协议·tcp/ip·php
2401_8734794020 小时前
源IP告警太多用什么工具分层?ASN与风险评分操作指南
网络·网络协议·tcp/ip
阿松爱学习1 天前
【Unity开发】局部区域截图功能实现
unity·c#
zhanghaha13141 天前
C# 系列教程_1 基础语法篇(面向新手系统教程)
开发语言·c#
张赐荣1 天前
sslx: 一个检测、查看 HTTPS 证书信息的跨平台单文件命令行工具
网络协议·http·https
辛迪聊物业数字化1 天前
物业费收缴率从68%提升到97%落地复盘:中小物业收费系统选型避坑指南
人工智能·嵌入式硬件·物联网·网络协议·系统架构
昂好的day1 天前
固高运动控制卡实战(下):点位运动与直线/圆弧插补 API 详解
开发语言·c#
80s7771 天前
态住宅IP在跨境电商防关联中的技术应用
网络·网络协议·tcp/ip