なぜネットワークを管理しなければならないか?:監視を自動化するSNMP(1)
この連載では、SNMPについて説明します。SNMPの管理モデルと役割、 SNMPのアーキテクチャとしてMIBの基礎とSNMPの動作、またMIBの拡張について解説していきます。
SNMP(Simple Network Management Protocol)はネットワークシステムを監視し管理するためのプロトコルです。近年のネットワークシステム管理の重要度が認知されるにつれ、SNMPによって実現するシステム管理ツールが注目を集めています。
この連載では「SNMP」とはどのようなプロトコルなのか、実際にSNMPによってどのような管理ができるのか、また管理情報ベース(MIB)によってどのような情報を取得できるのかを解説します。今回はまずSNMPの概要を理解していただくため、SNMPの管理モデルと役割を解説します。
ネットワークシステムに不可欠な「管理」
SNMPについての解説をする前に、まずネットワークシステム管理について理解しておく必要があります。インターネットの普及に伴い、身近なさまざまな場所でネットワークシステムが構築されて、インターネットに接続しています。これらのネットワークシステムは、システム管理者によって適切に管理される必要があります。ではネットワークシステムは、なぜ管理されなければならないのでしょうか?
なぜ管理しなければならないか
「ネットワークシステムを管理しなければならない理由」と聞いていまさらと思われる方もいらっしゃるでしょう。システムを管理せずに放っておくと、致命的な障害や問題が発生する可能性が非常に高くなることは、ネットワーク管理の経験者でなくても容易に理解できることです。さらにネットワークシステムの障害は、そのシステムだけでなく、インターネットを通じてほかのネットワークシステムに影響を及ぼすこともあります。このような事態を避けるために「ネットワークシステムの管理が必須」なのは確かですが、この考え方はネットワークシステム管理をしなければならない理由の一部にすぎません。ネットワークシステムの管理については、もう少し広い視野で考える必要があります。
ネットワークシステムの構築および運用にはコストが掛かります。これらのコストを掛けてシステムを維持するのは、それによって得られるメリットがシステムのコストを上回っているからです。しかし、ネットワークシステムに障害が発生し利用できなくなった場合、そのメリットは失われて損失が発生します。もちろん障害で正常にシステムが利用できない時間が長いほど損失は大きくなります。障害の発生しないシステムは存在しませんが、管理者はシステムが99%の状態で稼働するように努力するのが使命であるといえます。さらに、管理しているネットワークシステムの障害が原因で、ほかのネットワークシステムに影響を与えた場合、損害賠償などの多大な損失を招く恐れもあります。
また、ネットワークシステムのシステムパフォーマンスは、コストパフォーマンスにも影響を与えます。例えばメールの送受信やWebの閲覧などに必要以上の時間がかかるようであれば、サービスを利用するユーザーの作業に影響します。管理者はシステムのパフォーマンスを最大限に引き出し、それらのメリットをユーザーが享受できるようにしなければなりません。さらにユーザーの要求と経営サイド(システムのコストを支払う側)の間に立って、システムの改善などについても検討する必要があります。
これらのことを箇個条書きにすると次のようになります。
- ネットワークシステムが正常に稼働しなければ(障害が発生すれば)損失が発生する
- ネットワークシステムを管理しなければ、障害の発生率が高くなる
- 自分たちの障害がほかのネットワークシステムに影響した場合、損害賠償などの損失を招く恐れがある
- システムのパフォーマンスが低下すると、コストパフォーマンスも低下する
- ユーザーの要求を理解し、システムの改善を予算内で検討する
つまりネットワークシステム管理とは、「自分たちの利益を守る」ということなのです。では、実際にネットワークシステム管理とは、どのようなことを管理しなければならないのでしょうか?
何をどのように管理するのか
ネットワークシステム管理の基本は「稼働しているネットワークシステムを常に監視し、問題が発生した場合には適切な処置を施す」ということです。一般的なネットワークシステム監視では、次のような監視ポイントを設定します。
- ネットワークシステムに接続されている機器の稼働状況
- サービスの稼働状況
- システムリソース(システムパフォーマンス)
- ネットワークトラフィック
- システムログに記録される特定のメッセージ
- システムログの急激な増加(または減少)
もちろんネットワークシステムの用途や業種などによって、監視しなければならない項目は異なります。管理者はこれらの監視しなければならない項目を検討し、より詳細な監視ポイントを決定しなければなりません。重要なことは、小さな問題を素早く発見して致命的な障害に発展する前に防ぐということです。
常にシステムを監視することは非常に重要ですが、監視の方法によってコストが大きく異なります。最も安易な方法は管理者やオペレータによる手作業での監視ですが、ミスが発生しやすいうえにコストも高く現実的とはいえません。ところが現実的ではない管理方法であるにもかかわらず、この方法で管理しているネットワークシステムは意外に多いのです。
管理者の負荷が高くコストも掛かるため監視の質が低く、結果としてさらに管理者の負担を増大させてしまう悪循環なのですが、この状況に苦しんでいる管理者によく話を聞くことがあります。原因は「ネットワークシステム管理」の現実を、経営サイドが理解していないことが多いようです。質の高いネットワークシステム管理を低コストで実現するには、監視ツールによる自動監視が不可欠です。ネットワークシステムを定期的に監視し、特定の条件(障害発生など)を満たした場合に管理者やオペレータに通知するような監視ツールを利用することで、ネットワークシステムの問題を早急に発見し、速やかに問題に対処できるようになります。SNMPはこの監視ツールで広く利用されるプロトコルなのです。
管理情報ベース(MIB)で実現するSNMPのネットワークシステム管理
さて本題であるSNMPの解説に話を進めましょう。SNMPはその名前の示すとおりネットワークに接続されている機器を「ネットワーク経由で」管理します。SNMPは「RFC 1157」で定義されており、現在ネットワークシステムの管理において、最も普及しているプロトコルといえます。
SNMPv2(バージョン2)も「RFC 1441」で定義されていますが、あまり普及しているとはいえない状態です。
SNMP マネージャ/エージェント
SNMPは管理対象となる機器に常駐するエージェントと管理する側の機器(監視サーバ)上のマネージャで構成されます。
SNMPはUDPの上位にマッピングされているプロトコルで、基本的にはUDPのポート(161番と162番)が使用されます。
マネージャとエージェントの間でやりとりされる情報は、次の3つに分類することができます。
- 情報の要求と応答
マネージャからエージェントに、監視対象機器の情報を要求します。エージェントは要求された情報を取得してマネージャに応答します。 - 情報の設定要求と応答
マネージャからエージェントに、監視対象機器の設定変更を要求します。エージェントは要求された設定変更を実行し、結果をマネージャに応答します。 - 状態変化の通知
エージェントから監視対象機器の状態変化をマネージャに通知します。
MIB(管理情報ベース)とは?
“Simple”の名前が示すように、SNMPは3種類の情報を送受信する機能しか実装されていない簡易な構造のプロトコルです。では、実際にSNMPはどのように機器を監視するのでしょうか?
エージェントは監視対象機器の情報を、「MIB(Management Information Base)」と呼ばれる「管理情報ベース」を参照して取得します。マネージャはエージェントが取得したMIBの内容から、現在の監視対象機器の状態を判断します。そのため、マネージャとエージェントはどちらも同じMIBを参照する必要があります。また、これらのMIBを記述したファイルを、MIBファイルと呼びます。
MIBにはベンダや機器固有のものなど、さまざまなものが存在します。ネットワークシステムに接続される機器が実装するべきMIBとして、RFCに規定されているMIBを「標準MIB」と呼びます。標準MIBも、その用途によっていくつかのMIBに分けることができます。その中でも代表的なものとしてMIB-2があります。また、標準MIBに対してベンダなどが独自に拡張したMIBは、プライベートMIBや拡張MIBなどと呼ばれています。
マネージャの要求とエージェントの通知で管理情報を取得する
SNMPはMIBに規定されている情報を、エージェントが機器から取得してマネージャに通知するプロトコルです。つまり、MIBに規定してさえいれば、どのような機器の情報でもエージェントが取得した情報をマネージャに送信することができるのです。では、MIBに格納されている情報を、SNMPではどのように取得するのでしょうか。
SNMPによる管理情報の取得(MIBのオブジェクトIDで指定する)
MIBに格納されている情報の1つ1つを「オブジェクト(Object)」と呼びます。オブジェクトは情報の要素によってツリー構造で管理され、それぞれに「オブジェクトID(OID)」という識別子が割り振られています。OIDは「1.3.6.1.2.1.1.6」のように、ピリオドで区切られた数字です。マネージャはエージェントに対して、OIDを指定して監視対象機器の情報の取得や設定変更をエージェントに対して要求します。
ポーリングによる情報の取得(オブジェクトIDを使い状況分析)
ポーリングは実際にSNMPで定期的な自動監視を実行することです。その場合、監視サーバのマネージャから定期的に監視対象機器の特定の情報を取得するように設定します。情報の重要度によって数分から数時間の間隔でマネージャはエージェントに対してOIDを指定し、監視対象機器から必要な情報だけを取得します。監視サーバは取得した情報から機器の状況を判断し、データをグラフ化したり、特定の数値を上回った場合にアラートを通知したりします。
SNMPのポーリングはネットワークトラフィックの監視や、ディスクの使用率といったシステムリソースの監視などに利用されることが多いようです。
Trapによる情報の取得(異常イベントの発生をマネージャに通知)
Trapはエージェントによる自発的な監視機能です。エージェントは事前に指定された機器の情報を定期的に取得し、ある一定の条件を検知すると、その旨をマネージャに通知します。
Trapはリブートの検知や、機器の急激な温度上昇などの検知によく利用されます。
SNMPの脆弱性に関する問題
SNMPの便利な面を解説してきましたが、SNMPの脆弱性についても少しだけ触れます。SNMPは非常に簡易なプロトコルです。それは多くのプラットフォームへの移植などを容易にしましたが、安全性にやや問題があることが最近よく話題になっています。
SNMPのエージェントは、基本的に次の2点でマネージャからの要求を確認します。
- IPアドレス
- コミュニティ名#1
#1 コミュニティとはSNMPが管理するネットワークシステムの範囲です。管理者はこのコミュニティに名前(コミュニティ名)をつけます。コミュニティ名はそのコミュニティの権限に紐づいたパスワードの役割も果たします。
これらの内容が事前に設定したものと一致すれば、エージェントは簡単に指定されたOIDの情報を応答してしまいます。そのためインターネット上に接続された機器の情報を、第三者に取得されたり、別の値を設定されてしまうという問題が発生しています。
このような事態を憂慮してベンダもさまざまな対策を行っていますが、やはり最善の解決策はインターネット上からはSNMPを使わない方法でしょう。ネットワークシステムの監視はローカルに監視サーバを設置し、UDPポートは外部とのアクセスを制限することで根本的に問題を解決します。もちろんこれだけで完璧に守られるわけではありません。なぜなら、セキュリティの問題はネットワークシステム全体の問題だからです。ですが、セキュリティについては、ほかのより詳細な記事に解説を任せることにします。
MIBで広がるネットワークシステム管理機能
今回はツールによるネットワーク管理の必要性と、SNMPの概要を解説しました。プロトコルとしては非常に簡易なSNMPですが、MIBによって非常に多くの情報を取得することができます。そして、MIBもこれからの技術革新によって、より多くの機能をサポートするものがリリースされるでしょう。今後SNMPによって、どのような機能を実現できるかは、まだまだ未知数です。
Copyright © ITmedia, Inc. All Rights Reserved.