簡易ネットワーク管理プロトコル(Simple Network Management Protocol、SNMP)は、通信手順つまりプロトコルのスタンダードであり、コンピュータネットワーク上のハードウェアとソフトウェアを監視・管理するための主な方法を決定します。このブログでは、SNMP を使用してネットワークデバイスを監視する方法を説明します。

ハードウェアが Juniper 製か Cisco 製か、またはソフトウェアが UNIX か Windows かに関係なく、SNMP は標準的な方法で情報をクエリし、必要な情報へのパスを見つけます。SNMP 監視なしには、ネットワーク上の状況を確認したり、デバイスの動作状況を把握したり、問題を検出したりすることはできません。

SNMP は、1989年以来さまざまな形で使われており、それに代わり得るものも出現してはいるものの、やはりネットワーク接続デバイスの監視と管理に最もよく使用されているソリューションの1つです。SNMP は、ネットワークインフラストラクチャの状態を把握するための重要な監視ツールです。

SNMP 監視の基本

概念的には、SNMP はかなり単純です。ネットワーク上の各デバイスには、SNMP エージェントと呼ばれるプログラムがあります。このプログラムは、デバイスに関する情報を収集して、それを一定のフォーマットでエントリに編成します。SNMP エージェントは、SNMP クエリに応答することができます。デバイスには、サーバーとワークステーションに加えて、電話、プリンター、スイッチ、およびその他のハードウェアが含まれます。SNMP クエリは、ネットワーク上のすべての SNMP 対応デバイスに関する情報をポーリング、収集、処理する SNMP マネージャから送信されます。ネットワーク監視に必要なのはこれだけです。

SNMP エージェント

ほとんどの仕事はエージェントで行います。エージェントは、デバイスに関する情報を収集して整理し、マネージャからのクエリに適切な情報を使って応答します。デバイスの情報にアクセスできるマネージャを設定することもできます。SNMPトラフィックとして設定されていないデバイスに接続できる場合、仲介役としてそのデバイスに関する情報を報告することもできます。

ネットワークのハードウェアとソフトウェアには通常、エージェントがすでに組み込まれており、有効化して設定するようにします。

SNMP マネージャ

SNMP 管理ステーションは、単純なものから複雑なものまでさまざまですが、通常、SNMP アクティビティを監視してすべてのデバイスデータを記録し、有用なレポートを作成する機能を備えています。

SNMP メッセージ構造

マネージャ/エージェントアーキテクチャはシンプルでわかりやすいと思いますが、SNMP のデータ階層はそれほど単純ではありません。プロトコルが1989年以来ずっと広く使われ続けていることから想像できるように、SNMP は柔軟性・拡張性を考慮して設計されました。そのため、固定したフォーマットがありません。代わりに、管理情報ベース(Management Information Base、MIB)と呼ばれるツリー構造を使用します。概念そのものより、用語の方が複雑かもしれません。

ツリーの各ブランチには識別番号とテキスト文字列の両方がラベル付けされています。IP アドレスが数字でありホスト名が文字列であるのと同じなので交換可能ですが、デバイスを参照するために両方を使用します。特定のノードを参照するには、ルートからそのノードまで、各ブランチを追加しながら経路を追跡します。各接点はドットで表わします。すべてのブランチを含む完全なアドレスは、オブジェクト識別子(OID)と呼ばれます。識別されるオブジェクトは、CPU 使用率やインタフェースステータスなど、ネットワークデバイスに関する識別可能な事実です。これらのオブジェクトのほとんどはスタンダードですが、特別な要件が必要な製造会社は独自のオブジェクトを追加します。

これは、地図上で所番地を参考にして場所を調べる代わりに、交差点ごとに点を付けて、そこにたどり着くまでの進行方向のリストで家を見つけるようなものです。MIB ファイルを使用すると、ほとんどのネットワーク管理ソフトウェアは、OID ツリーをコンピュータのファイルシステムのようなフォルダのリストで表示することができます。記述するには困難さが伴いますが、この方法にはいくつかの利点があります。エージェントは、すべての OID、つまりそのデバイスのすべての関連要素のすべての状態で設定されているため、マネージャのシンプルなリクエストに応答できます。

また、ネットワーク上のデバイスの整理が簡単でフレキシブルになります。

WhatsUp Gold でネットワークデバイスを監視できます。

SNMP メッセージのタイプ

SNMP が、長期にわたって高い頻度で使用されているのは、メッセージがシンプルであるという事実があるからです。7種類のデータ・タイプがあります(カッコで表示)。マネージャは、以下のことができます。

  • OID の現在の値を提供するようにエージェントにリクエストする (Get)
  • MIB 内の次のオブジェクトをリクエストする、ツリーをたどれるので OID を指定することなくリクエストが可能 (GetNext)
  • 複数の GetNext リクエストを一括して行う (GetBulk)
  • リモートホストの値を変更するようにエージェントに指示する (Set) - これは SNMP プロトコル全体での唯一の書き込み操作

エージェントは以下の対応ができます。

  • リクエストされた情報を添えて応答する (Response)
  • マネージャによって要求されていない「トラップ」メッセージで応答する (Trap) - 新しいバージョンの SNMP では、SNMP トラップは “notifications” という名前に変更されました。

最後に、マネージャは「トラップ」メッセージの受信を確認できます (Inform)。これらのメッセージで、ネットワークに関する様々な情報が入手できます。

  • 帯域幅使用率
  • ディスク使用量
  • CPU とメモリの使用量
  • デバイス障害

SNMPのバージョン:用途と制限

最初のバージョンである SNMPv1 は最も単純で最も基本的なもので、まだかなり使用されています。よく知られていて、いろいろなところで使われ、簡単に入手できますが、安全性に欠けるところがあります。たとえば、プレーンテキストで認証されます。許可されていないデバイスが、マネージャのふりをすることができてしまう可能性があります。もし、SNMP の使用に関連して何か疑わしい点がある場合は、おそらくこの既知の問題が原因です。

現在、最も広く使用されているバージョンは、いくつかの機能強化が加えられた2番目の SNMPv2c です。最新のバージョンである SNMPv3 は、1998年以降のもので、認証要件が含まれており、SSH や TLS などのトランスポートプロトコルによって提供されるセキュリティを利用することができます。しかしセキュリティは設定をより複雑にします。基本的な使用のためなら、以前のバージョンでも十分でしょう。

シンプルさと柔軟性

SNMP の利点は、基本構成において、シンプルで設定が簡単で、多くの場合無料であることです。機能面での制限はありますが、基本的な実装だけでいい場合も少なくありません。より複雑な実装では、レポートを生成したり、SMS やテキストで警告を送信したり、インベントリ管理なども可能です。ネットワークのハードウェアとソフトウェアには、ほぼ確実に、SNMP エージェントが組み込まれています。管理ステーションを入手してそれらのエージェントを有効にすれば、SNMP を使用してネットワークを監視することができます。