1,引入
使用的是Net-snmp 5.9.1 源码编译测试snmptrapd 接收trap包的功能简单验证
2,snmptrapd.conf 的配置
authCommunity log,execute,net public
disableAuthorization yes :关闭认证
logFile /var/log/snmptrapd.log
outputOptions straphandle default ./handler.sh :收到trap执行的默认动作
handler.sh :脚本随便写,主要是能体现确实有收到和处理的trap包就行
#!/bin/bash
echo -ne "handler recive trap packet.....\n"
touch hello.c
3,snmptrapd的启动
进入install 目录,sbin下找到snmptrapd进程,使用上面的配置文件生成snmptrapd.conf
运行:./snmptrapd -c ./snmptrapd.conf &
报错:./snmptrapd: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
原因: 编译net-snmp时手动加载了openssl,使用时需添加环境变量:
export LD_LIBRARY_PATH=/home/openssl-1.1.0g/install/lib:$LD_LIBRARY_PATH
成功运行。
4,使用snmptrap测试
在install 的bin目录下找到snmptrap,发现snmpinform是软链接到snmptrap,--help发现两者并未什么区别,但是snmptrap包,是主动发送,不需要管理端进行确认,而snmpinform需要管理端进行确认,否则超时退出。
命令如下:
./snmptrap -v 2c -c public localhost:162 '' SNMPv2-MIB::coldStart
./snmptrap -v 2c -c public localhost:162 '' 1.3.6.1.4.1.8072.2.3.0.1 1.3.6.1.4.1.8072.2.3.2.1 i 123456
./snmpinform -v 2c -c public localhost:162 '' 1.3.6.1.2.1.1 1.3.6.1.2.1.1.1 s "linux-hello"
抓包对比:(snmptrap包)
可以看到snmptrap包只是发送了trap,服务端无响应。
snmpinform包,服务端回了一个相同的响应报文,如果服务端不回应,inform将超时退出
总结:从上面看出两者trap包没有多大差别,主要i差别在是否响应,测试的过程发现snmptrapd为记录日志,但成功执行了默认处理脚本。
需要注意的是:
抓包需要抓环回口的包,使用命令是需要使用localhost:162 或者127.0.0.1:162,要不snmptrapd不回响应。