简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议。在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为一个短 期的网络管理解决方案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。现在,已经有了SNMPv3版本。
一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。
(1)管理信息库MIB:任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象 的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图1所示。
MIB文件中的变量使用的名字取自ISO和ITU管理的对象标识符(object identifier)名字空间。它是一种分级树的结构。如图2所示,第一级有三个节点:ccitt、iso、iso-ccitt。低级的对象ID分别由相关组织分配。一个特定对象的标识符可通过由根到该对象的路径获得。一般网络设备取iso节点下的对象内容。如名字空间ip结点下一个名字为ipInReceives的MIB变量被指派数字值3,因而该变量的名字为:iso.org.dod.internet.mgmt.mib.ip.ipInReceives相应的数字表示(对象标识符OID,唯一标识一个MIB对象)为:1.3.6.1.2.1.4.3
当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例。如ipInReceives的实例数字表示为:1.3.6.1.2.1.4.3.0.
需要注意的是,MIB中的管理对象的OID有些需要动态确定,如IP路由表,为了指明地址202.120.86.71的下一站路由(next hop),我们可以引用这样的实例:
iso.org.dod.internet.mgmt.mib.ip.ipRouteTable.ipRouteEntry.ipRouteNextHop.202.120.86.71, 相应的数字表示为: 1.3.6.1.2.1.4.21.1.7.202.120.86.71
对于这种动态对象标识的实例,由于无法转换为预先指定的Readkey名称,与飞邻的产品架构冲突(需要动态生成可变Readkey),暂不考虑支持。
(2)管理信息结构(SMI)
SMI定义了SNMP框架所用信息的组织、组成和标识,它还为描述MIB对象和描述协议怎样交换信息奠定了基础。
SMI定义的数据类型:
◆简单类型(simple)
Integer:整型是-2,147,483,648~2,147,483,647的有符号整数octet string: 字符串是0~65535个字节的有序序列OBJECT IDENTIFIER:来自按照ASN.1规则分配的对象标识符集
◆简单结构类型(simple-constructed)
SEQUENCE 用于列表。这一数据类型与大多数程序设计语言中的“structure”类似。一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型SEQUENCE OF type 用于表格。这一数据类型与大多数程序设计语言中的“array”类似。一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。
◆应用类型(application-wide)
IpAddress: 以网络序表示的IP地址。因为它是一个32位的值,所以定义为4个字节;counter:计数器是一个非负的整数,它递增至最大值,而后回零。在SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;Gauge :也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为232-1;time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;
(3)SNMP报文协议
SNMP定义了以下五种操作:
1.get-request 从一个指明的变量读取值
2.set-request 将一个值存到一个指明的变量中
3.get-next-request 遍历表格变量的值
4.get-response 对一个读取操作的回答
5.trap 由一个事件触发的回答
本设计相关的操作包括1/3/4.
一个SNMP报文由三个主要部分组成:一个协议版本(version),一个SNMP共同体(community)标识符,和一个数据区。数据区分成若干个协议数据单元PDU(Protocol Data Unit),每个PDU包括一个请求(由管理系统发送)或一个响应(由管理代理发送)。
·PDU Type:指明PDU类型(GetRequest、GetNextRequest、SetRequest、Trap);
· Request ID:SNMP请求标识;
· Error Status:表示错误和错误类型,只有响应操作才设置该字段,其他操作将该字段设为0;
· Error Index:错误索引号,与特定对象实例的错误相关,只有响应操作才设置该字段,其他操作将该字段设为0;
· Variable Bindings:SNMPv1 PDU的数据字段,携带特定对象实例的当前值(Get and GetNext请求的该字段被忽略,因为无须携带值)。
windows snmp配置
1. 在目标windows2003服务器上安装SNMP 代理
依次点击“开始”,“控制面板”,“添加或删除程序”,“添加/删除Windows组件”,双击“管理和监视工具”,勾选“简单网络管理协议(SNMP)”“WWI SNMP提供程序”,点击确定按钮。然后按照windows提示完成组件安装
提示:如不能顺利完成安装,请查阅windows帮助或寻求其服务。
2. 在目标windows2003服务器上配置SNMP 代理
单击“开始”,单击“运行”,键入 services.msc,然后单击“确定”。在服务页面双击“SNMP service”,选择SNMP service属**页面的“安全”tab页,点击【添加】按钮,输入一个团体名称,点击确定即可。
重复上面的步骤,可以添加多个团体名称。
3. 在目标windows2003服务器上打开监控系统需要连接的端口
linux snmp配置
确保 Linux 主机已经安装了snmp 服务
# rpm -qa |grep snmp
net-snmp-5.1.2-18.el4_8.2
net-snmp-utils-5.1.2-18.el4_8.2
php-snmp-5.1.6-3.el4s1.10
net-snmp-libs-5.1.2-18.el4_8.2
net-snmp-perl-5.1.2-18.el4_8.2
net-snmp-devel-5.1.2-18.el4_8.2
配置 snmp,编辑 /etc/snmp/snmpd.conf
1)首选是定义一个共同体名(community),这里是 public,及可以访问这个 public 的用户名(sec name),这里是 notConfigUser。Public相当于用户 notConfigUser 的密码。
2)定义一个组名(groupName)这里是 notConfigGroup,及组的安全级别,把 notConfigUser 这个用户加到这个组中。
3)定义一个可操作的范围(view)名,这里是 all,范围是 .1
4)定义 notConfigUser 这个组在 all 这个 view 范围内可做的操作,这时定义了 notConfigUser 组的成员可对。1这个MIB范围做只读操作。
# vi /etc/snmp/snmpd.conf
做如下修改:
1# sec.name source community
com2sec notConfigUser IP1 public
com2sec notConfigUser IP2 public
2# groupName securityModel securityName
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
3# name incl/excl subtree mask(optional)
view systemview included .1
4# group context sec.model sec.level prefix read writenotif
access notConfigGroup "" any noauth exactall none none
保存退出
# service snmpd restart
# netstat -anp|grep snmp
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29714215/viewspace-1216492/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29714215/viewspace-1216492/