SNMPチュートリアル
このチュートリアルは次のことを端的に説明するのが目的です
SNMPとは何か?
簡易ネットワーク管理プロトコル(SNMP)はネットワーク上の機器間での管理情報交換用にインターネット アーキテクチャ委員会(IAB)がRFC1157によって定義したアプリケーション レイヤー プロトコルです。これは転送制御プロトコル⁄インターネット プロトコル(TCP⁄IP)からなるプロトコル スイートの一部を成します
SNMPはネットワーク構成要素の管理と監視用に最も普及したプロトコルです。大部分の本格的ネットワーク要素にはSNMPエージェントがバンドルされています。これらのエージェントはネットワーク管理システム(NMS)と通信するために有効化し設定する必要があります。
SNMP要基本素とその機能
SNMPの構成
SNMPマネージャー:
マネージャーまたは管理システムはSNMPエージェントを実装したネットワーク機器と通信する機能を果たす別個の実体です。これは通常の場合、1つまたは複数のネットワーク管理システムを実行するのに使用するコンピュータです。
SNMPマネージャの主な機能
- クエリエージェント
- エージェントからの応答を受ける
- エージェントに変数を設定する
- エージェントから送信される非同期イベントを承認する
管理対象デバイス
管理対象デバイスすなわちネットワーク要素は何らかの形の監視や管理を必要とするネットワーク要素(ルータ、スイッチ、サーバ、ワークステーション、プリンタ、UPS等)です。
SNMPエージェント
このエージェントはネットワーク要素の中にパッケージ化されているプログラムです。エージェントを有効にすると管理情報データベースをローカルデバイスから集め、SNMPマネージャからクエリされたときに提供します。これらのエージェントはデフォルト(Net-SNMP等)やベンダー(HP インサイトエージェント等)固有のものがあります。
SNMPエージェントの主な機能
- ローカル環境に関する管理情報の回収
- MIBの定義に従い管理情報を保存し取得する
- イベントをマネージャーに知らせる。
- SNMP以外の管理対象ネットワークノード用のプロキシとして機能する。
基本的SNMP通信のチャート\

