SNMP概念
简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol)、数据库模型(database schema)和一组资源对象。该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题。
SNMP应用模型
SNMP管理的网络主要由三部分组成:
l 被管理设备
l SNMP代理
l 网络管理系统NMS
三者之间的关系
l 网络中被管理的每一个设备都存在一个管理信息库(MIB)用于收集并储存管理信息。通过SNMP协议,NMS能获取这些信息。被管理设备,又称为网络单元或网络节点,可以是支持SNMP协议的路由器、交换机、服务器或者主机等等。
l SNMP代理是被管理设备上的一个网络管理软件模块,拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。
l NMS运行应用程序来实现监控被管理设备的功能。另外,NMS还为网络管理提供大量的处理程序及必须的储存资源。
SNMP定义5种报文
get-request 操作:从代理进程处提取一个或多个参数值
get-next-request 操作:从代理进程处提取一个或多个参数的下一个参数值
set-request 操作:设置代理进程的一个或多个参数值
get-response 操作:由代理进程发出的一个或多个参数值。它是 3 种的响应操作
trap 操作:代理进程主动发出的报文,通知管理进程由事情发生
SNMP版本
SNMP V2版本:对于数据传输和认证都是明文,community有三种,分别是:
l Read-only(监控端只读取被监控端数据),内置public。
l Read-rewrite:监控端可以操作被监控端,内置private。
l Trap:被监控端可以向监控端发送数据。
SNMP V3版本:对于数据传输和认证机制都做了相应的改进(占时用的少)
SNMP监控端和被监控端
Agent:被监控端打开UDP/161端口,开启trap时打开UDP/162端口。
NMS:监控端打开UDP/162端口。
能被监控对象
Fault management:故障管理
Configuration management:配置(软硬)管理
Accounting management:记账管理
Performance management:性能管理
Security management:安全管理
MIBs(management information base)管理信息库
管理信息数据库(MIB)是一个信息存储库,它包含了管理代理中的有关配置和性能的数据,有一个组织体系和公共结构,其中包含分属不同组的许多个数据对象。
MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标识符。结构树的分枝实际表示的是数据对象的逻辑分组。而树叶,有时候也叫节点(node),代表了各个数据对象。在结构树中使用子树表示增加的中间分枝和增加的树叶。
使用这个树状分层结构,MIB浏览器能够以一种方便而且简洁的方式访问整个MIB数据库。MIB浏览器是这样一种工具,它可以遍历整棵MIB结构树,通常以图形显示的形式来表示各个分枝和树叶对象。可以通过其数字标识符来查找MIB中的数据对象,这个数字标识符号从结构树的顶部(或根部)开始,直到各个叶子节点(即数据对象)为止。这种访问方式和文件系统的组织方式一致。两者的主要区别在于文件系统中的路径名可以以绝对也可以以相对方式表示,而MIB数据对象只能以绝对方式表示,不能使用相对方式。
每一个节点都有一个对象标识符(OID)来唯一的标识,每个节点用数字和字符两种方式显示,其中对象标识符OID是由句点隔开的一组整数,也就是从根节点通向它的路径。一个带标号节点可以拥有包含其它带标号节点为它的子树,如果没有子树它就是叶子节点,它包含一个值并被称为对象。比如网络设备名的oid是.1.3.6.1.2.1.1.5.0,其值为设备名称的字符串。
MIB管理信息库与之对应的OID图:
Linux主机使用SNMP协议
被监控端agent
1 2 |
[root@www ~]# yum install net-snmp [root@www ~]# chkconfig snmpd on |
监控端NMS
1 2 3 |
[root@www ~]# yum install net-snmp-utils [root@www ~]# yum install net-snmp #如果接收被监控端trap就需要安装这个包并启动trap功能 |
SNMP的MIB库/usr/share/snmp/mibs/*
SNMP主配置文件/etc/snmp/snmpd.conf更改community
[root@www ~]# vim /etc/snmp/snmpd.conf
# sec.name sourcecommunity
com2secnotConfigUserdefault public
com2secnotConfigUser 172.16.16.1 mypublic123456
#指定community和可以监控的主机
view systemview included .1.3.6.1.2.1.6
#指定可以监控的MIB库如.1.3.6.1.2.1.6监控TCP
SNMP查询命令
1 2 3 |
snmpwalk -c public -v 2c 127.0.0.1 sysName snmpwalk -c public -v 2c 127.0.0.1 .1.3.6.1.2.1.1.5.0 SNMPv2-MIB::sysName.0 = STRING: beijing-208 |
SNMP V3的安全配置
v1、v2关闭
增加snmp v3用户
[root@www ~]# service snmpd stop
[root@www ~]# net-snmp-config –create-snmpv3-user -ro -a ttlsapwd -x DES -X ttlsades ttlsa
adding the following line to /var/lib/net-snmp/snmpd.conf:
createUser ttlsa MD5 “ttlsapwd” DES ttlsades
adding the following line to /etc/snmp/snmpd.conf:
rouser ttlsa
service snmpd start
ttlsa:用户名
ttlsapwd:密码
des:加密方式支持aes、des
ttlsades:des口令
SNMP v3的安全级别
noAuthNoPriv(不认证也不加密)
snmpwalk -v 3 -l authPriv 127.0.0.1 .1.3.6.1.4.1.2021.4.11.0
authNoPriv(认证但是不加密)
snmpwalk -v 3 -u ttlsa -a MD5 -A ttlsapwd -l authNoPriv 127.0.0.1 .1.3.6.1.4.1.2021.4.11.0
authPriv(既认证又加密)
snmpwalk -v 3 -u ttlsa -a MD5 -A ttlsapwd -x DES -X ttlsades -l authPriv 127.0.0.1 .1.3.6.1.4.1.2021.4.11.0