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に何も書きません。
私は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スイッチから送信されたトラップがサーバーに到着することがわかりました。ただし、何らかの理由で追加の処理なしで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