SNMP

目次

SNMPとは

SNMP(Simple Network Management Protocol)は、ルータ、スイッチ、サーバなどの通信機器をネットワーク経由で監視・制御するためのアプリケーション層プロトコルです。SNMPを利用すると、ネットワーク障害が発生した場合にどの機器に問題があるのかを素早く突き止められ、障害対応に役立ちます。

SNMPの構成要素

SNMPは「管理する側」と「管理される側」で構成されます。

  • SNMPマネージャ:監視を行う側。エージェントに情報を要求したり監視したりする
  • SNMPエージェント:監視される側。マネージャの要求に応答したり、状態変化を通知したりする

代表的なSNMPマネージャには net-snmp(オープンソース)、JP1/Network Node Manager i(HITACHI)、TWSNMP Manager などがあります。

構成要素役割使用機器
SNMPマネージャ情報要求や監視を行うWindowsサーバ、Linuxサーバなど
SNMPエージェント応答や状態変化の通知を行うルータ、スイッチ、サーバなど

SNMPのトラフィック

  • SNMPエージェント:UDPのポート番号161を使用
  • SNMPマネージャ:UDPのポート番号162を使用

マネージャからエージェントへの問い合わせはポート161、エージェントからマネージャへのトラップ通知はポート162が使われます。

MIBとは

MIB(Management Information Base)は、SNMPエージェントが持つ機器情報のデータベースです。SNMPマネージャとエージェントは、このMIBを使って通信機器の状態をやり取りします。

  • MIBはツリー構造で管理され、個々の情報はオブジェクトと呼ばれる
  • 各オブジェクトにはOID(オブジェクトID)が付与される
  • 例:dod のOIDは「1.3.6」、CiscoのOIDは「1.3.6.1.4.1.9」

MIBには標準MIBとベンダ独自の拡張MIBがあり、現在はMIB2が主流です。SNMPマネージャでも機器のMIB情報を読み込む必要があり、メーカーのサイトからMIBファイルを入手できます。

RMONとは

RMON(Remote Monitoring)は、SNMPを拡張してLANの通信状況を遠隔監視する仕組みです。通常のMIBが「機器単体」の監視情報を提供するのに対し、RMONでは「ネットワーク回線全体」のトラフィック統計情報を取得できます。

SNMPメッセージ

SNMPマネージャとエージェントがやり取りするメッセージには以下の種類があります。

SNMPメッセージ送信側内容
Get RequestマネージャOIDを指定して情報を要求
GetNext Requestマネージャ指定したOIDの次の情報を要求
Set RequestマネージャOIDを指定してエージェントの設定を変更
Get Responseエージェントマネージャの要求に応答して値を返す
TRAPエージェント機器の状態変化をマネージャに通知

まとめ

  • SNMPは「ネットワーク機器の監視と制御」を行うプロトコル
  • ポート番号は「161(エージェント側)」「162(マネージャ側)」
  • 監視情報はMIBに格納され、OIDで識別される
  • RMONを使うとネットワーク全体のトラフィックを監視できる

SNMPコミュニティとは

SNMPコミュニティとは、SNMPで管理されるネットワークの範囲を表す仕組みです。SNMPマネージャとSNMPエージェントが同じコミュニティ名を設定している場合、情報をやりとりできます。異なる機器ごとにコミュニティ名を分けることで、効率的な管理やアクセス権限の分離が可能です。

MIB(管理情報ベース)に対するアクセス権限は以下のように分かれます。

MIBへのアクセス権限説明
RORead-only。読み取りのみ可能
RWRead-write。読み取りと書き込みが可能
Read-write-allコミュニティ設定を含めた読み書きが可能

RW以上の権限があると、マネージャ側からルータを強制再起動するなど制御も可能になります。

SNMPのバージョン

SNMPには以下のバージョンがあります。実際に広く使われているのは v1、v2c、v3 の3種類です。

SNMPバージョンRFC特徴
SNMPv1RFC 1157コミュニティ名による平文認証。トラップ再送確認なし
SNMPv2cRFC 1901コミュニティ名による平文認証。トラップ再送確認あり
SNMPv3RFC 2273〜2275ユーザ単位のパスワード認証と暗号化対応。トラップ再送確認あり

