net-snmp 安装与trap调试

net-snmp的安装与测试

1、实验环境

windows(7)
linux(centos7)
php(7)
perl(5.16)
MIB Browser
net-snmp

2、实验目的

了解snmp-trap的接受与解析,实验当相关trap发生时,对应的服务器立即响应 TRAP是提供从代理进程到管理站的异步报告机制

snmp(简单网络管理协议)为了使服务端及时有效的对客户端的设备进行监控,

与此同时又不能过分加大网络通信负载,所以使用了陷入机制(TRAP)进行轮询。

这样在采取自陷机制后,客户端里面的代理进程在特殊时候(触发相关设置时),

会向服务端发送相关的报告,同时,服务端接收到客户端的异常事件的报告后,

通过相关的mib进行初步解析,获得异常事件的信息,从而更好的解决问题。

3、安装net-snmp

   # yum  安装
    yum -y install net-snmp
    ...
    Installed:
        net-snmp.x86_64 1:5.7.2-28.el7_4.1                                  
    Dependency Installed:
        net-snmp-agent-libs.x86_64 1:5.7.2-28.el7_4.1                              
    Dependency Updated:
        net-snmp-libs.x86_64 1:5.7.2-28.el7_4.1

# 源码安装:
#  https://sourceforge.net/projects/net-snmp/files/

    tar -zxvf net-snmp-5.7.3.tar.gz 

    cd net-snmp-5.7.3

    ./configure
 ************** Configuration Section **************

    You are about to be prompted with a series of questions.  Answer
them carefully, as they determine how the SNMP agent and related
applications are to function.

    After the configure script finishes, you can browse the newly
created net-snmp-config.h file for further - less important - parameters to
modify.  Be careful if you re-run configure though, since net-snmp-config.h
will be overwritten.

-Press return to continue-

# 在配置过程中需要进行一些简单的选择:


default version of-snmp-version: 2 

Systemcontact information(配置该设备的联系人): yourname 

System location ( 该设备的位置 ): china 

Location to write logfile ( 日志文件位置 ): /var/log/snmpd.log 

Location to Write persistent( 数据存储目录 ): /var/net-snmp

# 然后编译安装
make && make install

3.1 检查

安装后查看是否安装成功

snmpget -v 2c -c public 127.0.0.1 sysName.0

3.1.1 情况1

如出现-bash: snmpget: command not found
可能是相关支持模块未安装
解决方法

# 必须
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

##如果要使用php进行交互,还要安装
yum install -y php-snmp

3.1.2 情况2

如出现Timeout: No Response from 127.0.0.1
可能是端口和权限的问题,在snmpd.conf中设置了相关权限

systemctl start snmpd.service #开启服务
systemctl status snmpd.service #查看服务状态。
iptables -L -n #查看当前iptables规则
firewall-cmd --add-port=161/tcp --permanent     # 永久添加161端口 
firewall-cmd --add-port=162/tcp --permanent     # 永久添加162端口

3.1.3 情况3

#如安装php-snmp后还无法使用php snmp相关服务,一般是未把snmp的模块引入到php的扩展中

#rpm -ql php-snmp
#查看snmp模块位置
/usr/lib/php/modules/snmp.so

#修改/etc/php.ini
extension_dir="/usr/lib/php/modules/"

##注意,版本可能有冲突,如上述方法不起作用,需解决php之间的冲突

3.2 配置

vim /etc/snmp/snmpd.conf

##1、修改默认的 “community”  
string com2sec     notConfigUser     default     public 
#将public修改为你才知道的字符串; 
#另default字符串如果想指定特定的服务器采集数据的话,将此字段替换成允许采集服务器的IP地址。

##2、去掉#,开启功能(若没有这跳过此步)
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc 

##3、修改
access notConfigGroup ” ” any noauth exact systemview none none
#改成: 
access notConfigGroup ” ” any noauth exact mib2 none none

在安装完net-snmp之后,默认的配置文件只能看systemview的信息,需要修改配置文件
如出现

[root@bogon ~]# snmpget -v 2c -c public 127.0.0.1 sysName.0
SNMPv2-MIB::sysName.0 = No Such Object available on this agent at this OID

可以通过修改配置文件来实现

view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
view    all           included   .1
####
# Finally, grant the group read-only access to the systemview view.

#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all    none none

3.3 展示

成功演示:

