1、SNMP协议
SNMP即简单网络管理协议,是监视网络设备(包括路由器、交换机、防火墙)性能的通用方法。通过SNMP管理站点,可以查看网络设备性能的图表。
一套完整的SNMP系统主要包括:
- 管理信息库(MIB)
- 管理信息结构(SMI)
- SNMP报文协议
管理信息库MIB--被管理的设备资源都表示成一个对象,MIB是被管理对象的集合,定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网络管理系统)和Agent之间的沟通桥梁
管理信息结构(SMI)--定义了SNMP框架所用信息的组织、组成和标识,奠定了描述MIB对象和描述协议如何交换信息的基础。
2、SNMP版本
v1、v2c、v3,功能是依次递增的,用的最多的是V2版本。
1. SNMPv1
是 SNMP 协议的最初版本,提供最小限度的网络管理功能。
SNMPv1 的 SMI 和 MIB 都比较简单,且存在较多安全缺陷。SNMPv1采用团体名认证。团体名的作用类似于密码,用来限NMS对Agent的访问。
如果 SNMP 报文携带的团体名没有得到 NMS/Agent 的认可,该报文将被丢弃。SNMPV1 是一种简单的请求/响应协议,网络管理系统发出一个请求,管理器则返回一个响应。
2. SNMPv2c
同SNMPv1一样也采用团体名认证。兼容SNMPv1的同时又扩充了功能,提供了更多的操作类型(GetBulk--批量获取操作等),支持更多的数据类型(Counter32等),提供了更丰富的错误代码,能够更细致地区分错误。SNMPV2添加和增强了有关协议操作。
3. SNMPv3
主要在安全性方面进行了增强,它采用了 USM(基于用户的安全控制模型)和 VACM(基于视图的访问控制模型) 技术。USM 提供了认证和加密功能,VACM 确定用户是否允许访问特定的 MIB 对象以及访问方式。
SNMP可以做什么:
- 端口出现问题时可以发送警告信息;
- 以图形方式显示网络错误;
- 以图表的方式显示网络设备的带宽使用情况,可按端口,数据流向等分类。
3、SNMP运行过程
SNMP设备包含了一个配置好的SNMP代理。网络管理系统(NMS)会与每个网络设备上的SNMP代理进行对话。
网络设备上的AGENT从UDP端口161接收的串行化请求报文,经解码、团体名验证、分析得到管理变量在MIB树中对应的节点,从相应的模块中得到管理变量的值,再形成响应报文,编码发送返回。请求端得到响应报文后,再经同样的处理来显示结果。
处理过程分为四步:
- 第一步:解码生成用内部数据结构表示的报文,解码依据ASN.1的基本编码规则。
- 第二步:取出报文中的版本号,如果与Agent支持的SNMP版本一致则继续第三步,不一致则丢弃该报文,不做进一步处理。
- 第三步:取出报文中的团体名,团体名由请求端填写。若团体名相符则继续第四步,若不相符则丢弃该报文,不做进一步处理,同时产生一个陷阱报文。
- 第四步:从通过验证的ASN.1对象中提取协议数据单元PDU,若成功则处理PDU,结果并生成一个报文,该报文的发送目的地址应与收到报文的源地址一致;如果失败,丢弃报文,不做进一不处理。
常用的SNMP配置命令:
snmp-agent sys-info contact
设置管理员的标识及联系方法,contact可自定义。
snmp-agent sys-info location
设置交换机的位置信息,初始一般没有设置。
snmp-agent community read test
设置SNMP Community,使用Community连接网络设备时,只可以读取其SNMP信息,test也可以自定义。
snmp-agent community write private
设置SNMP Community,使用Community连接网络设备时,不仅可以读取其SNMP信息,还可以将值写入SNMP的MIB对象,实现对设备进行配置。Private同样可自定义。
snmp-agent sys-info version all
设置网络设备支持的SNMP协议,有v1,v2c,v3这3个版本,设置all则同时支持这3个版本,也可设置其中一个版本。
4、snmpwalk工具
snmpwalk是SNMP的一个工具,使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息。常用snmpwalk获取支持SNMP的网络设备信息,snmpwalk可以收集交换机、路由器的cpu、内存、端口流量等信息。
①、服务器安装snmp
yum install -y net-snmp net-snmp-devel net-snmp-utils
sudo apt-get install snmpd
sudo apt-get install snmp
systemctl start snmpd
systemctl enable snmpd
为了获取所有的数据,修/etc/snmp/snmpd.conf,添加最后一行
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
view systemonly included .1
service snmpd restart
使用下面命令测试
snmpwalk -help
如果显示帮助信息,则安装成功。
②、检查上面列出的安装包是否已经安装
rpm -qa | grep snmp
检查
net-snmp-5.3.2.2-9.el5.x86_64.rpm
net-snmp-devel-5.3.2.2-9.el5.x86_64.rpm (非必须安装包)
net-snmp-libs-5.3.2.2-9.el5.x86_64.rpm
net-snmp-utils-5.3.2.2-9.el5.x86_64.rpm
四个包是否安装,用同样的方式检查其他安装包是否安装。
如果已经安装,为了保持安装的rpm包的一致性,建议删除已经安装的包,
删除命令为rpm -e --nodeps rpm包名
--nodeps表示忽略依赖。
③、snmpwalk基本语法
参数说明
–h:显示帮助。
–v:指定snmp的版本, 1或者2c或者3。
–c:指定连接设备SNMP密码。
–V:显示当前snmpwalk命令行版本。
–r:指定重试次数,默认为0次。
–t:指定每次请求的等待超时时间,单为秒,默认为3秒。
–l:指定安全级别:noAuthNoPriv|authNoPriv|authPriv。
–a:验证协议:MD5|SHA。只有-l指定为authNoPriv或authPriv时才需要。
–A:验证字符串。只有-l指定为authNoPriv或authPriv时才需要。
–x:加密协议:DES。只有-l指定为authPriv时才需要。
–X:加密字符串。只有-l指定为authPriv时才需要。
④、snmpwalk用法举例
snmpwalk -v [版本] -c [交换机SNMP密码] [交换机IP地址]
如:snmpwalk -v 2c -c switch123 192.168.31.233
回车会显示所有的OID值信息。