SNMPメッセージ

  • SNMPv1では以下の5つ
    • Get Request:情報取得要求
    • GetNext Request:次の情報取得要求
    • Set Request:設定変更要求
    • Get Response:エージェントからの応答
    • TRAP:状態変化の通知
  • SNMPv2cでは上記5つに加え、次の2つが追加
    • GetBulk Request:複数情報の一括取得
    • Inform Request:通知と応答のやりとり
  • SNMPv3もSNMPv2cと同じ7種類を利用可能

SNMPv3のセキュリティ機能

SNMPv3では、従来の「コミュニティ名」ではなく以下の2つの仕組みが追加されています。

  • USM(User-based Security Model):ユーザごとのパスワード認証
  • VACM(View-based Access Control Model):ユーザごとにアクセス可能なMIB範囲を設定

SNMPv3には3段階のセキュリティレベルがあります(Cisco機器の例)。

セキュリティレベル認証暗号化結果
noAuthNoPrivユーザ名のみなし認証・暗号化なし
authNoPrivMD5 または SHAなし認証あり・暗号化なし
authPrivMD5 または SHADES または AES認証あり・暗号化あり

SNMPv3を使用する場合は、マネージャとエージェントの双方がSNMPv3に対応している必要があります。

まとめ

  • SNMPコミュニティは「監視のグループ名」のようなもので、同じ名前を設定するとやりとりできる
  • v1は古く、v2cはよく使われ、v3は安全性が高い
  • v3では「ユーザ認証+暗号化」でセキュリティが強化されている

SNMPv1・SNMPv2c:設定例まとめ

Cisco機器を「SNMPエージェント」として動作させるには、SNMPマネージャ(監視サーバ)からの要求やTrap送信を受け付けるように設定する必要があります。

以下に、試験や実機設定でよく問われるコンフィグ例を整理します。

① Get Request / GetNext Request(読み取り専用)

監視サーバがCisco機器の情報を取得するための設定です。読み取り専用(ro)のコミュニティ文字列を定義します。

(config)# snmp-server community Public01 ro
  • Public01:コミュニティ文字列(パスワードのような役割)
  • ro:読み取り専用(read-only)
    → SNMPマネージャからMIB値の取得は可能ですが、書き換えはできません。

② Set Request(書き込み可能)

監視サーバからCisco機器の設定を書き換えたい場合に使用します。読み書き可能(rw)のコミュニティ文字列を定義します。

(config)# snmp-server community Private01 rw
  • Private01:コミュニティ文字列
  • rw:読み取り+書き込み(read-write)
    → 例えばインターフェースの状態変更などが可能になります。
    ※ 実運用ではセキュリティ上、rwの使用は極力避けます。

③ Trap送信(SNMPv1)

Cisco機器から監視サーバへイベント通知を行う場合の設定です。

(config)# snmp-server host 192.168.1.101 Public01
(config)# snmp-server enable traps
  • 192.168.1.101:SNMPマネージャのIPアドレス
  • Public01:Trap送信用のコミュニティ文字列
  • enable traps:Trap送信を有効化

④ Trap送信(SNMPv2c)

SNMPv2cを使う場合はバージョン指定が必要です。

(config)# snmp-server host 192.168.1.101 version 2c Public01
(config)# snmp-server enable traps
  • version 2c:SNMPv2cを指定
  • コミュニティ文字列はSNMPv1と同様に必要

試験対策:

Get/Setの違いrorw の区別
Trap設定snmp-server hostsnmp-server enable traps がセット
SNMPv1 / v2c → v2cの場合は version 2c の指定が必要
セキュリティ面 → SNMPv1/v2cは平文でやり取りするため、実運用では基本的にSNMPv3を推奨

要点をまとめると、「snmp-server community」「snmp-server host」「snmp-server enable traps」 の3つを押さえておくのが重要です。

SNMPのデフォルト設定を理解する

シスコ機器は、初期状態ではSNMP関連の機能がほとんど無効化されています。これはセキュリティ上の理由からであり、誤って外部から管理操作を受けないようにするためです。例えば、SNMPエージェントそのものが無効、トラップ受信先は未設定、通知も基本的には送信されません。また、バージョン指定をしないと自動的にSNMPv1が選択される点も重要です。SNMPv3については、デフォルトで認証も暗号化もない「noAuthNoPriv」という最低限のセキュリティレベルになります。

試験対策:「SNMPはデフォルトで無効」「バージョンを指定しなければv1が使われる」あたりがよく問われるので必ず押さえておきましょう。

SNMPv1・v2cで使うコミュニティストリング