# 如果没有给机器命名,系统会默认为bogon,详情可以查看centos文档
[root@bogon ~]# snmpget -v 2c -c public 127.0.0.1 sysName.0
SNMPv2-MIB::sysName.0 = STRING: bogon

4、trap测试

4.1 trap简单接收

如需了解报文可参考:
http://blog.csdn.net/eric_sunah/article/details/19557683

4.1.1 备份snmptrap.conf

cp /etc/snmp/snmptrapd.conf /etc/snmp/snmptrapd.conf.bak

4.1.2 修改snmptrap.conf

vim /etc/snmp/snmptrapd.conf


# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
# authCommunity   log,execute,net public
# traphandle SNMPv2-MIB::coldStart    /usr/bin/bin/my_great_script cold
disableAuthorization yes

4.1.3 监听snmptrap

snmptrapd -c /etc/snmp/snmptrapd.conf -f -Le -d

4.1.4 模拟发送trap

下面主要是根据v1和v2版进行的简单测试
v1版:

# 发送
snmptrap -v1 -c public 127.0.0.1 1.3.6.1.4.1.1 127.0.0.1 2 3 1000 1.3.6.1.9.9.44.1.2.1 i 12 1.3.4.1.2.3.1 s xxxooo

# 接收
Received 75 byte packet from UDP: [127.0.0.1]:43905->[127.0.0.1]:162
0000: 30 49 02 01  00 04 06 70  75 62 6C 69  63 A4 3C 06    0I.....public.<.
0016: 06 2B 06 01  04 01 01 40  04 7F 00 00  01 02 01 02    .+.....@........
0032: 02 01 03 43  02 03 E8 30  22 30 0E 06  09 2B 06 01    ...C...0"0...+..
0048: 09 09 2C 01  02 01 02 01  0C 30 10 06  06 2B 04 01    ..,......0...+..
0064: 02 03 01 04  06 78 78 78  6F 6F 6F                    .....xxxooo

2018-03-07 17:20:20 localhost [127.0.0.1] (via UDP: [127.0.0.1]:43905->[127.0.0.1]:162) TRAP, SNMP v1, community public
    SNMPv2-SMI::enterprises.1 Link Down Trap (3) Uptime: 0:00:10.00
    SNMPv2-SMI::internet.9.9.44.1.2.1 = INTEGER: 12 SNMPv2-SMI::org.4.1.2.3.1 = STRING: "xxxooo"

参数解释:

参数 解释
snmptrap 命令
-v1 版本
public 团体名
127.0.0.1 snmp代理IP
1.3.6.1.4.1.1 企业OID
127.0.0.1 snmp代理IP
2 Trap类型
3 Trap特征码
1000 uptime
1.3.6.1.9.9.44.1.2.1 企业OID
i 数据类型
12 数据值
1.3.4.1.2.3.1 企业OID
s 数据类型
xxxooo 数据值

v2版:

# 发送
snmptrap -v 2c -c public 127.0.0.1 "aaa" 1.3.6.1.4.1.2345 SNMPv2-MIB::sysLocation.0 s "you can do it"
# 接收
Received 79 byte packet from UDP: [127.0.0.1]:38208->[127.0.0.1]:162
0000: 30 4D 02 01  01 04 06 70  75 62 6C 69  63 A7 40 02    0M.....public.@.
0016: 04 16 D3 70  0D 02 01 00  02 01 00 30  32 30 15 06    ...p.......020..
0032: 0A 2B 06 01  06 03 01 01  04 01 00 06  07 2B 06 01    .+...........+..
0048: 04 01 92 29  30 19 06 08  2B 06 01 02  01 01 06 00    ...)0...+.......
0064: 04 0D 79 6F  75 20 63 61  6E 20 64 6F  20 69 74       ..you can do it

2018-03-07 17:33:03 localhost [UDP: [127.0.0.1]:38208->[127.0.0.1]:162]:
SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.2345   SNMPv2-MIB::sysLocation.0 = STRING: you can do it

参数解释:

参数 解释
snmptrap 命令
-v2c 版本
public 团体名
127.0.0.1 snmp代理IP
aaa 主机名称
1.3.6.1.4.1.2345 企业OID
SNMPv2-MIB::sysLocation.0 数据OID
s 数据类型
you can do it 数据值

你可能感兴趣的:(linux,snmp)