一、SNMP协议概述
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
SNMP管理的网络主要由三部分组成:
被管理的设备
SNMP代理
网络管理系统(NMS)
它们之间的关系如图所示。
网络中被管理的每一个设备都存在一个管理信息库(MIB)用于收集并储存管理信息。通过SNMP协议,NMS能获取这些信息。被管理设备,又称为网络单元或网络节点,可以是支持SNMP协议的路由器、交换机、服务器或者主机等等。
SNMP代理是被管理设备上的一个网络管理软件模块,拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。
NMS运行应用程序来实现监控被管理设备的功能。另外,NMS还为网络管理提供大量的处理程序及必须的储存资源。
基本上,SNMP代理者以变量呈现管理资料。管理系统透过GET,GETNEXT和GETBULK协定指令取回资讯,或是代理者在没有被询问的情况下,使用TRAP或INFORM传送资料。管理系统也可以传送配置更新或控制的请求,透过SET协定指令达到主动管理系统的目的。配置和控制指令只有当网络基本结构需要改变的时候使用,而监控指令则通常是常态性的工作。
二、协议版本区别
①SNMPv1是SNMP协议的最初版本,提供最小限度的网络管理功能。SNMPv1的SMI和MIB都比较简单,且存在较多安全缺陷。
SNMPv1采用团体名认证。团体名的作用类似于密码,用来限制NMS对Agent的访问。如果SNMP报文携带的团体名没有得到NMS/Agent的认可,该报文将被丢弃
②SNMPv2c
SNMPv2c也采用团体名认证。在兼容SNMPv1的同时又扩充了SNMPv1的功能:它提供了更多的操作类型(GetBulk和inform操作);支持更多的数据类型(Counter32等);提供了更丰富的错误代码,能够更细致地区分错误。
三、SNMP工作原理
SNMP采用特殊的客户机/服务器模式,即代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。
SNMP的应用场景如图1所示:
管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。
四、利用路由器进行SNMP测试
1、SNMP测试工具
常用的网络管理协议有:snmp、ssh、telnet、soap等
Snmp:远程管理工具,用于管理路由器设备使用的管理软件有很多种,可以用以下软件进行管理。
2、路由器配置SNMP测试功能点说明:
2.1 SNMP设置
这边端口保持和我们的软件上面填写的短号号一致就好 并不一定是161
对不同的SNMP版本如SNMPv1、SNMPv2进行选择测试
ps:本地信息和联系信息类似于一个联系方式,在这里我们测试只要能够在mib browser上get到就可以
2.2 设置视图 & VACM
这边端口保持和我们的软件上面填写的短号号一致就好 并不一定是161
VACM
2.3 设置trap
trap的作用是,当设备(路由器)的出现问题的时候,可以向服务器传报消息
设置端口应该与前面SNMP的端口和我们的MIBbrowser软件的端口保持一致,才能正常让MIBbrowser软件连接
2.4 MIB
用于下载mib文件,mib文件的作用是查看设备的节点信息,公司设备的mib文件中只有最后一个是我们路由器信息的mib文件,其他都是行业规定的mib文件。
Mib文件的作用:mib主要用于查看设备的各个节点所对应的名称信息等,或者说就是查看设备的iod(节点信息)
2.5 mib browser软件
将下载的mib文件,导入到mib browser中,按下图设置,连接设备
2.6 在左边展开mib文件,呈现的为当前要管理的设备如路由器的一个操作节点树
右边则为配置要操作的设备ip,要操作的共同体权限
打红色的× 只能进行get(获取信息操作)
不带红色的×的才可以进行set操作
操作1:get操作
get文件夹节点信息
get某一个叶子节点信息,直接右击现在想要查看的信息,get获取
操作2:set操作
设置完之后可以用Xshell工具或者其他工具验证是否修改set成功
操作3:trap功能
工具开启trap接收服务
View->Trap View
设置好端口以及用户名
路由器端开启trap功能,在软件上点击start
连接成功trap会收到一条连接成功的信息
可以在show details查看对应的消息
可以自定义 trap 消息接口
例子(eg.):
路由器可以在串口中使用ubus 来发送trap消息
如 root@ROUTER:~# ubus call yruo_snmp eventtrap '{"head":"hello", "body":"world"}
Head 和 body 定义类似于发送邮件的主题和正文
可以在我们的管理工具上查看到设备发送过来的对应的信息。