Centos

如何配置 snmptrapd 以處理來自瞻博網路設備的傳入陷阱?

  • June 3, 2019

我有一個 CentOS 伺服器(7.2)。我正在嘗試將其配置為 SNMP 陷阱接收器。

在我的 snmptrapd 配置中,我呼叫了一個非常基本的 shell 腳本來辨識是否收到了陷阱:

[root@centos-Main snmp]# cat /etc/snmp/snmptrapd.conf
authCommunity   log,execute,net public
traphandle default /etc/snmp/mydummyhandler.sh

這就是 mydummyhandler.sh 的樣子:

[root@centos-Main snmp]# cat mydummyhandler.sh
echo "Trap Received" >> /var/log/snmptraplog.txt

但是當從 Juniper 路由器發送陷阱時,我的 snmptrapd 不會處理它,也不會向 /var/log/snmptraplog.txt 寫入任何內容。

我從 localhost 本身發送了一些測試陷阱,它完全按預期工作。此外,為了檢查這一點,我嘗試從另一個 CentOS 伺服器發送一個測試陷阱,如下所示:

snmptrap -v 2c -c public centos-Main .1.3.6.1.6.3.1.1.5.3 .1.3.6.1.6.3.1.1.5.3    \
> ifIndex i 2 ifAdminStatus i 1 ifOperStatus i 1

它也按預期處理:

[root@centos-Main snmp]# cat /var/log/snmptraplog.txt
Trap Received

我在陷阱接收伺服器的埠 162 上執行了 tcpdump,發現從瞻博網路交換機發送的陷阱正在到達伺服器。但由於某種原因,它會默默地忽略來自 Juniper 設備的傳入陷阱,無需進一步處理。

這是從瞻博網路設備發送陷阱時看到的內容:

[root@centos-Main snmp]# tcpdump -i enp0s3 port 162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:54:14.521820 IP 192.168.0.91.58376 > centos-Main.snmptrap:  C=VINOD V2Trap(217)  system.sysUpTime.0=1768202 S:1.1.4.1.0=E:2636.4.13.0.1 E:2636.3.37.1.1.0="'Event-Trap'" E:2636.3.37.1.2.1.2.1="'event'" E:2636.3.37.1.2.1.3.1="''" E:2636.3.37.1.2.1.2.2="'message'" E:2636.3.37.1.2.1.3.1="''" S:1.1.4.3.0=E:2636.1.1.1.2.1

另外,為了比較,我粘貼了從另一台伺服器成功接收陷阱的 tcpdump 輸出:

[root@centos-Main snmp]# tcpdump -i enp0s3 port 162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:53:23.272673 IP 192.168.0.105.49182 > centos-Main.snmptrap:  V2Trap(87)  S:1.1.4.1.0=S:1.1.5.3 interfaces.ifTable.ifEntry.ifIndex=2 interfaces.ifTable.ifEntry.ifAdminStatus=1 interfaces.ifTable.ifEntry.ifOperStatus=1

您已設置snmptrapd為僅接受具有社區名稱的陷阱public

[root@centos-Main snmp]# cat /etc/snmp/snmptrapd.conf
authCommunity   log,execute,net public

但是來自瞻博網路設備的陷阱使用社區名稱VINOD代替:

[root@centos-Main snmp]# tcpdump -i enp0s3 port 162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:54:14.521820 IP 192.168.0.91.58376 > centos-Main.snmptrap:  C=VINOD V2Trap(217) ...
                                                              ^^^^^^^

您應該將瞻博網路設備的陷阱社區名稱配置為public,或在文件中添加另一authCommunitysnmptrapd.conf

authCommunity  log,execute,net VINOD

引用自:https://unix.stackexchange.com/questions/359671