SNMP

net-snmp

官方网站:http://www.net-snmp.org/.
从官方网站下载需要的安装包.

在CentOS联网安装

简单方便地在线安装

查看已经安装的包有哪些

[root@localhost opt]# rpm -qa|grep snmp

net-snmp-devel-5.5-60.el6.x86_64

net-snmp-libs-5.5-60.el6.x86_64

主要需要的包如下

yum install -y net-snmp

yum install -y net-snmp-devel

yum install -y net-snmp-libs

yum install -y net-snmp-perl

yum install -y net-snmp-utils

yum install -y mrtg

启动服务

systemctl start snmpd

验证服务:进程和161端口

netstat -tunlp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

udp 0 0 0.0.0.0:161 0.0.0.0:* 1947/snmpd

ps -ef|grep snmpd

root 1947 1 0 19:37 ? 00:00:00 /usr/sbin/snmpd -LS0-6d -f

[root@node1 init.d]# snmpd -v

NET-SNMP version: 5.7.2

Web: http://www.net-snmp.org/

Email: [email protected]

Copy

创建用户

先停止服务

systemctl stop snmpd

net-snmp-create-v3-user -ro -a [email protected] -A MD5 -x [email protected] -X DES testuser

adding the following line to /var/lib/net-snmp/snmpd.conf:

    createUser testuser MD5 “[email protected]” DES [email protected]

adding the following line to /etc/snmp/snmpd.conf:

    rouser testuser

参数解释:

-ro # 只读方式

-a # 指定密码

-A # 指定加密方式 MD5|SHA

-x # 隐私priv的密码

-X # 隐私加密策略 DES|AES

启动服务

systemctl start snmpd

Copy

简单测试功能

./snmpwalk -u testuser -A [email protected] -a MD5 -X [email protected] -x DES -l authPriv 127.0.0.1 -v3

Copy

编译安装

准备源代码包,上传到服务器的opt目录中.

net-snmp-5.7.3.zip

解压缩源代码包

unzip net-snmp-5.7.3.zip

修改文件夹的名字

mv net-snmp-5.7.3 net-snmp

准备编译

cd net-snmp

./configure —prefix=/usr/local/net-snmp \ # 安装路径

            —enable-mfd-rewrites # 允许新的mfd重写可用的mid模块

            —with-default-snmp-version=“3” \ # 默认的snmp版本

            —with-sys-location=“China” # 该设备的位置

            —with-logfile=“/var/log/snmpd.log” \ # 日志文件路径

            —with-persistent-directory=“/var/net-snmp” \ # 不变数据存储目录

            —with-mib-modules=“ucd-snmp/diskio” # 自研的监控内容?

./configure —prefix=/usr/local/net-snmp —enable-mfd-rewrites —with-default-snmp-version=“3” —with-sys-location=“China” —with-logfile=“/var/log/snmpd.log” —with-persistent-directory=“/var/net-snmp”

配置信息汇总


            Net-SNMP configuration summary:


  SNMP Versions Supported: 1 2c 3

  Building for: linux

  Net-SNMP Version: 5.7.3

  Network transport support: Callback Unix Alias TCP UDP IPv4Base SocketBase TCPBase UDPIPv4Base UDPBase

  SNMPv3 Security Modules: usm

  Agent MIB code: default_modules snmpv3mibs mibII ucd_snmp notification notification-log-mib target agent_mibs agentx disman/event disman/schedule utilities host

  MYSQL Trap Logging: unavailable

  Embedded Perl support: enabled

  SNMP Perl modules: building — embeddable

  SNMP Python modules: disabled

  Crypto support from: crypto

  Authentication support: MD5 SHA1

  Encryption support: DES AES

  Local DNSSEC validation: disabled


编译安装

make test

make install

验证程序

cd /usr/local/net-snmp/sbin

./snmpd -v

net-snmp 配置文件(添加用户)

创建用户并生成配置文件

/usr/local/net-snmp/bin/net-snmp-create-v3-user -ro -a [email protected] -A MD5 -x [email protected] -X DES testuser

adding the following line to /var/net-snmp/snmpd.conf:

   createUser testuser MD5 “[email protected]” DES [email protected]

adding the following line to /usr/local/net-snmp/share/snmp/snmpd.conf:

   rouser testuser

解释:

-ro # 只读方式

-a # 指定密码

-A # 指定加密方式 MD5|SHA

