NWシステム監視設計 SNMP

【図解】SNMPの仕組み~利用ポート,監視方法(マネージャのMIBポーリング/trap受信),tcp/udp,writeの実装例〜

SNMP初心者のためのプロトコル概要

SNMP とは、Simple Network Management Protocol の略で、IP を持つ様々な機器がきちんと働いているか、もしくは働く上で問題が無いか、といった観点で機器を監視するためのプロトコルです。

監視とは具体的には『CPU やメモリ、インタフェースでのパケット受信がどのくらい使われているか?筐体内の温度は何℃か?』といった状態監視や、『HDD や電源、ファン等の部品が壊れていないか?』といったハードウェア監視、『L2 ループが発生していないか?』といったソフトウェア監視など、多岐に渡ります。

これらの監視は『SNMP マネージャから SNMP エージェントへのポーリングによる情報取得』と『SNMP エージェントから SNMP マネージャへのトラップ/インフォーム通知』の 2 種類の仕組みにより実現します。

具体的な構成例を以下に示します。以下の例では、Linux OS 上に「Nagios」というフリーの監視ソフトをインストールしており、その Nagios の中に SNMP Manager の機能が含まれています。また、監視対象のサーバや NW 機器上では SNMP エージェントが動作しています。

SNMPマネージャとは

SNMP マネージャは SNMP エージェントと SNMP ポーリング (SNMP Get-Request の送信と SNMP Get-Response の受信) を定期的 (例えば 3 分間隔) に行います。これにより、SNMP エージェントは受動的に情報を渡します。

また、それと同時に、SNMP エージェント側の機器に何か障害が発生したときには速やかに SNMP エージェントから能動的にトラップ/インフォーム Request 受信 (インフォームを受信した場合はインフォームResponseの送信) を行うものです。

SNMP マネージャはWindows サーバや Linux サーバの上にインストールする、監視ソフトに内包されるのが一般的ですが、監視ソフトとしては、それ以外にもサービス監視、リソース監視、プロセス監視といった機能を持つことが多いです。それらは場合によっては SNMP エージェント以外のエージェントにより実現します。(先程の図の例であれば、Nagios エージェント)

各監視の説明については下記ページをご参照下さい。

【ネットワークシステム運用監視設計】のための基礎知識
ネットワークシステム監視とは 構築したシステムを適切に運用するためにはいくつか...

また、監視ソフトには例えば以下があります。

・フリー:Nagios, Zabbix, MRTG, hinemos, xymon, 等
・有償ソフト:OP Manager, PRTG, 等

SNMPエージェントとは

SNMP エージェントは、ネットワーク機器であれば大抵初期インストールされており、設定で有効にするだけで使えるようになります。

例えば Cisco であれば以下コマンドで使えるようになります。

Router(config)# snmp-server community public RO

また、Windows も同様に、「SNMP Service」というサービスを設定・起動するだけで使えるようになります。

Ctrl + R
⇒『ファイル名を指定して実行』の名前欄に services.msc と押下しEnter
⇒以下画面の該当箇所をダブルクリックし、「起動」ボタンをクリック

Linux は net-snmp というパッケージをインストールし、設定・有効化することで使えるようになります。

SNMPのバージョン

SNMP は一般にバージョン 1 及びバージョン 2 は利用されません。

バージョン 2c かバージョン 3 が使われます。

バージョン 2c まではセキュリティが甘く、コミュニティと呼ばれる文字列が平文でやり取りされるため、パケットキャプチャをすればコミュニティが分かり、結果、第三者が簡単に MIB 情報取得を出来てしまいます

例えば先程の Cisco のコマンドの例では、コミュニティは "public" となります。

バージョン 3 からは暗号化がサポートされ、その問題を回避できます。

SNMPでTCPでは無くUDPを使う理由、ポート番号について

SNMP ではポーリングは UDP/161 番ポートトラップ/インフォームは UDP/162 番ポートが使われます。

SNMP は一度にたくさんの機器を監視するケースが多いため、TCP だとマネージャにたくさんのコネクションが張られ、負荷が大きいです

