“Network”目录存档

Introdution to SNMP

2009年09月26日,星期六

SNMP基于manager/agent模型,包含一个SNMP Manager,也称为Network Management Stations(NMS),一个SNMP agent和一个用于管理信息数据库。

SNMP manager和agent使用SNMP Management Information Base(MIB)和相关的一组命令交换信息。SNMP MIB以树型结构组织不同的信息,如节点状态、描述等,用一个长数字型tag或者object identifier(OID)区分不同的变量。

SNMP通过5种基本的信息(GET, GET-NEXT, GET-RESPONSE, SET, TRAP)在SNMP manager和SNMP agent之间通讯。Manager使用GET和GET-NEXT请求信息,当agent接到GET或者GET-NEXT信息时,将通过GET-RESPONSE告知Manager请求的信息或者请求无法完成。

Manager使用SET message设置指定的参数值,agent通过GET-RESPONSE告知Manager设置是否成功。

Agent通过TRAP message主动的通知manager一些重要的事件

Management Information Base (MIB)

每一个object都有一个唯一的object identifier(OID)。MIB给每个OID分配一个可读性好的标签。MIB像字典一样描述SNMP信息。一个agent可能使用多个MIBS,所有的agents使用一个称为MIB-II的特殊的MIB。

Configuring SNMP Agents

所有的SNMP设备都有如下配置参数:

sysLocation 设备的物理地址

sysContact  设备的联系人信息

ŸsysName   设备管理地址的Hostname,一般采用full qualified domain name

Read-write and read-only access community strings 设置访问权限的通讯字符串

Trap destination 指定trap发送地址

NET-SNMP

Net-SNMP是一个开源的SNMP agent,使用源码可以很简单的安装,默认,Net-SNMP不编译Host Resources MIB,如果想访问主机的CPU,内存,磁盘等信息,需要在configure时指定编译Host MIB:

./configure –with-mib-modules=host

make && make install

编译的过程中需要指定snmp的version,contact information和location。

安装完成后可以运行:/usr/local/net-snmp/bin/snmpconf 创建配置文件,用该命令创建配置文件比较麻烦。

如果不采用SNMP v3,可以手工编辑配置文件。

在snmpd.conf指定上面所列的几个参数就可以了:

syslocation “Operation & Maintenance Center” #system location

syscontact  admin@corporation.com #system contact

rwcommunity   private        #read-write community strings

rocommunity    public        #read-only community strings

authtrapenable   1            #enable authentication traps

trapcommunity   traps        #trap community strings

trapsink         trap1.corporation.com #SNMP v1 traps destination

trap2sink        trap2.corporation.com #SNMP v2 traps destination

rwcommuity和rocommunity可以指定具体的网段,如

rwcommunity private 192.168.0.0

由于安全的原因,SNMP v3是基于用户的,即便不想使用授权,也应该提供一个用户名。在snmpd.conf增加如下行:

rwuser username auth system

创建read-only访问权限,将rwuser修改为rouser。auth关键字表示需要身份验证,但不是私有的,如果noauth表示不需要认证,priv表示认证并私有。system表示访问system 子树。

createUser username MD5 password

net-SNMP要求密码至少8位

配置完成后就可以通过snmpwalk,取出管理树的信息:

取出整个树的信息:

snmpwalk -v 3 -u username -l authNoPriv -a MD5 -A password 127.0.0.1

取出Interface子树的信息:

snmpwalk -v 3 -u username -l authNoPriv -a MD5 -A password 127.0.0.1 interfaces

取出System子树的信息:

snmpwalk -v 3 -u username -l authNoPriv -a MD5 -A password 127.0.0.1 interfaces