我这次是使用net-snmp软件开发包尝试开发SNMP客户端代理。Net-snmp是个开源软件,基于C语言开发,便于移植,用于开发snmp代理,但也提供管理端的查询工具。
首先得安装net-snmp这个软件。从网上可以下载相关的软件包,我在这里使用的是5.4.1版本。安装比较简单,先是要配置,然后编译,最后安装。也就是常规的configure, make ,make install三个步骤就可成功编译安装源代码。
运行net-snmp之前先要进行环境设置,否则无法查询到结果。环境配置文件由snmpconf命令交互生成。运行snmpconf后,提示有三个配置文件:snmpd.conf,snmptraps.conf,snmp.conf。其中,snmpd.conf用来配置代理和管理端通信时的参数,只需设置两个参数就可正常运行程序了,一是community name,有只读rocommunity和读写rwcommunity之分,相当于访问账号,这里设rocommunity为public;另一个是访问端口,设为snmp协议默认的161端口。 Snmp.conf是与mib库设置相关的配置文件。Snmptraps.conf用来设置代理陷阱。生成的配置文件snmpd.conf按照提示拷贝到/usr/local/share/snmp目录下。
当环境配置好了以后,运行snmpd,即snmp代理进程,就可以使用管理工具查询其中的信息了。Snmp的查询工具比较多,可以随便使用如snmpget,snmptranslate等来测试一下能否查询到代理里面mib的节点的值或者OID号。下面介绍一下什么是MIB。
MIB是Management Information Base的缩写,中文名字叫“管理信息库”,它是网络管理数据的标准,在这个标准里规定了网络代理设备必须保存的数据项目,数据类型,以及允许在每个数据项目中的操作。通过对这些数据项目的存取访问,就可以得到该网关的所有统计内容。再通过对多个网关统计内容的综合分析即可实现基本的网络管理。MIB的主要用途是让SNMP通过查讯代理MIB中相应对象的值,实现对对网络设备状态的监视。
MIB库简单的说就是一个树状的数据库,通过客户端软件,可以直接对树的节点进行查询,修改,增加,删除的操作。而我今天要说的就是如何在客户端代理里面,自定义MIB,也就是增加自己私有的MIB。
第一步,要写自己的MIB文件,定义节点的OID,数据类型,访问权限,值,描述信息等。举个例子来说明。下面是RFC1212中关键组件:
IMPORTS
ObjectName
FROM RFC1155-SMI
DisplayString
FROM RFC1158-MIB;
OBJECT-TYPE MACRO ::=
BEGIN
TYPE NOTATION ::=
-- must conform to