SNMPv1とv2cでは「コミュニティストリング」という文字列を使ってアクセス制御を行います。これはパスワードのようなもので、管理者が定めた文字列を知っているSNMPマネージャだけがアクセスできます。設定コマンドは次の形式です。

(config)# snmp-server community string [ view view-name ] [ ro | rw ] [ acl-number ]

ここで指定する string がパスワード代わり、ro は読み取り専用、rw は読み書き可能を意味します。さらにACL番号を指定すると、特定のホストだけをアクセス許可することも可能です。例えば、読み取り専用の「Public01」を作るなら snmp-server community Public01 ro となります。試験では「roとrwの違い」や「ACLと組み合わせてアクセス制御できる」点を理解しているかどうかがチェックされます。

SNMPマネージャを特定ホストに限定する

セキュリティを高めるため、SNMPマネージャを特定のIPアドレスに限定する設定もよく行われます。例えば192.168.1.101からのアクセスだけ許可するなら、次のようにACLと組み合わせます。

(config)# access-list 1 permit host 192.168.1.101
(config)# snmp-server community Private01 rw 1

このようにACL番号を最後に付けることで、SNMPアクセスを制御できるのです。現場では必須の設定であり、試験でも「ACLを使ったSNMPアクセス制御」が狙われやすいポイントです。

SNMPトラップの基本設定

SNMPトラップは、ルータやスイッチがイベントを検知したときにSNMPマネージャへ通知する仕組みです。たとえばインターフェースのリンクダウンや電源異常が起きると、自動的に管理サーバへメッセージが送信されます。設定の基本形は次のとおりです。

(config)# snmp-server host address [ informs | traps ] [ version 1 | 2c | 3 auth | noauth | priv ] community-string type

ここで address はマネージャのIP、version はSNMPのバージョンを指定します。community-string にはSNMPv1・v2cならコミュニティ名、v3ならユーザ名を指定します。

また、トラップを有効化するには次のコマンドを使います。

(config)# snmp-server enable traps

このコマンドだけで全てのトラップが有効になりますが、必要な種類だけを指定するのが実運用では一般的です。例えばインターフェースのリンクダウンや起動時の状態変化などを指定することが多いです。試験では「snmp-server host」と「snmp-server enable traps」をセットで理解しているかが問われます。

トラップの実用的な例

たとえば、SNMPマネージャが192.168.1.101にある場合、全てのトラップをv2cで通知するなら次のように設定します。

(config)# snmp-server host 192.168.1.101 version 2c public01
(config)# snmp-server enable traps

さらに実際の現場では、次のように通知内容を細かく選ぶことも多いです。

(config)# snmp-server enable traps snmp authentication linkdown linkup coldstart warmstart
(config)# snmp-server enable traps envmon fan shutdown supply temperature status
(config)# snmp-server enable traps config

このように指定すると、重要なイベントだけが管理サーバに送られるので効率的です。ここは「試験対策というより実務的な知識」ですが、理解しておくと応用問題に強くなれます。

SNMPの補助的な設定

さらにSNMPでは管理しやすくするための追加設定も用意されています。例えば、トラップ送信に使うインターフェースを明示したり、トラップ再送間隔を変更したりできます。また、管理者名を記録する snmp-server contact、設置場所を示す snmp-server location なども設定可能です。これらは試験では頻出ではありませんが、ネットワーク運用ではよく活用されるので覚えておくと役立ちます。

まとめ

SNMPの学習で大切なのは、デフォルトでは無効化されていること、SNMPv1・v2cではコミュニティストリングを使って制御すること、トラップを送信するには snmp-server hostsnmp-server enable traps の両方が必要なことです。この3つは特に試験で狙われやすいので、必ず理解しておきましょう。

SNMPv3の特徴と基本構成

SNMPv3は、従来のv1やv2cと比べてセキュリティ機能が大幅に強化されています。特に「ユーザベースの認証」「暗号化」「ビューによるアクセス制御」の仕組みがある点が重要です。試験では、v3特有のセキュリティレベル(noAuthNoPriv、authNoPriv、authPriv)や、ユーザ・グループ・ビューの関連性がよく問われるので、流れを理解しておくことが合格の近道です。

SNMPビューの設定

SNMPビューとは、MIB(管理情報ベース)の中からアクセス対象を絞り込むフィルタのようなものです。監視する範囲を決めて、不要なMIBを隠すことができます。コマンドは次の形式です。

(config)# snmp-server view name OID [ included | excluded ]