また、小さいデータしか扱わないため、例えば実容量が 96 Bytes 程度のやり取りをする場合は、3way Handshake や FIN/ACK の処理も含めると、UDP で扱う場合に比べて通信量が約 2.8 倍にもなります。

なので SNMP ではUDP を使いポーリングに 3 回連続応答しない場合は異常があったと見做す、というような設定が一般的です。

ポーリングは往復が前提であるため、応答が無ければ異常だと検知できますが、トラップはエージェントから一方的に送られるだけです。なので万が一マネージャがそのパケットを取りこぼした場合は検知できません。

そのため、バージョン 2 からはトラップだけでなく、インフォームという方式も使えるようになりました。SNMP エージェントがインフォームリクエストで SNMP マネージャに通知した場合SNMP マネージャは SNMP エージェントにインフォームレスポンスを返さなければなりません

もし SNMP マネージャがインフォームリクエストを取りこぼした場合、レスポンスが返されませんので、SNMP エージェントはタイムアウトの後、リクエストの再送を試みます。

MIBとは

MIB とは、機器の監視に使えるような情報を含んだ軽量のデータベースです。oid と呼ばれる一意な識別子により、どのような情報が含まれているかが決まっています。

例えば CPU 使用率の情報は oid ="1.3.6.1.2.1.25.3.3.1.2" です。

SNMP ポーリングではマネージャ側が oid を指定し、その MIB 情報を取りに行っています。また、トラップ/インフォームでは、エージェント側がどのようなトラップ/インフォームを出すかを設定しておき、それに対応する oid の情報が変わった際にトラップ/インフォームを送信します。

MIB は大きく 2 種類に分かれます。

1 つはすべての機器に共通のもので、MIB-2と呼ばれています。もう 1 つはベンダ独自のもので、ベンダー MIB (プライベートMIB) と呼ばれています。

MIB-2 の oid は 1.3.6.1.2.1 で始まるものです。例えば先程の CPU 負荷は MIB-2 です。その他、ホスト名やインタフェースのユニキャストパケット受信量など、汎用的なものが含まれています。

一方、ベンダー MIB の oid は 1.3.6.1.4.1 です。この次の値はベンダを識別するものです。例えば Alaxala であれば "21839" ですので、"1.3.6.1.4.1.21839." と続いていきます。

これらにはベンダ独自の情報が含まれています。例えば、Alaxala のリングプロトコルに関連する情報なども存在し、リングプロトコルのステータス (リングが保たれているか否か) 等の情報も取得できます。

各メーカ、SNMP ベンダー MIB は公開されているか、購入後にベンダから提供されますので、必要に応じて調べ、監視項目として設定していくのが良いでしょう。

oid は以下サイト等から調べられます。

Global OID reference database

SNMP writeの実装例

SNMP には Read モードWrite モードの 2 種類がありますが、基本的に Read モードのみが使われることが多いです。監視では情報を読み取るだけなので、監視のみが目的であれば、Read だけで事足りるからです。

では Write モードではどのようなことが出来て、どのような実装があるのでしょうか

SNMP Writeモードで出来ること

まず、Write モードでは機器の MIB 値の変更が出来ます。これにより、特定インタフェースを Down させたり、機器自体をリブートしたりと、MIB が持っている内容に応じて、様々な連携が可能になります。

SNMP Writeモードの実装例

例えば IPS と連携して、事後検疫システムの実装が出来ます。

具体的には、{UTM = Fortinet FortiGate}, {コア L3 スイッチ =Alcatel-Lucent OmniSwitch} で、Alcatel-Lucent が提供するソフトウェア "OmniVista" をインストールした Windows サーバで以下のような構成を組みます。

FortiGate の IPS 機能で不正通信ログを OmniVista へ syslog で飛ばし、その syslog に含まれる IP 情報を OmniSwitch へ Alcatel 独自 MIB を SNMP write で変更することで、その IP に紐づく MAC アドレスの通信を禁止する、といった連携が可能です。

コメント

タイトルとURLをコピーしました