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
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 结尾的。