ネットワーク上の機器を監視する方法の一つに「SNMP監視」があります。おもにスイッチ・ルーターなどのネットワーク機器の管理や監視で利用することが多い監視方法です。
名前は聞いたことあるけど、よくわからない方もいらっしゃるのではないでしょうか。
そこで、自分を含め「SNMP」をざっくりとでも理解しておくために、PCやネットワークについての基本的な知識があれば、理解できるようコンパクトに解説してみます。
技術の詳細まで理解しなくても、概要レベルで理解しておくことは仕事の上でも役立ちますよ。
目次
SNMP(Simple Network Management Protocol)とは
SNMPは、ネットワーク上の機器を監視、管理するためのアプリケーション層プロトコルです。
おもに、ルーター、スイッチなどのネットワーク機器の状態監視、リソース監視、パフォーマンス監視、トラフィック監視を行うために使用します。たとえば、ネットワーク機器の各ポート上で送受信されたパケット数、ポートの状態(up/down)、CPU使用率、メモリ使用率などを監視することがきます。
もちろん、サーバーなどの機器を監視する場合に利用されることもあります。
監視方法
SNMPでは、監視する側を「SNMPマネージャー」、監視される側を「SNMPエージェント」と呼び、マネジャーとエージェントがやり取りを行うことで、監視や管理を行います。
SNMPマネージャー機能は、メジャーな監視ツールでは標準搭載していたり、フリーのソフトウェアとして提供もされています。
SNMPエージェント機能は、ネットワーク機器やサーバー機器では、標準機能として搭載されている場合も多く、OSの機能やソフトウェアとして提供されている場合もあります。
監視方法には「SNMPマネージャーからSNMPエージェントへのポーリングによる情報取得」と「SNMPエージェントからSNMPマネージャへのトラップ/インフォーム通知」の2種類があります。
ポーリングによる情報取得
ポーリングは、SNMPマネージャーからSNMPエージェントへの通信で、機器の情報を取得して監視します。
トラップ・インフォームによる通知
トラップ・インフォームは、ポーリングとは逆にSNMPエージェントからSNMPマネージャーへの通信で、SNMPエージェント側の機器に障害が発生したときなどの通知で利用されます。
通信プロトコル
SNMPでは、通信プロトコルとして「UDP」を使用します。
理由としては、UDPはTCPに比べて一度にやり取りするデータが小さいことと、処理にかかる負荷が軽いことが挙げられます。これにより、SNMPマネージャーでは、たくさんの機器を監視しても掛かる負荷を軽くすることができます。
また、UDPの信頼性の低さを補うために、SNMPでは信頼性を確保する仕組みも搭載されています。
使用するポートは、ポーリングの場合は、SNMPマネージャーからSNMPエージェントのUDP161番ポート宛に通信が行われ、トラップの場合は、SNMPエージェントからSNMPマネージャーのUDP162番ポート宛に通信が行われます。
MIB(Management Information Base)
MIBとは、機器のさまざまな情報が記録されているデータの集合体で、OID(オブジェクトID)と呼ばれる一意の識別子により、どこにどのような情報が含まれているかが定義されています。
OIDは、階層構造になっており、各階層の項目名あるいは対応する番号をIPアドレスのように最上位から順に「.」で区切って表記します。例えば、CPU使用率の情報を番号表記で表すと「1.3.6.1.2.1.25.3.3.1.2」となります。
SNMPでは、ポーリング時にはSNMPマネージャがOIDを指定して、SNMPエージェントから情報を取得しています。
また、MIBには、すべての機器で共通で利用できる標準化された「標準MIB(MIB-2)」と呼ばれるものと、ベンダー独自の情報を記録する「拡張MIB(ベンダーMIB)」という2種類のMIBがあります。
標準MIBは、OIDが「1.3.6.1.2.1」から始まり、CPU利用率やホスト名、トラフィック量など、汎用的な情報が記録されており、拡張MIBは、OIDが「1.3.6.1.4.1」から始まり、各ベンダー独自の情報が記録されています。
SNMPコミュニティ
SNMPでは、SNMPマネージャーとSNMPエージェントの組み合わせを「SNMPコミュニティ」と呼び、SNMPマネージャーとSNMPエージェントの間で通信を行うには、同じコミュニティ名を指定する必要があり、これはパスワードと同じような意味合いです。
また、コミュニティ名でアクセスモードを指定することができます。
通常の監視では、MIB情報を読み取るだけなので、読み出し専用モード(よく使われるコミュニティ名は「public」)が使われ、MIB情報を変更するような場合は、読み書きが可能なモード(よく使われるコミュニティ名は「private」)が利用されます。
読み書き可能なモードを利用すると、インタフェースをDownさせたり、機器を再起動するといった、機器の設定変更や操作が可能になります。
SNMPのバージョンによる違い
SNMPには、複数のバージョンがあり、現在よく利用されているのはバージョン2cかバージョン3です。
バージョン2cまでは、マネージャーとエージェント間の通信が平文(暗号化されていない)でやり取りされるため、通信パケットの中身を見ると、簡単にコミュニティ名やMIB情報を参照でき、セキュリティ的に弱い部分があります。
そこで、バージョン3からは認証、暗号化、アクセス制御がサポートされ、通信データをセキュアにすることができるようになりました。
あとがき
IT関連の仕事をしていると、次から次へと新しい技術が出てきて、すべてを詳しく理解するのは難しいですが、概要レベルでも理解しておけば、意外と仕事で役立つことがあります。