目录
前言:现在的项目有设备是用的snmp协议,需要进行对接,然后整理了一个文档出来方便理解,最后被要求在内部做了一次分享会,也就是现在的版本。章节分的不是很好,内容仅供参考!
一、SNMP概述
1.1、什么是snmp
简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议(SGMP:Simple Gateway Monitor Protocol)。
1.2、SNMP应用场景
利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以使用统一的网管面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
1.3、SNMP和UDP
SNMP采用UDP协议在管理端和agent之间传输信息。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。
1.4、Snmp版本
SNMP目前共有v1,v2,v3三个版本,下图从安全性对比了三个版本:
SNMPV1,V2均采用明文传送,SNMPV3采用加密传送,也就是说对应SNMPV1,V2用抓包工具能在数据包中直接看到团体名。
二、SNMP组成
在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为【管理站】,负责网管命令的发出、数据存储、及数据分析。被监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通信。
- 设备:指在网络中需要管理和监控的设备,例如提供服务的服务器、路由器等,这些设备必须支持snmp协议;
- 管理组件:一般来说指的是运行网络管理系统的计算机(也可以指在这个计算机上运行的监控软件),这个计算机可能与被管理的网络设备在地理上隔绝的,但是可以远程监控和管理网络设备,例如网吧的网管的电脑就可以看做一个管理组件,可以用来监控每个电脑的运行,以及管理你上网的时间并提出预警;
- 代理Agent:这是指运行在被管理设备上的一个软件模块,用来维护被管理设备的管理信息数据并可在需要时把管理数据发送给管理组件;
-
- 代理有MIB(Management Information Base,管理信息库)对象变量,可以从管理信息库MIB收集信息并回传给管理组件;
- 管理信息(MIB)库可以理解成为agent维护的管理对象数据库,MIB中定义的大部分管理对象的状态和统计信息都可以被NMS访问。MIB是一个按照层次结构组织的树状结构,每个被管对象对应树形结构的一个叶子节点,称为一个object,拥有唯一的数字标识符。在网络设备的MIB库中有由多个MIB模块定义的多组各自相关联的对象,其实说白了里面存储的是网络设备的属性,比如系统信息,网卡信息,进程用户数等等;
-
- 当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例,以获取MCV3000版本信息的ODI为例: 1.3.6.1.4.1.16535.4.1.0
三、snmp命令
3.1、代理和管理站的模型
Snmp分2种角色:SNMP管理站(manager,我们的本机127.0.0.1)和SNMP代理(agent, 我们要操作的机器,比如 192.168.1.144)。管理站指的是运行了可以执行网络管理任务软件的服务器,通常被称作为网络管理工作站(NMS),NMS负责采样网络中agent的信息,并接受agent的trap。代理是实际网络设备中用来实现SNMP功能的部分。代理在UDP的161端口接收NMS的读写请求消息,管理站在UDP的162端口接收代理的事件通告消息。所以,一旦获取设备的访问权限(community,默认为public),就可以访问设备信息、改写和配置设备参数。由于采用UDP协议,不需要在代理和管理站之间保持连接。
3.2、SNMP的操作命令
SNMP协议之所以易于使用,这是因为它对外提供了三种用于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。
- Get:管理站读取代理者处对象的值。它是SNMP协议中使用率最高的一个命令,因为该命令是从网络设备中获得管理信息的基本方式。
- Set:管理站设置代理者处对象的值。它是一个特权命令,因为可以通过它来改动设备的配置或控制设备的运转状态。它可以设置设备的名称,关掉一个端口或清除一个地址解析表中的项等。
- Trap: 代理者主动向管理站通报重要事件。它的功能就是在网络管理系统没有明确要求的前提下,由管理代理通知网络管理系统有一些特别的情况或问题 发生了。如果发生意外情况,客户会向服务器的162端口发送一个消息,告知服务器指定的变量值发生了变化。通常由服务器请求而获得的数据由服务器的161 端口接收。Trap 消息可以用来通知管理站线路的故障、连接的终端和恢复、认证失败等消息。管理站可相应的作出处理。
- get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值。
- get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的。
3.3、SNMP的消息构成
SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。因此,可用于处理管理代理定义的各种任务。
一条SNMP消息由"版本号"、"SNMP共同体名"和"协议数据单元(PDU)"构成,数据包的长度不是固定的。
命令示例:snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.4.20
- 版本识别符(version identifier):用于说明现在使用的是哪个版本的SNMP协议,确保SNMP代理使用相同的协议,每个SNMP代理都直接抛弃与自己协议版本不同的数据报。
- 团体名(Community Name):团体(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。类似于密码,默认值为 public。团体名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理 员用一个错误的分区名查询管理代理时,系统就发送一个autenticationFailure trap报文。
- 协议数据单元(PDU):PDU (协议数据单元)是SNMP消息中的数据区, 即Snmp通信时报文数据的载体。PDU指明了SNMP的消息类型及其相关参数
3.4、PDU(协议数据单元)
PDU (协议数据单元)是SNMP消息中的数据区, 即Snmp通信时报文数据的载体。
3.5、OID(Object Identifier)
每个管理对象都有自己的OID(Object Identifier),管理对象通过树状结构进行组织,OID由树上的一系列整数组成,整数之间用点( . )分隔开,树的叶子节点才是真正能够被管理的对象。
四、SNMP与TR069简单对比
|
TR069 |
SNMP | |
|---|---|---|
| 协议栈 | 完整,SOAP | 简单 |
| 安全性 | 健全 | 缺乏 |
| 事物处理 | 完整,协议复杂,处理要求高 | 简单 |
| 传输协议 | TCP可靠 | UDP不可靠 |
| 部署方式 | 灵活,可穿越NAT/防火墙 | 需分配固定IP,部署过程繁琐 |
最后说下TR069的开发成本比snmp高的多,TR069更健全也更复杂。。
五、实践
第一步、打开win7的snmp开关,此处不详细说明,百度一下
第二步、下载安装net-snmp,下载地址http://www.net-snmp.org/download.html
第三布、获取IP信息,打开命令编辑器,输入命令
snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.4.20
得到以下信息:
IP-MIB::ipAdEntAddr.127.0.0.1 = IpAddress: 127.0.0.1
IP-MIB::ipAdEntAddr.172.16.100.11 = IpAddress: 172.16.100.1
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.172.16.100.11 = INTEGER: 11
IP-MIB::ipAdEntNetMask.127.0.0.1 = IpAddress: 255.0.0.0
IP-MIB::ipAdEntNetMask.172.16.100.11 = IpAddress: 255.255.2
IP-MIB::ipAdEntBcastAddr.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntBcastAddr.172.16.100.11 = INTEGER: 1
IP-MIB::ipAdEntReasmMaxSize.127.0.0.1 = INTEGER: 65535
IP-MIB::ipAdEntReasmMaxSize.172.16.100.11 = INTEGER: 65535
命令解释:
-v 1|2c|3 指定SNMP协议版本
-c COMMUNITY 指定共同体字符串
localhost 被管理设备IP
1.3.6.1.2.1.4.20 机器Ip信息的OID