目次
SNMPとはどのようなプロトコル?
SNMPとは、UDP/IPネットワーク上のネットワーク機器を監視・制御するための通信プロトコルです。OSI参照モデルでは、アプリケーション層の情報通信方法として定義されています。
SNMPとはどのようなバージョンがあるのか
SNMPのバージョンには、SNMPv1、SNMPv2、SNMPv2c、SNMPv3のバージョンがあります。ですが、SNMPv2はほとんど使われることなく、SNMPv2cが主に使われています。
ここから、SNMPv1、SNMPv2c、SNMPv3の違いについて説明します。
SNMP v1
RFC1157で規定されているSNMPを指します。セキュリティレベルはコミュニティベースとなっています。
下記のコマンドが定義されています。
コマンド | 送信元 | 役割 |
---|---|---|
Get | SNMPマネージャ | 取得したい情報を要求するコマンド。OIDを指定します。 |
GetNext | SNMPマネージャ | 取得したい情報を要求するコマンド。直前に指定したOIDの次のOIDを指定します。 |
Set | SNMPマネージャ | SNMPエージェントを制御/設定するコマンド。OIDを指定します。 |
GetResponse | SNMPエージェント | SNMPマネージャから指定されたOIDに対し、値を返すコマンド。 |
Trap | SNMPエージェント | SNMPエージェントの機器に変化が起きた場合に、自働的にSNMPマネージャへ送られる通知。 |
SNMP v2c
RFC1902から1907で規定されているSNMPを指します。コマンドのフォーマット(PDF)がSNMPv1から拡張されています。セキュリティレベルはSNMPv1と同様にコミュニティベースとなっています。
SNMPv1のコマンドに加え、下記が定義されています。
コマンド | 送信元 | 役割 |
---|---|---|
GetBulk | SNMPマネージャ | GetNextの拡張版コマンド。範囲を指定することで、GetNext操作を繰り返さなくてもまとまったMIBを取得することが可能。 |
INFORM request | SNMPエージェント | SNMPマネージャへ通知する際に、確認応答を要求するコマンド。 |
SNMP v3
RFC2273から2275で規定されているSNMPを指します。セキュリティレベルは向上しており、SNMPv2cで拡張されたPDUが暗号化できるようになりました。
SNMPv3で選択できるセキュリティは下記3項目の組み合わせとなります。
・メッセージの安全性:パケットの中身を書き換えられないように保護すること。
・認証:メッセージの送信元の有効性を判定すること。
・暗号化:不正な送信元に内容を読まれることをふせぐため、メッセージの内容自体をミキシングすること。
SNMPとは?仕組み・特徴・覚えるべき基礎用語について
SNMPとは、ネットワーク内の装置群を監視し、また制御するために一般的に用いられるプロトコルです。
Windows、LinuxいずれのOSにおいても、Net-SNMPに代表されるSNMPエージェントのプログラムをインストールすることによって監視・制御の対象とすることができます。
またSNMPマネージャとしては、代表的な製品にZabbixというオープンソースのソフトウェアがあります。他にもOpManagerのような有償製品からTWSNMPのようにフリーソフトとして提供されているものまで幅広くラインナップがあります。
ここではIT初心者にとっても理解が進みやすいよう、SNMPの仕組み、特徴や用語の解説を通じて、ネットワーク内の装置を監視・制御するための要件をわかりやすく説明していきます。
SNMPの仕組み3つ
SNMPによるネットワークを用いた通信機器の管理は、各通信機器に常駐するSNMPエージェントと管理を目的に用意されたSNMPマネージャで構成されています。
SNMPエージェントは、マスターエージェントとサブエージェントの2つに役割を分ける構成を取ります。
ここではマスターエージェント、サブエージェント、マネージャという、構成上の3つの役割を順に説明していきます。
SNMPの仕組み1:マスターエージェント
マスターエージェントは、SNMPエージェントの中で、SNMPマネージャとSNMPのプロコルメッセージを交換する役割を担っています。
マスターエージェントの具体的なプロセスとしてはまず、1)マネージャからのSNMPによる要求を受信し、2)受信した要求内容をサブエージェントに伝達、そして3)サブエージェントからの応答をマネージャに送信する処理となります。
SNMPの仕組み2:サブエージェント
サブエージェントは、SNMPマネージャからマスターエージェントを介して伝達された要求に対してシステム内の実処理を行う役割を担っています。
またトラップのようにエージェント側から自発的に発信する情報に関しては、起点となってマスターエージェントへ伝達する処理も行います。
いずれの場合も、SNMPマネージャとサブエージェントが直接情報のやりとりを行うことはありません。
SNMPの仕組み3:マネージャ
SNMPマネージャは、SNMP構成の中において対象装置の管理情報を収集して監視し、また収集した管理情報を加工して対象装置の設定に変更を加えることで制御を行う役割を担っています。
管理情報の収集に関しては、SNMPマネージャ側からSNMPエージェントへ必要な管理情報のリクエストを発信して、応答によって収集するパターンと、SNMPエージェントが自発的に装置の状態変化を発信して、SNMPマネージャが受信するパターンの2通りがあります。
SNMPの特徴3つ
SNMPはUDPによるシンプルな管理情報の受け渡しが行われる点で、動作が軽くシステムへの負荷が高いというメリットがあります。
以下ではSNMPの技術的な3つの特徴として、RMON仕様であること、ポーリングによる制御およびトラップによる検知ステムが提供されていることを、順を追って説明していきます。
SNMPの特徴1:RMON仕様である
SNMPによる装置の監視はネットワークにおけるRMON(アールモン)機能と組み合わせることで、より総合的な情報を得ることができます。
RMONとはRemote Network Monitoringの略で、プローブと呼ばれる検出装置を設置することによって、ネットワーク内のトラフィックデータを監視する機能です。
ネットワーク内のSNMPマネージャおよびスイッチがRMON対応の場合、監視制御システムはSNMPによって管理情報の収集および設定変更制御ができる他、ネットワークトラフィックに関する統計情報の収集を行うことができます。
SNMPの特徴2:ポーリングという制御・検出方式である
SNMPプロトコルを用いた装置の監視・制御のうち、SNMPマネージャからネットワーク内の他の装置内にあるSNMPエージェントへ管理情報の送信リクエストを送ります。
SNMPエージェントからSNMPマネージャへ要求された情報を送信する、という一連のやりとりをSNMPにおけるポーリングと呼びます。
SNMPマネージャ側からSNMPポーリングを定期的に実施し、ネットワーク内にある他の装置の状態を把握することをSNMP監視と言います。
SNMPマネージャによってSNMPエージェントに対して管理情報を送信するよう制御を行い、一定間隔で収集された情報から、装置の異常を検出する方式です。
SNMPポーリングによって取得できる情報については、サーバ装置とネットワーク装置で異なります。サーバ装置に関して取得できる情報としてはCPU使用率、メモリ使用率、ディスク使用率が挙げられます。
またネットワーク装置に関して取得できる情報としてはCPU使用率、メモリ使用率の他に、ポートごとの送受信されたパケット数、パケットエラー数、ポートの状態(up/down)を挙げることができます。
SNMPの特徴3:トラップによる検知システム
SNMPポーリング監視がSNMPマネージャを起点としたネットワークにある他の装置の状態異常検知の方法であったのに対し、SNMPエージェントが自発的にSNMPマネージャへ管理情報を送信する働きをSNMPトラップと呼びます。
状態異常を検出するための動作という点ではSNMPポーリング監視と目的は同じですが、一定間隔で情報を収集するSNMPポーリングとは異なり、機器に異常が発生次第ただちにSNMPマネージャへ状態異常を通知するという点で、即時性に関して利点があります。
一方で状態異常の定義が構築されたシステム内で最適化されていない場合、不必要な場合にもSNMPトラップが多くの装置からSNMPマネージャへ送信される可能性があり、重要な状態異常が埋もれて見逃してしまう可能性が高まります。
このため、SNMPトラップをSNMPポーリングと併用する場合には、SNMPによる監視・制御の定義を入念に検討し、また運用中に最適化していく必要があります。
SNMPの覚えるべき基礎用語4つ
SNMPとはアプリケーションレイヤの国際標準プロトコルですが、ネットワークの他の技術では用いられない独自の用語が存在しています。
下記では独自の用語に加え、ネットワークで用いられる場合に独自の使い方をする基礎用語を含め4つほど紹介していきます。いずれもSNMPの全体像を把握する上で、欠かせない用語と言えます。
SNMPの覚えるべき基礎用語1:MIB
MIBとはManagement Information Baseの略で、管理情報ベースと呼ばれることもあります。SNMPプロトコルで受け渡しされて利用するための情報で、ツリー構造のテキストファイルで定義されます。
SNMPでは一般的にマルチベンダの装置を一元的に監視・制御することが想定されているため、グローバルで標準化されたMIBが存在します。これを標準MIBと呼びます。
これに対し、SNMP監視・制御の有用性を高めるためにベンダが独自で情報を格納するMIBも存在します。これを拡張MIBと呼びます。
SNMPの覚えるべき基礎用語2:RMON
RMONとはRemote network MOnitoringの略で、ネットワークの状態を遠隔地から監視するための技術です。プローブと呼ばれる装置を監視対象ネットワーク下に構成させ、トラフィックに関する統計情報を収集する手段を用います。
収集できる情報としては総パケット数、ブロードキャストに利用されているパケットなど種別ごとのパケット数、コリジョンエラー数やCRCエラー数が挙げられます。
またRMONにおいては、プローブにMIBの送信間隔や値の差分比較によるトラップ発行を行うアラームとしての役割を果たすこともあります。
SNMPの覚えるべき基礎用語3:トラフィック
通信・ネットワーク分野におけるトラフィックとは、インターネットとLANにおいて、ある期間内に転送され処理されたデータ量を表します。秒・分といった単位時間当たりに換算した数値を指すこともあります。
SNMPの覚えるべき基礎用語4:SNMPプロトコル仕様
SNMPとはsimple Network Monitoring Protocolの略で、IPネットワークに接続している装置を監視・制御するための共通方式を意味します。
IETF(Internet Engineering Task Force)によってRFC.2571に定義されています。
SNMPとはどのような導入メリットがあるのか
SNMPは市場の監視アプリケーション製品と比較して、収集できる管理情報量が限定的であると言えます。
一方で、身の回りにあるネットワーク装置、例えばパソコン、テレビ、ゲーム機やプリンターなど多様なデバイスで考えると、全てが同じベンダとはならないことが一般的です。
そのような状況で、SNMPにいかなる導入のメリットがあるのかを説明していきます。
インストールが不要である
SNMPエージェントのプログラムは、市場の監視システムのように専用のエージェントプログラムをインストールすることは不要というメリットがあります。
ネットワーク装置においてはほぼプリインストールされているため、新たにエージェントプログラムを用意してインストールすることは不要となります。
サーバ装置においても、Windows OSに関しては予め「サービスとアプリケーション」からSNMPエージェントの設定を呼び出すことが可能です。
Linuxについては例えばCent OSの場合はnet-snmpというプログラムを用意し、インストールすることで、他のベンダと同様にSNMPエージェントを有する装置として監視対象とすることが可能です。
機器のメーカーや機種に拘わらず利用できる
SNMPプロトコルは、インターネットに関する標準化団体(IETC)によってRFC.2571に定義されたネットワーク内の装置監視・制御のための国際標準仕様です。
そのため異なったメーカーや機種が混在した装置群であっても、ミドルウェアを介する必要なくネットワーク内に構成して監視・制御することが可能です。
SNMPとはどのような設定方法がある?
SNMPは汎用性の高いプロトコルである一方、テキストファイルでの情報伝達、コマンドでの設定処理が必要な点については多少の技術的なハードルがあると言えます。
以下では、SNMPエージェント側が選択できる設定の種類と方法を紹介し、想定される実際の使われ方とともに説明します。
読み出し専用として使う場合
装置にSNMPエージェントの設定をする際、マネージャからの管理情報要求に対して応答するのみで、マネージャによる設定情報の変更を認めない場合は「読み出し専用」と設定することが可能です。
この設定の場合、SNMPマネージャはエージェント側のオブジェクトストリングス以外のMIB内のすべての情報を読むことはできますが、書き込みアクセスはできません。
読み出し設定を有効にするには、次の通りコマンドを実行します。
(enable) set snmp community read-only public(またはコミュニティ名)
エージェントを読み出し専用で設定する主なケースとしては、該当の装置が外部からの設定変更を受けることが運用上好ましくない場合が挙げられます。
読み書き可能としての使う場合
装置にSNMPエージェントの設定をする際、マネージャからの管理情報要求に対する応答に加え、マネージャによる設定情報の変更を受け入れる場合は「読み書き可能」と設定することが可能です。
この場合、次の2つの設定を使い分けることが可能です。
1)Read-Write(RW)
SNMPマネージャはエージェント側のコミュニティストリングス以外のMIB内のすべてのオブジェクトを読み取り、書き込むアクセス権が与えられます。ただしコミュニティストリングスへのアクセスはできません。
RW設定を有効にするには、次の通りコマンドを実行します。
(enable)set snmp community read-write public(またはコミュニティ名)
2)Read-Write-all
SNMPマネージャはエージェント側のコミュニティストリングスを含めたMIB内のすべてのオブジェクトを読み取り、書き込むアクセス権が与えられます。
Read-Write-all設定を有効にするには、次の通りコマンドを実行します。
(enable)set snmp community read-write-all public(またはコミュニティ名)
エージェントを読み書き可能で設定する主なケースとしては、該当の装置についてSNMPマネージャを通じて設定変更が可能なデバイスとして扱う場合が挙げられます。
SNMPとはネットワークのトラブルを防止するプロトコルである
ネットワーク上の装置の状態監視を行う方法は様々あり、システムの構成、対障害性要件や予算など様々な要素が組み合わさって決定されます。
SNMPは名前の通りシンプルな管理情報のやりとりであるものの、国際的に標準化されているため汎用性が高く、ベンダ間での互換性を懸念する必要がありません。
昨今のITシステムにおいてはマルチベンダで構成を取ることが一般的であり、SNMPを用いることは装置ごとに監視の可能/不可能が生じることはなくなります。
RMONとの併用によってネットワーク内の装置全体・トラフィックの双方を監視できるという意味で、SNMPはネットワークのトラブルを防止するプロトコルであると言えます。
インフラエンジニア専門の転職サイト「FEnetインフラ」
FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。
転職をお考えの方は気軽にご登録・ご相談ください。