-x # 隐私priv的密码

-X # 隐私加密策略 DES|AES

补充:安全等级

noAuthNoPriv 无认证,无私钥

authNoPriv 有认证,无私钥

authPriv 有认证,有私钥

启动服务

cd /usr/local/net-snmp/sbin

/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf

验证服务

查看服务进程是否正常

[root@localhost sbin]# ps -ef|grep snmpd

root 109386 1 0 10:42 ? 00:00:00 ./snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf

验证功能是否正常

cd /usr/local/net-snmp/bin

./snmpwalk -u testuser -A [email protected] -a MD5 -X [email protected] -x DES -l authPriv 127.0.0.1 -v3

Copy

SNMP 基本知识

简单网络管理协议(SNMP-Simple Network Management Protocol)是一个与网络设备交互的简单方法。

该规范是由IETF在1990年五月发布的RFC 1157中定义的。

一个网络设备以守护进程的方式运行SNMP程序,该守护进程能够响应来自网络的各种请求信息。

SNMP程序提供大量的对象标识符(OID-Object Identifiers)。一个OID是一个唯一的键值对。一个SNMP管理器(客户)可以向代理查询键值对中的特定信息。

SNMP中有一个基本的认证框架,能够让管理员发送公共名来对OID读取或写入的认证。绝大多数的设备使用不安全的公共名 “public” 。

SNMP协议通过UDP端口161和162进行通信的。

一个OID看起来和一个IPv6的地址很象,并且不同的厂商有不同的前缀等信息。

OID都非常长,很难记住,因此,人们就设计了一种将数字OID翻译为人们可读的格式。这种翻译映射被保存在一个被称为 “管理信息基础”(Management Infomation Base) 或MIB的、可传递的无格式文本文件里。使用SNMP或者向SNMP设备查询,你不需要使用MIB,但是,如果没有MIB,你就得猜测你正在查看的数据是什么。某些情况下,不使用MIB也非常简单,例如查看主机名、磁盘使用率数字,或者端口状态信息。其他情况下,就非常困难了,这个时候使用MIB就非常有帮助。对于准备编写的应用程序来说,为了让用户避免妥当安装MIB带来的麻烦,而严格使用数字OID很常见。

SNMPv1是为基于公共管理的初始标准。

SNMPv2是SNMPv1框架下衍生出来的,但是没有定义信息,其后修订为SNMPv2c,一个带有于SNMPv1类似信息格式的给予公共管理的版本。SNMPv2添加了几个新的数据类型(Counter32、Counter64、Gauge32、UInteger32、NsapAdress 以及BIT STRING),以及对OID表和OID值的设置的增强。

SNMPv3是一个带有新的信息格式、ACL、安全功能和远处SNMP参数配置的、扩展了SNMPv2框架的版本。

现在,SNMPv1和SNMPv2被广泛应用,但是由于这些协议的不安全特性,通常只使用只读访问。通常,除非你确实需要附加安全特性,否则你不需要过多地关注SNMPv3。SNMPv3是具有安全性的通信协议。

OID和MIB

OID(对象标识符),是SNMP代理提供的具有唯一标识的键值。MIB(管理信息基)提供数字化OID到可读文本的映射。

所有完全验证OID都有 .iso.org.dod.internet.private 开始,数字表达为: .1.3.6.4. 。
几乎所有的OID都会跟上企业(.1)和由IANA(互联网编号分配中心分配的)唯一的厂商标号。例如OID 789表示Network Appliance格式的厂商编号( NetApp )。
厂商编号后面的是基于厂商实现的功能,并且各不相同。请注意,在iso.前面的 . ,与DNS中的后点相似,正确验证的OID是有一个表示根的前缀 . 开始的。

OID的相对格式,从企业值开始,略过所有的隐含地址。
因此,我们可以用相对地址 enterprises.netapp.netappl.raid.diskSUmmary.diskSpaceCount.0 来表示上述的OID,或者用数字格式 .1.789.6.4.8.0 .

写OID的常用格式是用MIB名称和在MIB中定义的唯一键值。例如,我们可以用简写的格式重写上述OID:
NETWORK-APPLIANCE-MIB::diskSpareCount.0
MIB中OID的书写格式规则为::MIB Name::唯一键值.instance.
某些唯一键值,可用多个实例表示,这样所有的OID都以实例值结尾。这就是为什么你得注意到大多数OID都是以一个 .0 结尾的。