揭开SNMP协议的面纱

写在前面:接触SNMP协议相关的告警已经有些年头了,一直没有搞清楚SNMP消息有哪些?实现原理是什么?如果你也在研究,请不吝赐教!

SNMP介绍

SNMP(simple network management protocol)是因特网架构委员会IAB定义的一个应用层协议。SNMP广泛用于管理和监控网络设备,大多数专业的网络设备都有SNMP agent代理,这些代理被激活和配置后用于和SNMP管理 NMS(network management system)网络管理系统通信。

SNMP代理和SNMP管理

SNMP作为TCP/IP协议一部分,SNMP消息被封装为UDP(user datagram protocol)并在IP协议中封装和传输,传输过程如下:

SNMP消息传输过程

UDP协议是无连接的传输协议。

注意:如果抓包分析SNMP消息内容,需要在Wireshark中将SNMP消息转换为UDP消息。

SNMP共有3个版本:v1,v2和v3。v1,v2有很多共同的特征,v3 在先前的版本基础上增加了安全和远程配置能力 。为了解决不同版本的兼容性问题,RFC3584定义了共存策略。

SNMP架构

SNMP协议采用C/S架构,定义了三种角色:SNMP管理,SNMP代理agent和代理proxy服务器。SNMP管理作为客户端,agent和proxy作为服务端。

SNMP管理用于get查询下级agent或proxy的消息,set设置agent或proxy参数和接收trap上报的消息。

SNMP架构之SNMP三个角色

SNMP agent用于接收SNMP管理的请求并去网络设备上查询所需数据后做出合适响应和trap上报网络设备上新产生的告警等消息给对应的SNMP管理。

SNMP proxy用于不能直接使用SNMP协议场景,如异构网络(非IP网络)或者不同版本SNMP代理的网络设备。Proxy做了异种网络或不同版本代理和相应SNMP数据请求的转换工作。

SNMP proxy场景

问题反思:

1. SNMP管理用于get查询下级agent或proxy的消息,如果查到的信息已经存在尚未恢复,SNMP管理是如何判重的呢?

2. 在网络设备上有新产生的告警等消息,SNMP agent就trap上报消息给对应的SNMP管理,历史消息不会重复上报的,有自己是否上报的判断机制,但是如果trap上报失败如何处理呢?


一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。

1)管理信息库MIB—SNMP管理和Agent的沟通桥梁:MIB是资源和对象标识符oid(object identifier)之间唯一对应关系的数据库。任何一个被管理的资源都可以用oid来对应。每个SNMP设备(Agent)都有自己的MIB,SNMP agent必须查询MIB库,才能识别SNMP管理的请求。

iso.org.dod.internet.mgmt.mib.ip.ipInReceives对应的数字表示为:1.3.6.1.2.1.4.3。比如,设置或获取系统正确运行时间的oid为1.3.6.1.2.1.1.3,更多请查看SNMP oid列表

Oid树

2) SMI:管理信息结构。主要作用是:(1)定义了对象命名的规则;(2)定义了类型规则。(3)定义了编码方法。

SNMP请求和响应

SNMP的请求和响应是基于UDP协议的异步消息,不需要等待响应。

1)  Get-request操作:SNMP管理从SNMP Agent提取一个或多个参数值。

2)  Get-next-request操作:SNMP管理从SNMP Agent提取一个或多个参数的下一个参数值。

3)  Get-bulk操作:SNMP管理从Agent提取批量的参数值;

4)  inform-request操作:允许一个SNMP管理a发送inform消息给其他的SNMP管理b,SNMP管理b再响应ackknowledgement给SNMP管理a。后来并没有局限于SNMP管理,SNMP agent也可以发送inform消息,比trap又多了一层确认收到消息的保护机制。否则没有收到可以再发送trap消息。

5)  Set-request操作:SNMP管理设置SNMP Agent的一个或多个参数值。节点有可写属性

6)  Get-response操作:SNMP Agent返回的一个或多个参数值,是SNMP Agent对SNMP管理前面4个操作的响应。

7)  Trap操作:SNMP Agent主动发出的报文,通知SNMP管理所发生的事情。

SNMPv1 :在RFC1157中定义,包含5个请求/响应:1),2),5),6),7)。

