Linuxでnet-snmpパッケージのsnmptrapdを使用しています。 snmpトラップを処理するPerlスクリプトを作成しようとしています。私はすでにそのようなスクリプトを持っており、snmp v1、v2cトラップ、およびsnmpv3トラップで機能しますが、configとコマンド送信トラップの両方でengineIDを明示的に指定した場合に限ります。しかし、linkDownトラップを送信するようにCiscoルーターを構成すると、engineIDとしていくつかの余分なバイトを含むMACアドレスが使用されます。そして、wiresharkのインターフェースにトラップが到着するのを見ることができますが、snmptrapdは何もしません。 engineIDを指定せずに、認証されたユーザーによるすべてのトラップを受け入れるようにsnmptrapdを構成することは可能ですか?
これが私のsnmptrapd.confです
# Example configuration file for snmptrapd
#
# No traps are handled by default, you must edit this file!
#
createUser -e 0x0102030405 myuser MD5 mypassword DES myotherpassword
createUser -e 0x0102030405 myuser2 MD5 mypassword DES myotherpassword
createUser -e 0x0102030406 myuser2 MD5 mypassword DES myotherpassword
createUser Cisco SHA Cisco123 DES Cisco123
authUser log,execute myuser
authUser log,execute myuser2
authUser log,execute Cisco
authCommunity log,execute public
Perl do "/usr/local/share/snmp/snmptrapdhandler.pl";
私はFedora21linuxを使用しています。
$ uname -a
Linux 4.1.13-100.fc21.x86_64 #1 SMP Tue Nov 10 13:13:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
net-snmpのバージョンはnet-snmp-5.7.2-23.fc21.x86_64
EngineIDを必要とせずにsnmptrapdを使用できるようになるには、これを理解するのに長い時間がかかりました。これは、まったく新しいCisco Nexusスイッチ(nx-os)で機能し、これが他の誰かに役立つことを願っています。
format2 %V\n% Agent Address: %A \n Agent Hostname: %B \n Date: %H - %J - %K - %L - %M - %Y \n Enterprise OID: %N \n Trap Type: %W \n Trap Sub-Type: %q \n Community/Infosec Context: %P \n Uptime: %T \n Description: %W \n PDU Attribute/Value Pair Array:\n%v \n -------------- \n
/etc/snmp/snmptrapd.conf:
traphandle default /etc/snmp/send_to_email_script # make sure it is executable
traphandle default /etc/snmp/snmp-traphandle_script # can be any program
doNotLogTraps no
authUser log,execute,net ${snmp_user} # username variable
createUser ${snmp_user} MD5 ${snmp_auth} AES-128 ${snmp_auth}
ユーザーの例は次のとおりです。
# createUser networkmonitor MD5 Cisco1234! AES-128 Cisco1234!
Ciscoスイッチでは、このユーザが同じユーザ名/パスワードとpriv/authで存在することを確認してください。また、snmp Hostを追加します(これは、トラップをsnmptrapdに送信する方法です)。
# snmp-server Host ip_address traps version 3 priv networkmonitor
確認してください ip_address
はスイッチIPではなく、snmptrapdレシーバーのIPです
Snmpv3を使用するCiscoデバイスからengine-idを指定せずにトラップを受信します。ただし、CiscoデバイスではMD5/DESを使用しています。
Linux 02asdf 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
ii snmp 5.7.3+dfsg-1ubuntu4 AMD64 SNMP (Simple Network Management Protocol) applications
ii snmp-mibs-downloader 1.1 all Install and manage Management Information Base (MIB) files
ii snmpd 5.7.3+dfsg-1ubuntu4 AMD64 SNMP (Simple Network Management Protocol) agents
ii snmpsim 0.2.4-1 all SNMP agent simulator
ii snmptrapd 5.7.3+dfsg-1ubuntu4 AMD64 Net-SNMP notification receiver
ii snmptt 1.4-1 all SNMP trap handler for use with snmptrapd