Cisco IOSでSNMP Trapを設定する方法についてまとめます。SNMP version 1, 2cのみを対象をしております。
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# snmp-server enable traps [ <trap> ] Router(config)# snmp-server host <addr> [ traps | informs ] [ version { 1 | 2c | 3 } ] <community> [ <trap> ] Router(config)# snmp-server source-interface { traps | informs } <interface> Router(config-if)# no snmp trap link-status
構成図
以下の環境で動作確認を行います。
e0/0 e0/1 +--------+.1 .2+--------+ | R1 +--------+ R2 | +--------+ +--------+ 192.168.1.0/24 R1 Loopback0 R2 Loopback0 10.1.1.1/32 10.2.2.2/32
[R1] interface Loopback0 ip address 10.1.1.1 255.255.255.255 ! interface Ethernet0/0 ip address 192.168.12.1 255.255.255.0 [R2] interface Loopback0 ip address 10.2.2.2 255.255.255.255 ! interface Ethernet0/1 ip address 192.168.12.2 255.255.255.0
設定全文は下記ファイルです。ルーティングなどの詳細設定は下記を参照ください。
基本設定
仕様説明
snmp-server enable trapsコマンドでSNMP TRAPとして通知するイベントを定義します。デフォルトの状態では全イベントがSNMP TRAPとして通知されないようになっていますので、必ずこのコマンドを入力する必要があります。以下はlinkの状態変化とVTPの状態変化を通知する設定例です。
Router(config)# snmp-server enable traps snmp linkdown linkup Router(config)# snmp-server enable traps vtp
なお、以下のように通知するイベントを省略すると全イベントがSNMP TRAPとして通知されます。
Router(config)# snmp-server enable traps
以下のコマンドでSNMP trapd serverとコミュニティ名を指定する事ができます。詳細なパラメータを省略した場合は。version 1のtrapとして送信されます。
Router(config)# snmp-server host <addr> [ traps | informs ] [ version { 1 | 2c | 3 } ] <community>
動作確認
R1に以下の設定を投入し、link statusの変化をsnmp trapd serverに通知するようにします。
[R1] snmp-server trap-source Loopback0 snmp-server host 10.2.2.2 CISCOTRAP snmp-server host 192.168.12.2 version 2c CISCOTRAP snmp-server enable traps snmp linkup linkdown
R1 e0/1のリンクアップイベントを発生させ、SNMP TRAPが送信される事を確認します。
[R1] R1#debug snmp packets SNMP packet debugging is on R1#conf t R1(config)#int e0/1 R1(config-if)#no ke R1(config-if)#no keepalive R1(config-if)#no shut R1(config-if)# *Mar 1 00:19:21.995: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state to up *Mar 1 00:19:22.995: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to up *Mar 1 00:19:23.011: SNMP: Queuing packet to 10.2.2.2 *Mar 1 00:19:23.011: SNMP: V1 Trap, ent snmpTraps, addr 10.1.1.1, gentrap 3, spectrap 0 ifIndex.2 = 2 ifDescr.2 = Ethernet0/1 ifType.2 = 6 lifEntry.20.2 = up *Mar 1 00:19:23.031: SNMP: Queuing packet to 192.168.12.2 *Mar 1 00:19:23.035: SNMP: V2 Trap, reqid 4, errstat 0, erridx 0 sysUpTime.0 = 116300 snmpTrapOID.0 = snmpTraps.4 ifIndex.2 = 2 ifDescr.2 = Ethernet0/1 ifType.2 = 6 lifEntry.20.2 = up *Mar 1 00:19:23.263: SNMP: Packet sent via UDP to 10.2.2.2 *Mar 1 00:19:23.287: SNMP: Packet sent via UDP to 192.168.12.2 R1(config-if)#
SNMP TRAP イベント制御
仕様説明
以下のコマンドでSNMP TRAPとして通知するイベントの種類を定義する事ができます。イベントとして通知されるのは、グローバルで有効になっているイベント かつ snmp trapd server単位で有効になっているイベントです。なお、イベントの指定を省略すると全イベントが有効になってしまいます。
Router(config)# snmp-server enable traps [ <trap> ] Router(config)# snmp-server host <addr> [ traps | informs ] [ version { 1 | 2c | 3 } ] <community> [ <trap> ]
以下は、2種類のsnmp trapd serverの一方のサーバのみに、リンクダウンを通知する設定例です。
snmp-server trap-source Loopback0 snmp-server enable traps snmp linkdown linkup snmp-server host 10.2.2.2 CISCOTRAP snmp-server host 192.168.12.2 version 2c CISCOTRAP tty
一見するとttyの意味が理解できないと思いますが、このttyがないと全イベントが有効になってしまいますので192.168.12.2に対してもリンクダウンイベントが通知されてしまいます。表形式でまとめると以下のようになります。
グローバル設定 | サーバ単位の設定 | 結果 | |
---|---|---|---|
10.2.2.2 | snmp linkdown linkup | 全部有効 | snmp linkdown linkup |
192.168.12.2 | snmp linkdown linkup | tty | 全部無効 |
動作確認
R1に以下の設定を投入し、10.2.2.2のみにリンクダウンイベントが通知されるようにします。
[R1] snmp-server trap-source Loopback0 snmp-server enable traps snmp linkdown linkup snmp-server host 10.2.2.2 CISCOTRAP snmp-server host 192.168.12.2 version 2c CISCOTRAP tty
R1 e0/1のリンクダウンイベントを発生させ、10.2.2.2のみにSNMP TRAPが送信される事を確認します。
[R1] R1#debug snmp packets SNMP packet debugging is on R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#int e0/1 R1(config-if)#no ke R1(config-if)#no keepalive R1(config-if)#no shut R1(config-if)#shut R1(config-if)# *Mar 1 00:23:22.287: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to administratively down *Mar 1 00:23:23.287: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to down *Mar 1 00:23:23.307: SNMP: Queuing packet to 10.2.2.2 *Mar 1 00:23:23.307: SNMP: V1 Trap, ent snmpTraps, addr 10.1.1.1, gentrap 2, spectrap 0 ifIndex.2 = 2 ifDescr.2 = Ethernet0/1 ifType.2 = 6 lifEntry.20.2 = administratively down *Mar 1 00:23:23.559: SNMP: Packet sent via UDP to 10.2.2.2 R1(config-if)#
リンクダウンイベントの抑制
仕様説明
以下のコマンドで、特定のポートのみlink-statusのSNMP TRAP通知を抑制する事ができます。例えば、データセンター作業要員の方のためのメンテナンス用ポートとして使用すると良いでしょう。
Router(config-if)# no snmp trap link-status
動作確認
R1に以下のコマンドを投入します。
[R1] interface Ethernet0/1 no snmp trap link-status
R1 e0/1をリンクアップさせますが、SNMP TRAPが送信されない事を確認します。
[R1] R1#debug snmp packets SNMP packet debugging is on R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#int e0/1 R1(config-if)#no shut R1(config-if)# *Mar 1 00:24:23.487: %LINK-3-UPDOWN: Interface Ethernet0/1, changed state to up *Mar 1 00:24:24.487: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to up R1(config-if)#