SNMPv2 :V2其中一个变种V2C是基于共同体(Community),在RFC1901中定义的一个实验性协议。包含7个请求/响应:1),2),3),4),5),6),7)。

SNMPv3 :基于安全(security),包含7个请求/响应:1),2),3),4),5),6),7)。

SNMP对比

V2的Get,GetNext和Set操作相同于v1的,此外V2还加强了一些协议操作,如果get-request需要多个请求参数,如果有一个不存在,请求会被正常执行,但在v1中会响应一个错误消息。v1版本在trap消息和其他get/set操作消息的PDU不同,v2版本简化了trap消息,使get/set/trap消息的pdu相同。

SNMP查询上报通知流程

SNMP管理查询的SNMP agent的端口是161,接收SNMP agent上报或通知的SNMP管理的端口上162,SNMP管理和agent之间的通讯过程如下:

SNMP管理和agent通信过程

SNMP管理的查询和设置流程,结合SNMP请求和响应:a. 1)或2)或3)或5)请求资源场景,通过资源在mib找到oid,分别组装UDP协议报文传输给SNMP agent。b. agent根据请求中的oid去mib 中找到对应的资源:如果oid是查询某个消息(含批量的),然后去设备上查找资源信息;如果oid是设置agent的参数,则设置agent参数。c. SNMP agent查询到数据或设置参数成功则做出响应6),组装UDP协议返回给SNMP管理。

SNMP管理查询/设置流程

SNMP agent上报流程,结合SNMP请求和响应:a. SNMP agent检测到设备上有资源消息产生,根据资源消息,到mib中找到对应oid,通过7)trap上报,封装为UDP协议消息上报给SNMP管理。b. SNMP管理收到上报信息后查询和agent一样的mib库,通过oid找到资源消息。

SNMP上报流程

SNMP inform流程,结合SNMP请求和响应:a. SNMP agent检测到设备上有资源消息产生,根据资源消息,到mib中找到对应oid,通过4)inform上报,封装为UDP协议消息上报给SNMP管理。b. SNMP管理收到上报信息后查询和agent一样的mib库,通过oid找到资源消息,然后响应给SNMP agent消息acknowledgement以确认收到消息,否则可以再次发送inform消息。这是比trap实现相比的优势。SNMP管理之间发送inform消息也是相同的流程。

SNMP通知流程
SNMP协议之安全

V1,V2均采用明文传送,V3采用加密传送,即SNMPV1,V2用抓包工具能在数据包中直接看到团体名。

v1只使用一种安全策略,团体名(和密码相似)。Agent能够被设置回答哪些团体名(SNMP管理)的查询,很容易让人截取得到团体名或密码。

v2增加了不少额外的安全。首先所有的包信息除了目的地址,其他都被加密(含团体名和源IP地址)。Agent 能够解开加密包获取团体名和源IP地址使请求有效。

v2在安全策略演变时存在多个变种,实际存在多个消息格式。各个v2变种之间的PDU有相同的格式,而总的消息格式又不同。

v3提供三重的安全机制:最高层是认证和私密,中间层提供认证而没有私密,底层没有任何的认证机制和私密。

v3 在前面的版本上增加了安全能力和远程配置能力,v3为消息安全和VACM(View-based Access Control Model)引入了USM(User-based Security Model),该结构支持同时使用不同的安全机制,接入控制,消息处理模型。有三个可能的安全级别: noAuthNoPriv, authNoPriv, 和 authPriv。noAuthNoPriv 级别指明了没有认证或私密性被执行。authNoPriv 级别指明了认证被执行但没有私密性被执行。authPriv 级别指明了认证和私密性都被执行。auth---认证 支持MD5 or SHA;priv---加密 支持DES or RSA;

通用的v3消息格式遵循相同的消息封装格式包含一个头和一个被封装PDU。 头部区域,被分成两个部分,一部分处理安全,和另外一部份与安全无关的部分。与安全无关部分在所有的SNMPv3中是相同的,而使用安全相关部分被设计成各种的SNMPv3安全模型,被SNMP内的安全模型处理。

了解完理论,又到了要实践的时候了!

it is SNMP show time!!

下期预播:SNMP相关工具!

有心的朋友,可能看到SNMP报文内容怎么没有介绍!这部分会在实践后再进行介绍!

参考资料:

SNMP tutorial教程

SNMP原理

SNMP wikipedia

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容