1. コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config)# snmp-agent ip enable
Router(config)# snmp-agent ip community <community> [ <acl> ] [ ro | rw ]

2. 仕様説明

2.1. snmp有効化

以下のコマンドでsnmpとsnmptrapの両方を有効化する事ができます。

Router(config)# snmp-agent ip enable

2.2. コミュニティ名の設定

以下のコマンドでコミュニティ名を設定する事ができます。 コミュニティ名は読取専用(ro)と書込可能(rw)の2種類を選ぶ事ができます。 ルータによってはMIB値を書き換える事によって再起動を行う事もできますので、 死活監視と性能監視のみの用途ならば読取専用(ro)にする事をお勧めします

Router(config)# snmp-agent ip community <community> [ ro | rw ]

2.3. contact location

必須設定ではありませんがsnmpは障害発生時に備え、 連絡先 contactと設置場所 locationを設定しておく事もできます。

Router(config)# snmp-agent location <location>
Router(config)# snmp-agent contact <contact>

2.4. セキュリティ設定

SNMPによって取得できる情報を誰にでも見せてしまうのはセキュリティの観点で好ましくありません。 また、スイッチ機器にsnmpwalkコマンドを連打すれば簡単にCPU使用率を上昇させる事ができます。

このような脅威に備えるため、snmp応答を返すホストを限定する事ができます。 "snmp-agent ip community"コマンド入力時に、<acl>を指定して下さい。

Router(config)# snmp-agent ip community <community> [ <acl> ] [ ro | rw ]

3. 動作確認環境

以下の構成で動作確認を行います。


            ::100    ::254           .254     ::200
 +---------+ .100     .254 +--------+.254      .200 +---------+
 | Host100 +---------------+ IX2215 +---------------+ Host200 |
 +---------+          G1.0 +--------+ G0.0          +---------+
            192.168.0.0/24           150.0.0.0/24
            2001::/64                2001:150::/64
 [Host100]
route add 150.0.0.0 mask 255.255.255.0 192.168.0.254

 [IX2215]
ip route 0.0.0.0/0 150.0.0.254
!
interface GigaEthernet1.0
  ip address 192.168.0.254/24
  ipv6 address 2001::254/64
  no shutdown
!
interface GigaEthernet0.0
  ip address 150.0.0.254/24
  ipv6 address 2001:150::254/64
  no shutdown
!
username cisco password plain cisco
telnet-server ip enable

初期設定の全文は以下を参照下さい。

4. snmpの設定

4.1. snmp 有効化

以下のコマンドを入力し、snmpを有効にします。

snmp-agent ip enable

4.2. コミュニティ名の設定

RO_MNSというコミュニティ名でMIB値が読み取り可能なるように設定します。

snmp-agent ip community RO_MNS ro

4.3. 疎通確認

Host100からsnmpによる読み取りが可能である事を確認します。

# snmpwalk -v 2c -c RO_MNS 192.168.0.254 | head
SNMPv2-MIB::sysDescr.0 = STRING: NEC Portable Internetwork Core Operating System Software, IX Series IX2215 (magellan-sec) Software, Version 8.8.22, RELEASE SOFTWARE, Compiled Jul 04-Wed-2012 13:57:25 JST #2, IX2215
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.119.1.84.16.1
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (5205521) 14:27:35.21
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: R254
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 72
IF-MIB::ifNumber.0 = INTEGER: 30
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2

5. contact / location

5.1. contact / location 設定

locationとcontactを設定します。

snmp-agent location 1214A15_13U
snmp-agent contact foo@hogehoge.com

5.2. 疎通確認

Host100からlocation, contactが参照できるようになった事を確認します。

# snmpwalk -v 2c -c RO_MNS 192.168.0.254 | egrep "sysContact|sysLocation"
SNMPv2-MIB::sysContact.0 = STRING: foo@hogehoge.com
SNMPv2-MIB::sysLocation.0 = STRING: 1214A15_13U

6. 送信元制御

6.1. trapdサーバによるアクセス制御

Host100からのみsnmpgetを受け付けるように設定します。

ip access-list SERVER_SNMP permit ip src 192.168.0.100/32 dest any
snmp-agent ip community RO_MNS SERVER_SNMP ro

6.2. 接続許可の確認

Host100からsnmpによる読み取りが可能である事を確認します。

# snmpwalk -v 2c -c RO_MNS 192.168.0.254 | head
SNMPv2-MIB::sysDescr.0 = STRING: NEC Portable Internetwork Core Operating System Software, IX Series IX2215 (magellan-sec) Software, Version 8.8.22, RELEASE SOFTWARE, Compiled Jul 04-Wed-2012 13:57:25 JST #2, IX2215
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.119.1.84.16.1
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (5238531) 14:33:05.31
SNMPv2-MIB::sysContact.0 = STRING: foo@hogehoge.com
SNMPv2-MIB::sysName.0 = STRING: R254
SNMPv2-MIB::sysLocation.0 = STRING: 1214A15_13U
SNMPv2-MIB::sysServices.0 = INTEGER: 72
IF-MIB::ifNumber.0 = INTEGER: 30
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2

6.3. 接続拒否の確認

Host100からのアクセス権を削除します。

no ip access-list SERVER_SNMP

Host100からIXルータにsnmpgetができなくなった事を確認します。

# snmpwalk -v 2c -c RO_MNS 192.168.0.254 | head
Timeout: No Response from 192.168.0.254