SNMP(simple network management protocol ,简单网络管理协议)是网络管理程序(NMS)和代理程序(Agent)之间的通信协议。它规定了在网络环境中对设备进行管理的统一标准,包括管理框架、公共语言、安全和访问控制机制。

SNMP术语:
1、NMS:网络管理程序部署在管理端,通过在管理端安装相应的管理软件,实现通过网络收集被管理端的数据,并对数据做分析制表,展示给网络管理人员。

2、Agent:代理程序是运行在被管理端的一个进程,负责和NMS通信。

3、MIB:管理信息库包括了所有可能被查询的变量的集合。

4、OID:实时管理的数据信息。

SNMP的版本共三个,分别为SNMPv1、SNMPv2、SNMPv3,其中SNMPv1和SNMPv2有很多共同特征,如都使用community(共同体名)作为登录时的校验,SNMPv2在功能上得到了增强,增加了额外的协议操作。SNMPv3在先前版本的基础上增加了安全和远程配置能力,使用了比较复杂的用户名+密码的方式。简单来说:SNMPv1功能有限;SNMPv2部署简单,功能齐全;SNMPv3增强了安全性,但大规模部署是稍显麻烦。如果对安全性要求比较高,需要重点考虑部署v3版本。

接下来围绕SNMPv2来进行介绍:

NMS运行在管理端,通过它管理若干个设备;

Agent运行在被管理端。用于和NMS进行通信;

因此,简化的管理过程就演变成了管理程序和代理程序通信的过程,很多主流的厂商设备都支持SNMP,所以通过SNMP协议,可以管理所有支持SNMP协议的设备,如防火墙、Linux服务器、路由器、交换机、Windows服务器等。

SNMP的工作流程如下所示:
网络管理之SNMP协议

SNMP提出了community(共同体名)来提供管理程序和代理程序之间的认证,以提高SNMP工作的安全性。community要求管理设备和被管理设备双方指定,并且要求完全一致,否则无法正常通信,从而避免了非法的主机管理网络设备的行为,如下图所示:

网络管理之SNMP协议

在指定community的同时还可以附加属性,比较常用的属性有RO和RW。RO代表read-only(只读),RW代表read-write(读写)。默认的community值有两个,分别是public和private,一般情况下,public附加RO属性,private附加RW属性。如果被管理设备指定community为public(RO),意味着管理端对该设备具有读取权限,没有写入权限,只能监控系统的运行状态;同理,如果指定为private(RW),管理端对该设备可读可写,既可以监控,又可以执行修改配置、改变接口状态等操作。

SNMP协议使用UDP的161和162通信,在正常情况下,NMS会周期性地向代理程序发起请求,请求一个或多个变量的取值,该请求的目标端口是161;在非常特殊的情况下,如设备严重故障,代理程序也会主动发出trap消息给NMS,此时,trap消息的目标端口是162:

网络管理之SNMP协议

trap消息,简单来说就是被管理设备主动发送消息给NMS的一种机制。当被管理设备出现严重的性能问题,甚至是接口down等问题时,Agent需要主动发送消息给NMS。假如发生此类事件时,如果不是由Agent主动通知NMS,那么NMS要等到轮询间隔才能对这一事件作出反应。

SolarWinds网管软件的使用:

SolarWinds是一款非常知名的网络安全管理软件产品,它具有强大的功能和友好的图形界面。SolarWinds包含很多的组件,其中的组件NPM(网络性能监控)是使用最为广泛的一个工具,接下来,详细介绍一下这款组件的安装及使用:

SolarWinds软件的安装需要用到Framework4.5,所以安装之前要先安装Framework4.5,然后再安装SolarWinds-NPM-v10.5。安装过程中会安装一个简版数据库,用于保存节点列表信息。

两个软件都为傻瓜式安装,安装SolarWinds-NPM-v10.5过程中需要输入一个邮箱,其余的保持默认即可。

1、安装完成后,点击下面所示:

网络管理之SNMP协议

2、会打开一个web页,出现下面的界面后,单击“ LOGIN”(因为默认没有密码,所以使用空密码登录即可):

网络管理之SNMP协议

3、solarwinds在web控制台中集成了多种非常实用的工具,非常齐全,网络性能监控器能够对带宽、错误、性能进行查询、图示和警告,也可以充当syslog服务器接受log消息及查看设备发送的trap消息等:

网络管理之SNMP协议

4、现在在路由器上执行以下命令来启用SNMP服务,以Cisco路由器为例:

R1(config)#snmp-server community private RW     #定义可以使用的共同体
以及对应的权限。
R1(config)#snmp-server host 192.168.1.1 private          #使用private共同体向主机
192.168.1.1发送trap消息
R1(config)#snmp-server enable traps            #允许所有的trap消息

5、现在回到客户端的web页,点击如下:
网络管理之SNMP协议

6、根据下图输入所示的相关消息:

网络管理之SNMP协议

7、测试成功后,单击“下一步”:

网络管理之SNMP协议

8、等待加载出选项后,在选择监控资源界面保持默认的全面选中状态,保持默认,单击“NEXT”:

网络管理之SNMP协议

9、保持默认,单击“NEXT”:

网络管理之SNMP协议

10、拖动网页到底部,点击“ OK ADD NOOE”:

网络管理之SNMP协议

11、出现如图所示,表示网络设备添加成功,现在就可以监控该网络设备的状态了:

网络管理之SNMP协议

12、路由器的详细信息:

网络管理之SNMP协议