SNMP学习
- 格式:pdf
- 大小:92.45 KB
- 文档页数:3
NET-SNMP工具的使用当环境设置好后,运行snmpd,即snmp代理进程,就可以使用管理工具查询其中的信息了。
Net- snmp提供的查询工具有很多,这里只介绍常用的几个,而且大部分查询命令的格式都大同小异。
这里以.dod.internet.mgmt.mib-2.system为例,其Oid为:.1.3.6.1.2.1.1。
结构如下:………system .1.3.6.1.2.1.1|——sysDescr .1.3.6.1.2.1.1.1|——sysObjectID .1.3.6.1.2.1.1.2|——sysUpTimeInstance .1.3.6.1.2.1.1.3|——sysContact.0 .1.3.6.1.2.1.1.4|——sysName.0 .1.3.6.1.2.1.1.5|——sysLocation.0 .1.3.6.1.2.1.1.61) snmpwalk [APPLICATION OPTIONS] [COMMON OPTIONS] [OID] ...用来取得所有类识别代码(OID, Object Identifier),取得类为从根类(root) 开始的全部MIB 类。
实例:snmpwalk -v2c -c public localhost .1.3.6.1.2.1.1-v2c:使用的是2c的snmp版本,可选1|2c|3-c public:community 名为publiclocalhost: 代理的地址,这里因为代理运行在本机上,所以可用localhost.1.3.6.1.2.1.1:这里查询的是.dod.internet.mgmt.mib-2.system,其Oid为.1.3.6.1.2.1.1,其Oid也可使用名称具体操作如下:snmpwalk -v2c -c public localhost system或:snmpwalk -v2c -c public localhost .1.3.6.1.2.1.1SNMPv2-MIB::sysDescr.0 = STRING: Linux ubuntu 2.6.27-7-generic #1 SMP Fri Oct 24 06:42:44 UTC 2008 i686SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8137) 0:01:21.37SNMPv2-MIB::sysContact.0=STRING:Me<****************>SNMPv2-MIB::sysName.0 = STRING: ubuntuSNMPv2-MIB::sysLocation.0 = STRING: Right here, right now.SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDComplianceSNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBComplianceSNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIBSNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIBSNMPv2-MIB::sysORID.6 = OID: IP-MIB::ipSNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIBSNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroupSNMPv2-MIB::sysORDescr.1 = STRING: The SNMP Management Architecture MIB.SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.SNMPv2-MIB::sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model.SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entitiesSNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementationsSNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORUpTime.3 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORUpTime.4 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORUpTime.5 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.002)snmpget——snmpget [OPTIONS] AGENT OID [OID]...用来查询叶子节点实例:snmpget -v2c -c public localhost .1.3.6.1.2.1.1.5.0-v2c:使用的是2c的snmp版本,可选1|2c|3-c public:community 名为publiclocalhost: 代理的地址,这里因为代理运行在本机上,所以可用localhost.1.3…….0:这里查询的是.dod.internet.mgmt.mib-2.system.sysName,其Oid 为.1.3.6.1.2.1.1.5,使用这个命令使叶子节点要在后面加.0。
简单网络管理协议目录章节目标章节目标简单网络管理协议背景SNMP基本组成SNMP基本命令SNMP管理信息基础SNMP和数据表示SNMP v1SNMPv1和管理信息结构SNMPv1和ASN.1数据类型SNMP MIB表SNMPv1协议实施SNMP v2SNMPv2和数据信息结构系统管理中断信息模块SNMPv2协议实施SNMP管理SNMP安全SNMP协作代理服务器代理能说两种语言的网络管理系统SNMP参考: SNMPv1消息格式SNMPv1消息头SNMPv1协议数据单元陷阱协议数据单元格式SNMP参考: SNMPv2消息格式SNMPv2消息头SNMPv2协议数据单元取得散装协议数据单元格式复习问题章节目标管理信息基础·论述SNMP管理信息基础·描述SNMP v1·描述SNMP v2简单网络管理协议背景简单网络管理协议(SNMP)是一种应用层协议, 便于在网络设备间交换管理信息. 它是TCP/IP 协议簇的一部分. 网络管理员使用SNMP管理网络性能, 发现和解决网络故障, 并计划网络增长.有两种SNMP版本: SNMP v1和SNMP v2. 它们有一些共同的特征, 但SNMPv2提供增强功能, 例如附加的协议操作.另一种版本SNMPv3的标准化还没有完成. 这一章提供对SNMPv1和SNMPv2协议操作的描述. 图56-1描述SNMP管理的基本网络.图56-1: SNMP便于设备间的网络信息的交换.SNMP基本组成一个SNMP管理的网络包含三个主要部分: 被管理设备、代理和网络管理系统(NMSs).一个被管理设备是一个包含一个SNMP代理并处于被管理的网络中的一个网络结点。
被管理设备收集和存储管理信息,并使用SNMP使这些信息对网络管理系统有用。
被管理设备有时被称为网络元素,可能是路由器和访问服务器,交换机和网桥,集线器,计算机主机或打印机。
代理是处于被管理设备中的一个网络管理软件模块。
SNMP(简单网络管理协议)的原理与管理技巧SNMP(Simple Network Management Protocol),即简单网络管理协议,是一种用于网络管理的标准协议。
它被广泛应用于计算机网络中,用于监控和管理网络设备,提供网络的可靠性和可用性,并及时发现和解决网络故障。
本文将介绍SNMP的原理和管理技巧,并提供相关实例,旨在帮助读者更好地理解和应用SNMP。
1. SNMP的基本原理SNMP是一种应用层协议,基于客户-服务器模型。
它主要由管理系统(Manager)和被管理设备(Agent)组成。
管理系统负责监控和管理设备,而被管理设备则向管理系统提供相关的信息。
SNMP的工作原理是通过管理系统发送请求(GetRequest)到被管理设备的Agent,Agent收到请求后,会根据请求返回相应的信息。
管理系统可以通过设置(Set)请求来修改被管理设备的配置参数,也可以通过陷阱(Trap)机制,实现对网络故障的监测和通知。
2. SNMP的管理技巧2.1 合理选择SNMP版本SNMP有多个版本,其中最常用的是SNMPv1、SNMPv2c和SNMPv3。
不同版本的SNMP在安全性、功能和扩展性上有所差异。
在选择SNMP版本时,需要根据实际需求进行权衡。
2.2 配置网络设备的SNMP代理要实现对网络设备的监控和管理,首先需要在被管理设备上配置SNMP代理。
通过设置SNMP代理,可以定义设备的基本信息、访问控制列表、陷阱接收者等,从而提供给管理系统有效的信息。
2.3 合理使用SNMP的命令和对象SNMP提供了丰富的命令和对象,管理系统可以通过这些命令和对象获取设备的状态和配置信息。
在使用这些命令和对象时,需要根据实际情况选择合适的命令,并了解各个对象的具体含义和取值范围。
2.4 合理配置SNMP的告警和陷阱SNMP的陷阱机制可以实现对网络故障的主动监测和通知。
为了及时发现和解决问题,需要合理配置SNMP的告警和陷阱功能。
SNMP实验报告6汇总SNMP(Simple Network Management Protocol)是一种用于网络管理的协议。
它允许网络管理员通过监控和管理网络设备来实现对网络的远程控制。
本次实验主要是对SNMP协议的理论知识进行了深入的学习,并对SNMP进行了实际应用。
在实验过程中,首先我们了解了SNMP的基本概念和工作原理。
SNMP由管理站点和代理节点组成,管理站点负责向代理节点发送指令,并接收其返回的信息,代理节点通过收集和组织设备的信息,并将其提供给管理站点。
SNMP的管理站点和代理节点之间通过网络进行通信。
实验中,我们使用了一款开源的SNMP管理工具,名为Zabbix。
Zabbix是一款功能强大的监控系统,能够对网络设备、服务器、应用程序等进行全面的监控和管理。
我们通过创建主机、设定监控项和触发器,实现了对网络设备的远程监控和管理。
首先,我们创建了Zabbix的管理站点,并添加了待监控的设备。
在添加设备的过程中,我们需要填写设备的IP地址、SNMP团体名等信息。
SNMP团体名是用于访问SNMP代理节点的标识,可以通过SNMP代理节点的设置进行配置。
接下来,我们设定了监控项和触发器。
监控项是用于收集设备信息的指标,可以是CPU使用率、内存使用率等。
触发器是用于触发报警的条件,可以是设备的CPU使用率超过80%、内存使用率超过90%等。
通过设定监控项和触发器,我们可以及时了解设备的健康状态,并采取相应的措施。
在实验中,我们还学习了SNMP的OID(Object Identifier)的使用。
OID是用于唯一标识设备信息的一串数字,类似于设备的地址。
我们可以通过OID来获取设备的信息。
在Zabbix中,我们可以通过设定监控项的OID来收集设备的信息。
通过实验,我们更加深入地了解了SNMP的知识,并掌握了使用SNMP 进行网络管理的方法。
SNMP能够帮助网络管理员实现对网络设备的监控和管理,能够及时发现设备的问题,并采取相应的措施。
简单网络管理协议学习理解1.SNMP网络管理协议综述SNMP(Simple Network Management Protocol)是被广泛接受并投入使用的工业标准,它是由SGMP即简单网关监控协议发展以来的。
它的目标是保证管理信息在任意两点中传送,便于网络管理员在网络上的任何节点检索信息,进行修改,寻找故障;完成故障诊断,容量规划和报告生成。
它采用轮询机制,提供最基本的功能集。
最适合小型、快速、低价格的环境使用。
它只要求无证实的传输层协议UDP,受到许多产品的广泛支持。
2.1 管理信息经由SNMP协议传输的所有管理倍息都表现为非聚集的对象类型。
这些对象类型被收集到一个或多个管理信息库[MIB]中并且对象类型按照管理信息结构和标识(SMI)定义。
简单网络管理协议策l版的sM[于1990年5月定义在一篇题为《基于因特网的了TCP/IP管理信息结构和标识》的RFC中。
这一RFC要求所有的管理信息库数据和信息必须根据ISO 8824标准《抽象句法表示法1规范》(ASN.1)编码。
按照ASN.1表示所有信息和对象的目的在于方便向OSI的网络管理协议迁移而无需重新定义现已存在的所有对象和MIB。
SMI为每一对象类型定义以下成分:①名字;②句法;②编码说明。
注意:一个对象类型的名字明确地代表一个对象,称为对象标识符。
不得分配标识符0给对象类型作为其名字的一部分。
为便于阅读,在标准文档中对象标识符旁边包含对这一对象的描述。
对象标识符是按照在OSI MIB树中建立的严格分层空间构造的,对象标识符总是一个唯一的从树根开始描述MIB树的整数序列。
对象标识符和它的文字描述的组合称为标号。
2.1.1 管理树SMI明确要求所有被管理的信息和数据都要由管理树来标识。
这棵管理树来源于OSI的定义,它具有从很开始的严格分层化结构。
管理拷的分支和叶子是用数字和字母两种方式显示的。
数字化编码是机器可读的,字母显示则更适合于人的眼睛并帮助用户寻找穿过错综复杂分支的路径。
snmp学习笔记——配置使用trap(一)本文是笔者学习net-snmp开发包时的心得,由于那个官方网站的东西比较乱,所以写一个总结,希望后来者少走些弯路一,trap的用途TRAP是提供从代理进程到管理站的异步报告机制。
为了使管理站能够及时而又有效地对被管理设备进行监控,同时又不过分增加网络的通信负载,必须使用陷入(TRAP)制导的轮讯过程。
代理进程负责在必要时 向管理站报告异常事件,得到异常事件的报告后,管理站可以查询有关的代理,以便得到更具体的信息,对事件的原因做进一步的分析二,trap的工作流程1,agent端:<!--[if !supportLists]-->A, <!--[endif]-->编写mib文件,确定好trap名称等信息。
<!--[if !supportLists]-->B, <!--[endif]-->命令方式:发送各种trap命令(manager地址后面一定要加端口号162),在manager端看反应结果,在agent端无反应以下都未实现<!--[if !supportLists]-->C, <!--[endif]-->自动触发:配置snmpd.conf设置触发trap,系统发生某类错误时会自动触发相应类型的trap,发送给manager<!--[if !supportLists]-->D, <!--[endif]-->程序方式:一部份trap需要写c语言程序,用相应的api(send_easy_trap 或 send_v2trap)发送2,manager端:<!--[if !supportLists]-->A, <!--[endif]-->配置snmptrapd.conf文件,设置访问权限<!--[if !supportLists]-->B, <!--[endif]-->将mib导入到mibs文件夹中<!--[if !supportLists]-->C, <!--[endif]-->用perl等脚本语言编写处理trap的程序<!--[if !supportLists]-->D, <!--[endif]-->配置snmptrapd.conf文件,添加traphandler项,将不同的trap对应到不同的处理程序上三,trap的环境配置<!--[if !supportLists]-->1, <!--[endif]-->manager端<!--[if !supportLists]-->a, <!--[endif]-->在/etc/hosts.allow加入允许接受的网段snmptrapd: 192.168.<!--[if !supportLists]-->b, <!--[endif]-->建立/usr/share/snmp/snmptrapd.conf(我的机器上是这个,不同机器不同,可能有的放在/etc/snmp,/usr/local/share/snmp/下,视不同情况慢慢实验),加入以下一行:authcommunity execute|log|net public设置所有用户的访问权限:可执行,记录,传递四,命令方式的过程1,处理系统默认的trap添加以下几行到snmptrapd.conf中traphandle .1.3.6.1.6.3.1.5.1 page_me uptraphandle .1.3.6.1.4.1.2021.251.1 page_me uptraphandle .1.3.6.1.4.1.2021.251.2 page_me downtraphandle default log_it用snmptrapd –d –f –Lo启动snmptrapd然后在agent端输入snmptrap -v 2c -c public 192.168.213.64:162 "" UCD-SNMP-MIB::ucdStartManager端反应:NET-SNMP version 5.3.0.1Received 73 bytes from UDP: [192.168.213.64]:328070000: 30 47 02 01 01 04 06 70 75 62 6C 69 63 A7 3A 02 0G.....public.:.0016: 04 58 92 A4 F0 02 01 00 02 01 00 30 2C 30 10 06 .X.........0,0..0032: 08 2B 06 01 02 01 01 03 00 43 04 03 E7 18 95 30 .+.......C.. 00048: 18 06 0A 2B 06 01 06 03 01 01 04 01 00 06 0A 2B ...+...........+0064: 06 01 04 01 8F 65 81 7B 01 .....e.{.192.168.213.64 [UDP: [192.168.213.64]:32807]: Trap , DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (65476757) 7 days, 13:52:47.57, SNMPv2-MIB::snmpTrapOID.0 = OID: UCD-SNMP-MIB::ucdStartsh: page_me: command not found说明收到trap ucdstart并且调用对应的脚本程序,这里由于系统没有page_me这个命令,所以返回命令找不到<!--[if !supportLists]-->2, <!--[endif]-->处理自定义trap(参考/wiki/index.php/TUT:snmptrap)编写两个mib文件,包括snmp1和snmp2两种trapSnmp1的mib:TRAP-TEST-MIB.txtTRAP-TEST-MIB DEFINITIONS ::= BEGINIMPORTS ucdExperimental FROM UCD-SNMP-MIB;demotraps OBJECT IDENTIFIER ::= { ucdExperimental 990 }demo-trap TRAP-TYPESTATUS currentENTERPRISE demotrapsVARIABLES { sysLocation }DESCRIPTION "This is just a demo"::= 17ENDSnmp2的mib:NOTIFICATION-TEST-MIB.txtNOTIFICATION-TEST-MIB DEFINITIONS ::= BEGINIMPORTS ucdavis FROM UCD-SNMP-MIB;demonotifs OBJECT IDENTIFIER ::= { ucdavis 991 }demo-notif NOTIFICATION-TYPESTATUS currentOBJECTS { sysLocation }DESCRIPTION "Just a test notification"::= { demonotifs 17 }END然后放入到mibs文件夹中在manager端敲入命令:snmptrap -v 2c -c public 192.168.213.64:162 "" NOTIFICATION-TEST-MIB::demo-notifSNMPv2-MIB::sysLocation.0 s "just here"agent端输出:Received 96 bytes from UDP: [192.168.213.64]:328080000: 30 5E 02 01 01 04 06 70 75 62 6C 69 63 A7 51 02 0^.....public.Q.0016: 04 17 27 54 32 02 01 00 02 01 00 30 43 30 10 06 ..'T2......0C0..0032: 08 2B 06 01 02 01 01 03 00 43 04 03 F0 3A 1A 30 .+.......C...:.00048: 18 06 0A 2B 06 01 06 03 01 01 04 01 00 06 0A 2B ...+...........+0064: 06 01 04 01 8F 65 87 5F 11 30 15 06 08 2B 06 01 .....e._.0...+..0080: 02 01 01 06 00 04 09 6A 75 73 74 20 68 65 72 65 .......just here192.168.213.64 [UDP: [192.168.213.64]:32808]: Trap , DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks:(66075162) 7 days, 15:32:31.62, SNMPv2-MIB::snmpTrapOID.0 = OID: UCD-SNMP-MIB::ucdavis.991.17,SNMPv2-MIB::sysLocation.0 = STRING: just heresh: log_it: command not found其中just here就是我们想要的结果<!--[if !supportLists]-->3, <!--[endif]-->自己编写处理trap脚本建立root/bin/traps文件,输入以下内容#!/bin/shread hostread ipvars=while read oid valdoif [ "$vars" = "" ]thenvars="$oid = $val"elsevars="$vars, $oid = $val"fidoneecho trap: $1 $host $ip $vars在manager的snmptrapd.conf加入以下几行traphandle SNMPv2-MIB::coldStart /root/bin/traps coldtraphandle SNMPv2-MIB::warmStart /root/bin/traps warmtraphandle IF-MIB::linkDown /root/bin/traps downtraphandle IF-MIB::linkUp /root/bin/traps uptraphandle SNMPv2-MIB::authenticationFailure /root/bin/traps auth# this one is deprecatedtraphandle .1.3.6.1.6.3.1.1.5.6 /root/bin/traps egp-neighbor-loss重启snmptrapd:snmptrapd –d –f –Lo 161这里要它监听161端口在agent端输入命令:snmptrap -v 1 -c public 192.168.213.64 TRAP-TEST-MIB::demotraps 192.168.213.64 2 0 ""IF-MIB::ifIndex i 1manager端的反应:Received 63 bytes from UDP: [192.168.213.64]:328120000: 30 3D 02 01 00 04 06 70 75 62 6C 69 63 A4 30 06 0=.....public.0.0016: 0A 2B 06 01 04 01 8F 65 0D 87 5E 40 04 C0 A8 D5 .+.....e..^@....0032: 40 02 01 02 02 01 00 43 04 03 F1 9E 99 30 10 30 @......C.....0.00048: 0E 06 09 2B 06 01 02 01 02 02 01 01 02 01 01 ...+...........2007-08-07 12:54:43 192.168.213.64(via UDP: [192.168.213.64]:32812) TRAP, SNMP v1, community publicUCD-SNMP-MIB::ucdExperimental.990 Link Down Trap (0) Uptime: 7 days, 15:47:44.25IF-MIB::ifIndex = INTEGER: 1trap: down 192.168.213.64 UDP: [192.168.213.64]:32812 DISMAN-EVENT-MIB::sysUpTimeInstance = 7:15:47:44.25, SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkDown, IF-MIB::ifIndex = 1, SNMP-COMMUNITY-MIB::snmpTrapAddress.0 =192.168.213.64, SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 = "public", SNMPv2-MIB::snmpTrapEnterprise.0 = UCD-SNMP-MIB::ucdExperimental.990<!--[if !supportLists]-->4, <!--[endif]-->让agent自动产生trap配置agent的snmpd.conf,加入以下几行:(未搞出来,可能是配置文件问题,manager端收不到任何trap)# send v1 trapstrapsink 192.168.213.64:162 public# also send v2 trapstrap2sink 192.168.213.64:162 secret# send traps on authentication failuresauthtrapenable 1五,下一步仔细研究snmpd.conf和snmptrapd.conf,调试出系统自动触发trap学习mib结构,搞清楚如何写自定义trap的mib搞清楚例子的意思研究一下在程序中发送trap的c语言api学习perl,python等一种脚本语言,学会编写trap处理程序。
SNMP学习笔记之SNMP报⽂以及不同版本(SNMPv1、v2c、v3)的区别本篇⽂章将重点分析SNMP报⽂,并对不同版本(SNMPv1、v2c、v3)进⾏区别!四、SNMP协议数据单元在SNMP管理中,管理站(NMS)和代理(Agent)之间交换的管理信息构成了SNMP报⽂,报⽂的基本格式如下图1:图 1SNMP主要有SNMPv1、SNMPV2c、SNMPv3⼏种最常⽤的版本。
1、SNMPv1SNMPv1是SNMP协议的最初版本,提供最⼩限度的⽹络管理功能。
SNMPv1的SMI和MIB都⽐较简单,且存在较多安全缺陷。
SNMPv1采⽤团体名认证。
团体名的作⽤类似于密码,⽤来限制NMS对Agent的访问。
如果SNMP报⽂携带的团体名没有得到NMS/Agent的认可,该报⽂将被丢弃。
报⽂格式如下图2:图 2从上图可以看出,SNMP消息主要由Version、Community、SNMP PDU⼏部分构成。
其中,报⽂中的主要字段定义如下:Version:SNMP版本Community:团体名,⽤于Agent与NMS之间的认证。
团体名有可读和可写两种,如果是执⾏Get、GetNext操作,则采⽤可读团体名进⾏认证;如果是执⾏Set操作,则采⽤可写团体名进⾏认证。
Request ID:⽤于匹配请求和响应,SNMP给每个请求分配全局唯⼀的ID。
Error status:⽤于表⽰在处理请求时出现的状况,包括noError、tooBig、noSuchName、badValue、readOnly、genErr。
Error index:差错索引。
当出现异常情况时,提供变量绑定列表(Variable bindings)中导致异常的变量的信息。
Variable bindings:变量绑定列表,由变量名和变量值对组成。
enterprise:Trap源(⽣成Trap信息的设备)的类型。
Agent addr:Trap源的地址。
网管员必读—跟我学SNMP网络管理网管员必读—跟我学SNMP网络管理说起网络管理,恐怕大部分人立刻就能想到局域网的组建、服务器的配置、美萍网管大师之类的软件使用以及软、硬件系统的安装、调试和维护等工作,而相当多的中小规模局域网管理员平日里的工作也就是不断地安装操作系统和应用软件、查杀病毒、数据备份、计算机和网线、网卡的故障排除等等,在很多非专业人士的眼里似乎这些就是网络管理的全部,而在相当多的网管论坛上,这些也都是大家讨论的重点。
然而,严格地说来,这类工作并不是真正意义上的网络管理,它们只能被称作系统管理或者系统维护,充其量它们只是网络管理中的一个很小的并且缺乏技术含量的部分,而真正的网络管理则离不开SNMP--简单网络管理协议。
由于SNMP网络管理的学习并不像普通的系统维护那么简单,它不但要求我们的网络管理员要深入了解网络中的交换和路由设备,还要求我们能够透彻认识SNMP协议原理,所以这种管理方式在大部分中小规模局域网中的运用并不多见。
但因为SNMP是目前在计算机网络中用得最广泛的网络管理协议,所以我们可以肯定的说:一个连SNMP都不清楚的网络管理员就绝对不是一个好的网络管理员。
本文中笔者将带领大家一步一步地去学习SNMP网络管理,尽量减少枯燥的理论知识、加大实践力度,将原本仿佛遥不可及的SNMP拉到大家的身边,让大家切身体会到SNMP网络管理在日常工作中的重要意义。
初识SNMP网络管理SNMP的英文全称是Simple Network Management Protocol,中文名为简单网络管理协议,是一个基于TCP/IP协议的网络管理标准。
SNMP网络管理包含两个部分:网络管理站(也叫管理进程,manager)和被管的网络单元(也叫被管设备)。
网络管理站通常是一台安装了网络管理软件的计算机,可以显示所有被管设备的状态,我们一般称之为网管工作站;而被管设备则种类繁多,包括交换机、路由器、防火墙、服务器以及打印机等等,被管设备上的管理软件我们称之为代理进程,用于回答管理进程(网管工作站)的查询。
最近在研究SNMP,因为想在一台交换机上设置一个SNMP的代理,来监控交换机的一些参数,这里我就假设我要监控交换机的某个端口的数据量。
现在说说本人对SNMP的一些看法,当然还有一些问题想和关注过SNMP的朋友一起讨论一下,毕竟自己也是个菜鸟。
先谈一下对SNMP的看法:
SNMP是个很古老的协议,其协议本身并不是很复杂顾名思义,简单网络管理协议。
但它也有不简单的地方,那就是MIB库这个东西。
这个东西我认为是对被管理对象的一个描述,描述的内容包括类型,名称(也就是OID)等等。
转用一个看到过的网站上对MIB比较好的定义。
MIB是对设备中各个被管理的对象(Managed Objects)做了一个名字(OID)、数据类型、总体逻辑结构的定义,设备会根据它里面的MIB(或是标准的MIBII,或是企业自己的私有的MIB库),构建一个被管理对象的逻辑数据库,这个数据库里有这些OID及其对应的具体的值(如网友所说的cpu利用率、端口速度等指标的具体值),网管依靠SNMP协议,通过代理的配合工作查询此数据库,找到需要的值,从而达到对设备的监控和管理工作。
接下来想问的就是关于SNMP上的一些问题:
1.如果我想在一台交换机上开发一个SNMP代理,那肯定要创建一个私有的MIB库。
那是不是就意味着我必须申请一个私有节点?然后在这个节点下来定义我的简单变量和表,那如何去申请这个节点?
2.第二个问题就是关于MIB库和交换机上参数值的问题,交换机上的代理接受到管理站上的get请求后通过MIB库找到那个参数的节点,比如是.1.
3.6.1.
4.1.5000.3。
问题来了,那个节点上的值是怎么样传递给MIB的?有些网友说是数据库,那MIB,数据库和交换机上的值是怎么联系到一起的呢?
大部分教科书上关于MIB的入门概念纯粹是扯淡的,事实上单看SNMP协议本身是很简单的,你向他发送“get 1.3.1.1.2.1”,他就根据这个OID给你返回对应的值,其实OID和Web的URL、注册表里键的路径“HKLM\LocalMachine\...\...”是一回事,无非就是数据的分层表达方式而已。
SNMP协议本身跟MIB毫不相关,你要是有兴趣用最底层的Socket编程也可以写出一个简单的代理,无非就是根据收到的OID返回对应的数据罢了
至于MIB,只是委员会规范的一些常用OID的标准而已,比如规定这一堆OID描述的是系统的基本信息,那就取名叫RFC1213吧,OID不是以点号分层的吗,这一大堆OID合起来看就是一个树结构了,就和很多工具里看到的一样了。
至于MIB的格式,是便于用工具查看或者生成程序框架用的。
那OID对应的数据是放在哪里的呢?如果自己定义一个MIB,肯定是一个键值,一个value值,这样一对一的放置。
比如说1.3.1.1.4.0是对应于计算机名(PC100003231)的,我一个GET“1.3.1.1.4.0”过去,那么我就可以在返回值中得到“PC100003231”这么个字符串,但是我不知道MIB存放的方法是怎么样的,我在MIB文件里面只能看出计算机名对应的OID 的树状结构啊。
mib文件只是一个定义这个库是怎样的这样的一个东西啊
就像数据库的脚本
mib文件是用来建库的,怎么存那更简单了,自己实现一个库不就存下去了
至于第一个问题,mib树中的结点是需要申请的,一般公司申请后是放在private结点下,后面的子树就可以自己想怎么搞就怎么搞了怎么申请其实在网上一查就知道了,我那时候
看了一下好像没说要钱,你又不是一个公司,申请这个干嘛呢
要不就自己根据规则写几个mib文件,只要写得正确,一般的解析工具也是能解析出来的介绍你三个工具AdventNet,MIB Browser,Wireshark,用mibbrowser发包,然后wireshark 截包,多看几个就明白了,其实很简单的东西
Agent一般是放网关上,通过snmp去采集网元设备的有用值。
然后转发到网管系统处理。
你只需找出你感兴趣的网元设备的OID。
Agent和网管系统如何通信,可以自己定规则。
要实现Agent可以看看SNMP4JAgent,嵌入式可以看看Agent++
你安装了snmp协议以后MIB库自然就有了,这个库你只要使用就可以了,里面包括了N 多参数。
snmp工作原理是管理端发送请求给所有客户端获取或者修改它们的参数值。
有个snmp4j的开发包可以做java开发,还是比较简单的。
简单说,就是根据 OID 返回不同的数据。
开源有很多相关代码和文件。
可以使用的。
如果只是刚开始,还是乖乖的学习一下标准的MIB II吧。
出发需要,一般也不需要开发Agent的,多数用的是SNMP提供的那个几个get,getnext等
我发现楼上的很多人都不明白我要阐述的意思我现在想知道的不是怎么通过OID去GET数据而是想自己去自定义一个OID 也就是说去扩张MIB库因为公司有自己的设备所以普通的SNMP自带的MIB库是满足不了需求的希望有达人能解答
MIB只是一份定义文件,让客户端知道怎么调
服务器端的SNMP可以用SUN 的OpenDMK,它可以根据你的MIB文件生成Java类,每一个OID都有对应的方法,你只要在方法里面返回值就可以了,不必去考虑SNMP处理的细节。
客户端OpenDMK也有,或者是用Snmp4j,非开源的有一个国产的ObjectSNMP
MIB只是定义了一个树形结构用来唯一标识有用的变量,它不涉及变量值的存储,你每次向代理发命令查询到的都是当前的变量值,也就是说设备上是不存储历史数据的,你要想做统计的话,可以将历史数据存储在管理端的数据库。
尽量往标准MIB上套,实在无法满足要求再自行设计私有MIB
借问!!
讨论这么久,看各位大侠的见解不少,这里有几个初级的知识还不懂,请给解惑
1、MIB以什么存在?是存放到内存中?还是一个实实在在的文件?
2、我们所说的snmp4j也好,命令snmpwalk也好,是读取的指定位置的MIB文件?还是读的什么东西?
3、如果我想把MIB包含的数据,拿到本地计算机中,有什么办法吗?能整体拿到吗?目的就是本地分析的话比较灵活
1.mib库(管理信息库)存放在内存中,mib文件(用来解析得到mib库的文件)是一些实实在在的文件
2.读取mib库的一个结点,叶子或者非叶子都可以
3.获取mib包含的数据很简单,直接get方法则可(类似数据库的查询),关键是看数据量,本地分析跟远程没有实质的区别,就像你连数据库,连本地的跟远程的在表面看来,没什么区别。