たとえば「READVIEW」という名前で、internet ツリーを監視対象にするなら以下のようにします。

(config)# snmp-server view READVIEW internet included

これで、後に定義するSNMPグループやユーザが、このビューを通してのみ情報を取得できるようになります。

SNMPエンジンIDの設定

SNMPv3では「エンジンID」という一意の識別子が使われます。デフォルトでは自動生成されますが、手動で設定することも可能です。特にリモートユーザを設定する場合には、先にリモートエンジンIDを登録しておかなければコマンドがエラーになります。

(config)# snmp-server engineID local 1234
(config)# snmp-server engineID remote 192.168.1.101 00000063000100a1c0b4011b

ここで「local」は自身の機器を、「remote」はSNMPマネージャを指します。試験では「リモートユーザ設定の前にエンジンIDを定義しなければならない」点が狙われやすいです。

SNMPグループの設定

SNMPv3では、ユーザはまず「グループ」に所属します。そしてグループにビューやセキュリティレベルを割り当てることで、アクセス権限が決まります。コマンドは次の通りです。

(config)# snmp-server group group-name v3 [ auth | noauth | priv ]
  [ read readview ] [ write writeview ] [ notify notifyview ] [ access acl-number ]

セキュリティレベルは次の3段階です。

レベル認証方法暗号化説明
noAuthNoPrivユーザ名のみなし認証も暗号化もしない
authNoPrivMD5/SHAなし認証のみ行う
authPrivMD5/SHADES/AES認証と暗号化を行う

例えば、読み取り専用ビュー「READVIEW」をnoAuthで使わせるグループを作るなら次のようにします。

(config)# snmp-server group AUTHG v3 noauth read READVIEW

SNMPユーザの設定

ユーザは必ずグループに所属し、認証方式や暗号化方式を指定して作成します。コマンドは次のようになります。

(config)# snmp-server user username groupname [ remote address v3 ]
  auth [ md5 | sha ] auth-password
  [ priv [ des | 3des | aes [ 128 | 192 | 256 ] priv-password ] ]

例えば「CCIE」というユーザを作り、MD5認証を利用する場合は以下のように設定します。

(config)# snmp-server user CCIE AUTHG v3 auth md5 Cisco123

このユーザは「AUTHG」というグループに所属し、そのグループに割り当てられたビューやセキュリティレベルに従ってアクセスできるようになります。

SNMPv3でのトラップ設定

SNMPv3でもトラップは使用できます。基本構文は以下です。

(config)# snmp-server host address [ informs | traps ] version 3 [ auth | noauth | priv ] username type

ここで username は先ほど作成したSNMPユーザを指定します。セキュリティレベル(auth / noauth / priv)は、ユーザ作成時に設定したものと一致させる必要があります。

さらに、トラップを有効化するためには次のコマンドを入力します。

(config)# snmp-server enable traps

これで全てのトラップが有効になります。特定のイベントだけ通知したい場合は、後ろに種類を指定します。

設定例1:読み取り専用のSNMPv3環境

MIB全体を監視できるビューを作り、ユーザ「CCIE」が読み取り専用でアクセスできるようにする例です。

(config)# snmp-server view READVIEW internet included
(config)# snmp-server view READVIEW iso included
(config)# snmp-server group AUTHG v3 noauth read READVIEW
(config)# snmp-server user CCIE AUTHG v3 auth md5 Cisco123

この設定では、CCIEユーザは認証付きでアクセス可能ですが、暗号化は使いません。

設定例2:リモートホストを指定してトラップ通知

SNMPマネージャ(192.168.1.101)と連携する場合の例です。

(config)# snmp-server engineID remote 192.168.1.101 00000063000100a1c0b4011b
(config)# snmp-server group AUTHG v3 auth
(config)# snmp-server user authuser AUTHG remote 192.168.1.101 v3 auth md5 mypassword
(config)# snmp-server host 192.168.1.101 informs version 3 auth authuser config
(config)# snmp-server enable traps

ここでは「authNoPriv」で認証を行い、暗号化はしていません。実際の現場では、さらに暗号化(authPriv)を組み合わせるケースが多くなります。

試験対策:SNMPv3の学習では「ビュー → グループ → ユーザ → トラップ」という流れで理解すると整理しやすいです。特に、セキュリティレベルの違い、ユーザとグループの関係、エンジンIDの扱いが問われやすいので、設定例と合わせて押さえておきましょう。

◆まとめスライド

目次