ITの教科書検索
入門・発展ページ読了 約11分

SNMPとは ― 仕組みとネットワーク管理

SNMPとは、ルータなど多数の機器を1台の管理用サーバで監視・設定するプロトコルです。マネージャとエージェントの役割、MIB・OID、ポーリングとトラップの違いが分かります。

目次
  1. 機器をまとめて監視・管理するプロトコル
  2. マネージャとエージェント
  3. MIBとOID
  4. 動かして確かめる:ポーリングとトラップ
  5. 値を書き換えるSet操作
  6. SNMPv1・v2cとv3
  7. 運用管理の3分類とSNMPの関係
  8. syslog・pingとの違い
  9. 練習問題

SNMPとは、機器をまとめて監視・管理するプロトコル

SNMP(Simple Network Management Protocol)は、ルータ・スイッチ・サーバなど多数の機器を1台の管理用サーバからまとめて監視・設定するプロトコルです。監視する側のソフトウェアと、監視される機器のソフトウェアがやり取りして、機器の状態を把握します。

機器が何十台あっても、止まった機器や混んでいる回線にすぐ気づけます。2つのソフトウェアの役割、状態を表すMIB、定期的な問い合わせと機器からの通知の違いを順に説明します。

マネージャとエージェント

SNMPは、次の2つの役割で成り立っています。

  • SNMPマネージャ:監視する側です。監視サーバで動くソフトウェアで、複数のエージェントに問い合わせたり、通知を受け取ったりします。SNMP管理ステーションとも呼びます。
  • SNMPエージェント:監視される側です。ルータやスイッチなど、管理対象の機器で動くソフトウェアです。自分の情報を、MIBという形で持ちます。
監視サーバ(SNMPマネージャ)192.168.10.50ルータ(エージェント)192.168.10.1MIBスイッチ(エージェント)192.168.10.2MIB監視対象サーバ(エージェント)192.168.10.3MIBほかにも監視対象は多数① GetRequest(宛先161番)② Get Response(送信元161番)Trap(宛先162番・自発的に送る)
監視サーバ(SNMPマネージャ)は、ルータへGetRequestを送って値を尋ねます。宛先はルータのUDP161番です。ルータはGet Responseで答えます。送信元はルータの161番ですが、宛先はマネージャが送信に使った一時的なポートです。マネージャ側は161番で待ち受けていません。一方スイッチは、マネージャから聞かれなくても、自分の判断でTrapを送ります。宛先はマネージャのUDP162番です。使う宛先ポート番号は、ポーリングとトラップで161番と162番に入れ替わります。各機器は、自分の状態をMIBという形で保持しています。

1台のマネージャが複数のエージェントとやり取りできるのが、SNMPの利点です。管理者は機器を個別に確認する代わりに、監視サーバの画面で全体を見渡せます。

MIBとOID

エージェントが持つ管理情報の集合を、MIB(Management Information Base)と呼びます。日本語では、管理情報ベースと訳します。MIBは木構造で、機器の起動時間や通信量といった項目が、それぞれ木の中の1か所に対応します。

木構造の中の位置は番号で示します。根にあたるisoから目的の項目まで、通った枝の番号をドットでつないで表します。この番号をOID(Object Identifier)と呼びます。

たとえば、sysUpTimeはエージェントが起動してからの時間を表す項目で、RFC 1213で定義されたMIB-IIのsystemグループに属します。そのOIDは、次の図のとおりです。

iso(1)org(3)dod(6)internet(1)mgmt(2)mib-2(1)system(1)sysUpTime(3)private (4)interfaces (2)OID(8段をドットでつなぐ)1.3.6.1.2.1.1.3 = sysUpTime
OIDは、木構造を根から葉へたどり、各段の番号をドットでつないだものです。iso(1)からsysUpTime(3)までたどると、1.3.6.1.2.1.1.3になります。mgmtと同じ段のprivate(4)には、メーカー独自のMIBが置かれています。systemと同じ段のinterfaces(2)には、NICなどの情報が置かれています。途中で選ぶ番号によって別の枝に分かれ、別のOIDになります。

同じ仕組みで、各メーカーはprivate(4)の枝の下に、自社だけで使う拡張MIBを定義しています。たとえば、Ciscoの枝は1.3.6.1.4.1.9です。標準MIBはメーカーをまたいで共通ですが、拡張MIBは機種ごとに異なる情報を扱います。

動かして確かめる:ポーリングとトラップ

マネージャとエージェントのやり取りには、定期的に問い合わせるポーリングと、機器から通知するトラップの2種類があります。次の図で切り替えると、先に話しかける側・使うポート番号・タイミングが変わります。

先に話しかけるのは
マネージャ(監視サーバ)
使うポート番号
UDP 161番(エージェント宛)
タイミング
決まった間隔(例:30秒ごと)で、マネージャが自分から定期的に尋ねる
  1. 1監視サーバ(マネージャ) → ルータ(エージェント)GetRequest(OIDを指定して値を尋ねる、エージェントの161番宛)
  2. 2ルータ(エージェント) → 監視サーバ(マネージャ)Get Response(値を返す、エージェントの161番からマネージャの一時ポートへ)

これを30秒ごとなど一定の間隔で繰り返します。マネージャが尋ねない限り、エージェントの側から話しかけることはありません。トラフィック量など、時間の経過で変化する値の性能管理に向いています。

