【SNMPの機能について】

このHPはSNMP(基本動作、メッセージタイプ、バージョン)  についてまとめたものです。



1-1 SNMPの基本的動作

SNMPの基本的な動作シーケンスは2種類ある。
1つは「SNMPポーリング」、もう1つが「SNMPトラップ」



■SNMPポーリング
SNMPポーリングとは、SNMPマネージャから、SNMPエージェントに対して、管理情報の取得を行う動作。
マネージャから、「Get Request」「GetNextRequest」等の要求がされ、それに対して、エージェントが「GetResponse」で応答を返す。










■SNMPトラップ
SNMPトラップとは、SNMPエージェントから情報の通知を行う動作。
SNMPエージェントは、SNMPトラップを送信するように設定されている場合、異常状態が発生したことを契機に、SNMPエージェント自らトラップを送信する。
このトラップをSNMPマネージャが受けとると、
SNMPエージェントの状態に変化が起こった事を知ることができる。












1-2 SNMPのメッセージタイプと動作

SNMPは、マネージャとエージェントがSNMPパケットやり取りして、管理情報の取得や設定変更等を行う。SNMPでやり取りされるメッセージタイプは次の5つ。









SNMPは、上記の5種類のメッセージタイプと、「SNMP Get」「SNMP Set」「SNMP Trap」という3種類の動作を実現している。


■SNMP Get
SNMP Getは、SNMPマネージャから管理しているSNMPエージェントに情報を要求し、機器の情報を取得する動作。SNMPマネージャは、管理しているSNMPエージェントに対して、OIDを含めた形で「Get Request」を送信する。「Get Request」はUDPユニキャストで行い、ポート番号は「161」。


それに対し、SNMPエージェントは、指定されたOIDの値を「Get Response」で返す。MIBの階層で次のオブジェクト情報が欲しい時は、SNMPマネージャがOIDを含め「GetNext Request」を送信し、エージェントが「GetResponse」で返す。








■SNMP Set
SNMP Setは、SNMPマネージャからSNMPエージェントに情報の更新を要求する動作。
SNMP Setの例としてルータやスイッチのポートシャットダウンがある。

SNMPマネージャは、
管理しているSNMPエージェントに対して、OIDを含めた形で、「Set Request」で設定変更の要求をする。
「Set Request」は、「SNMP Get」同様、
UDPユニキャストで、ポート番号は「161」。
それに対し、SNMPエージェントは、更新した値を、「Get Response」で返す。





■Trap
Trapは、SNMPエージェントからSNMPマネージャに機器の状態変化を通知する動作。
SNMPエージェントは、機器の異常や変更等のOIDの値特定の変化があった時に、SNMPマネージャへ「TRAP」を通知する。
「TRAP」はUDPユニキャストで、ポート番号は「162」。
「TRAP」を受信することでSNMPマネージャは障害などを検知することができる。







■Cisco機器の設定

【SNMPトラップの通知先設定】
SNMPトラップの設定をするには、エージェントで通知の送信先となるマネージャの設定をする。
マネージャの指定をするには、グローバルコンフィグレーションモードで、
「snmp-server host」コマンドを実行する。

(config)# snmp-server host <アドレス/ホスト名> [ informs / traps ] [ version 1/ 2c /3{auth / noauth / priv}]  コミュニティ名  [通知タイプ]






【SNMPトラップの有効化】
SNMPトラップは、エージェントが検知した障害情報をマネージャへ通知するために使用する。
SNMPトラップを有効化するには、グローバルコンフィグレーションモードで、
「snmp-server enable traps」コマンドを実行する。


(config)# snmp-server enable traps <オプション>

<オプション>を指定すると、その対象に関するトラップメッセージのみが生成される。
また
<オプション>を省略すると、全てのタイプのトラップが有効化され、マネージャに送信される。


《設定例》

(config)#snmp-server community Public  ←コミュニティ名を「Public」として設定


(config)#snmp-server enable traps  ←SNMPトラップを有効化


(config)#snmp-server host 192.168.0.100 Public ←SNMPマネージャのIPアドレスを「192.168.0.100」に設定







1-3 SNMPのバージョン

SNMPには「SNMPv1」、「SNMPv2c」、「SNMPv3」という3つのバージョンがある。

【SNMPv1】
SNMPv1はSNMPの最初のバージョン。コミュニティ名を使用して、認証を行う。
しかし、 コミュニティ名や内容が
文でやり取りされてしまうという脆弱性がある。


【SNMPv2c】
SNMPv1と同様にコミュニティ名を使用した認証を行う。また暗号化もされないため、不正アクセスの危険性は解消されていない。  
SNMPInformメッセージが追加され、マネージャ間での通信に使うことが可能。
InformRequestもサポートしているので、SNMPエージェントからSNMPマネージャーに対して、より信頼性の高い通知を行うことができる。


【SNMPv3】
2002年にRFC標準となる。
基本的な機能は、SNMPv2cと変わらないが、コミュニティ名ではなく、
ユーザー単位のパスワード認証機能を使う。

認証は「USM」を利用したユーザー名による認証機能が導入された。HMAC-MD5やHMAC-SHAアルゴリズムに基づいた認証方式を行うことができる。  
また、データの暗号化も可能で、現在広く用いられているバージョン。以下の様にセキュリティレベルを選択できる。