管理情報データベースか管理情報ベース(MIB)
どのSNMPエージェントも管理対象デバイス パラメータを記述した情報データベースを維持しています。SNMPマネージャがこのデータベースを使いエージェントに特定の情報を要求し、さらにネットワーク管理システム(NMS)の必要性に応じて情報を翻訳します。エージェントとマネージャ間で共有するこのデータベースを管理情報ベース(MIB)と呼びます。
典型的にこれらのMIBはネットワークに接続されているハードウェアーノードについて定義されている標準的集合統計および制御値含みます。SNMPではプライベートMIBを使用することによってこれらの標準値を特定のエージェントに固有な値に拡張することも可能です。
要するに、MIBファイルとはSNMPマネージャがエージェントに要求できる問合せの集合体です。エージェントはこれらのデータをMIBの定義に従いローカルに保存しています。従って、SNMPマネージャはどのタイプのエージェントに対してもこれらの標準とプライベートの問合せを分かっていなければなりません。
MIBの構造とオブジェクト識別子(オブジェクトIDかOID)
管理情報ベース(MIB)はネットワーク要素を管理するための情報の集合体です。MIBはオブジェクト識別子(オブジェクトIDかOID)の名前で識別する管理対象オブジェクトからなります。
各識別子は固有で管理対象デバイスの具体的な特性を表します。クエリに対する各識別子の戻り値はテキスト、数字、カウンター等異なる場合があります。
管理対象オブジェクトかオブジェクトIDには2つのタイプがあります: スカラーと表。これは例を取り上げるとわかりやすいです
スカラー:デバイスのベンダー名、結果は一意のみです。(これは定義の通りです: 「スカラー オブジェクトは単一のオブジェクトインスタンスを定義する」)
表:クァッドプロセッサのCPU使用率、これは各CPU別の結果を出してくれて、つまり特定のオブジェクトIDに対しては4つの結果が出ます。(これは定義の通りです: 「表オブジェクトはMIBテーブルに一括してグループ化されている関連し合う複数のオブジェクトインスタンスを定義する」")
どのオブジェクトIDもMIBの中では階層化されています。MIB階層は個々に異なる識別子を持つツリー構造で表されます。
典型的なオブジェクトIDは整数のドット区切りリストとして表されます。例えば、「sysDescr」をRFC1213のOIDで表すと.1.3.6.1.2.1.1.1になります
MIBツリーチャート

SNMPの基本コマンド
情報交換が簡素なことからSNMPはプロトコルとして普及しました。その主な理由はコマンドがまとまってわかりやすいことで、以下に列挙します:
- GET: GETはマネージャが管理対象デバイスへ送る要求です。これは1つまたは複数の値を管理対象デバイスから取得するために実行されます。
- GET NEXT: これもGET同様です。大きな違いはGET NEXTはMIBツリー上で次のOIDの値を取得することです。
- GET BULK: GETBULKは大きいMIBテーブルから大量のデータを取得するために使用します。
- SET: SETはマネージャが使ってを管理対象デバイスの値を修正または割り当てます。
- TRAPS: SNMPマネージャから開始される上のコマンドとは異なってTRAPSはエージェントから開始されます。イベントが発生するとエージェントによってSNMPマネージャへ送られる信号です。
- INFORM: このコマンドはTRAPと同様 エージェントが開始し、INFORMでは追加的にSNMPマネージャがメッセージ受信を確認します。
- 応答: このコマンドはSNMPマネージャから指図された値やアクションの信号を元に戻すのに使用します。
典型的なSNMP通信
TCP⁄ IPプロトコル スイートの一環であるSNMPメッセージはユーザーデータグラムプロトコル (UDP)としてラッピングされ、インターネット プロトコルの内部でラッピングされてから伝送されます。以下のチャートに米国国防省(DoD)が開発した4層モデルを示します。




デフォルトではSNMPはポート161、TRAP⁄ INFORMはポート162を使い通信します。
SNMPのバージョン
SNMPができた当時からごく進化しました。しかしSNMP v1とv2cはSNMPバージョンのなかで最も普及しています。SNMP v3サポートは最近始まったばかりで旧バージョンよりセキュアなキャッチアップ版ですが、まだ市場シェアが小さいです。
SNMPv1:
このバージョンはプロトコル第1版で、RFC 1155と1157に定義されています
SNMPv2c:
これは改訂版プロトコルでプロトコルパケットのタイプ、転送マッピング、MIB構造要素の領域においてはSNMPv1より強化されてはいますが、まだ既存のSNMPv1管理の構造(「コミュニティベース」のcを付けてSNMPv2cとしたもの)を使用しています。これはRFC 1901、RFC 1905、RFC 1906、RFC 2578に定義されています。
SNMPv3:
SNMPv3はSNMPのセキュア バージョンを定義します。SNMPv3はSNMPエンティティをリモート設定し易くもします。これはRFC 1905、RFC 1906、RFC 3411、RFC 3412、RFC 3414、RFC 3415に定義されています。
各バージョンは機能豊富に成熟しましたが、各アップグレードでセキュリティを強化してきました。各エディションのセキュリティについては次の通りです。
SNMP v1 | コミュニティベースのセキュリティ |
SNMP v2c | コミュニティベースのセキュリティ |
SNMP v2u | ユーザーベースのセキュリティ |
SNMP v2 | パーティーベースのセキュリティ |
SNMP v3 | ユーザーベースのセキュリティ |
その他有用なリンク
- WindowsデバイスをSNMPを使用するためにインストールし設定する仕方は?
- LinuxデバイスをSNMPを使用するためにインストールし設定する仕方は?
- SolarisデバイスをSNMPを使用するためにインストールし設定する仕方は?