Juniper デバイスからの受信トラップを処理するように snmptrapd を構成する方法を教えてください。

Juniper デバイスからの受信トラップを処理するように snmptrapd を構成する方法を教えてください。

CentOS サーバー (7.2) を持っています。これを SNMP トラップ レシーバーとして設定しようとしています。

私の snmptrapd 設定では、トラップが受信されたかどうかを確認するためだけに、非常に基本的なシェル スクリプトを呼び出しています。

[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 に何も書き込みません。

ローカルホスト自体からテスト トラップをいくつか送信しましたが、期待どおりに完全に動作しています。さらに、これを確認するために、次のように別の 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 スイッチから送信されたトラップがサーバーに到達していることがわかりました。しかし、何らかの理由で、Juniper デバイスからの受信トラップはそれ以上処理されずに黙って無視されています。

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

答え1

snmptrapdコミュニティ名のみのトラップを受け入れるように設定しましたpublic:

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

しかし、Juniper デバイスからのトラップでは、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) ...
                                                               ^^^^^^^

Juniper デバイスのトラップ コミュニティ名を に設定するかpublic、ファイルauthCommunityに別の行を追加する必要がありますsnmptrapd.conf

authCommunity  log,execute,net VINOD

関連情報