ポーリングは、マネージャが確認しに行くpull型の動きです。トラップは、エージェントが知らせるpush型の動きです。Trapには受信確認がありません。届いたかを確かめたいときは、InformRequestを使います。

値を書き換えるSet操作

ここまでのGetRequestとTrapは、値を読み取ったり通知したりするだけの操作でした。SNMPには、エージェントの設定を書き換えるSetRequestという操作もあります。

操作送信元向き意味
GetRequestマネージャマネージャ → エージェント指定したOIDの値を1つ尋ねる
GetNextRequestマネージャマネージャ → エージェント指定したOIDの次の項目を尋ねる(MIBを順にたどるときに使う)
GetBulkRequestマネージャマネージャ → エージェント複数のOIDの値をまとめて尋ねる(v2c以降)
GetResponseエージェントエージェント → マネージャGet・GetNext・GetBulk・Setへの応答として値を返す
SetRequestマネージャマネージャ → エージェント指定したOIDの値を書き換える
Trapエージェントエージェント → マネージャ要求を待たずに、異常などのイベントを自分から通知する。受信確認はない
InformRequestエージェントエージェント → マネージャTrapと同様の通知だが、マネージャからの受信確認を伴う(v2c以降、RFC 3416)

SetRequestを使うと、監視サーバから機器の設定を変更できます。たとえば、インタフェースの説明文や、一部機器の有効・無効を変更できます。GetRequestと違って機器の状態を変えるので、不正に使われないよう認証を強くする必要があります。

SNMPv1・v2cとv3

SNMPには3つのバージョンがあり、認証と暗号化の強さが異なります。

バージョン認証暗号化主な特徴
SNMPv1(RFC 1157)コミュニティ名(平文)なし最初のバージョン。GetBulkRequestがなく、大量の値をまとめて取得するのに向かない
SNMPv2cコミュニティ名(平文)なしGetBulkRequestなどの機能を追加。認証はv1と同じくコミュニティ名だけで弱い
SNMPv3(RFC 3411〜3418)USM(ユーザーごとのID・パスワード)あり(USMで対応)VACMでグループごとにアクセスできるMIBの範囲も制限できる。現在推奨される方式

SNMPv1とSNMPv2cは、コミュニティ名という文字列を合言葉として使います。コミュニティ名は暗号化されず、平文のままネットワークを流れるので、経路上で盗聴されると読み取られてしまいます。

コミュニティ名を知った攻撃者は、正規のマネージャになりすまして、GetRequestで情報を盗んだり、SetRequestで設定を書き換えたりできます。

SNMPv3は、この弱点に対応したバージョンです。仕様はRFC 3411〜3418で、まとめてSTD 62とも呼ばれます。新しく構築するネットワークでは、SNMPv3の利用が推奨されています。

SNMPv3では、ユーザーごとに認証と暗号化を行えます。この仕組みがUSM(User-based Security Model)で、RFC 3414で定められています。さらに、ユーザーをまとめたグループごとに、アクセスできるMIBの範囲も制限できます。この仕組みがVACM(View-based Access Control Model)で、RFC 3415で定められています。

運用管理の3分類とSNMPの関係

ネットワークの運用管理は、構成管理・障害管理・性能管理の3つに分けられます。SNMPは、この3つに使えるツールの1つですが、SNMPだけで3つの管理が完結するわけではありません。

  • 構成管理:機器の構成情報を把握し、変更を記録する管理です。SNMPのGetRequestで設定値を読み取れます。変更履歴の記録は、SNMP以外の仕組みで行います。ネットワークをソフトウェアで一元的に制御するSDN(Software-Defined Networking)も、SNMP以外の仕組みです。
  • 障害管理:障害を検出し、分析し、対応する管理です。トラップによる異常の即時通知と、ポーリングによる死活監視が、SNMPの得意な部分です。
  • 性能管理:トラフィック量と転送時間を分析する管理です。インタフェースの通信量などをポーリングで取得し続けると、トラフィック監視ができます。

syslogとの違い・pingとの違い

SNMPは、マネージャがMIB・OIDで値を指定して取得する仕組みです。syslogは、機器が生成したログメッセージを、決まった宛先へ送り続ける仕組みで、標準のsyslogサーバはUDP514番を使います。マネージャ側から値を指定して尋ねる機能は、syslogにはありません。重大度レベル(Severity)やファシリティなど、syslogの仕組みはSyslogの記事にまとめています。

pingは、ICMPを使って相手に届くかどうかを確認するコマンドです。SNMPは、届くかどうかだけでなく、CPU使用率や通信量などの詳細な状態を取得・通知できます。また、pingは1回ごとの確認で、SNMPのポーリングは定期的な監視です。

直接つながった隣の機器を自動で見つけるCDPとLLDPは、機器どうしが自分の情報を知らせ合う仕組みです。CDPでは、隣の機器のSNMPエージェントのアドレスも知ることができます。

練習問題(全5問)

Q1SNMPの説明として正しいものは?
Q2SNMPマネージャとSNMPエージェントの役割として正しいものは?
Q3ポーリングとトラップの違いとして正しいものは?
Q4SNMPv1・SNMPv2cとSNMPv3の違いとして正しいものは?
Q5MIBとOIDの関係として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す