ASHでは、技術評論社のSoftwareDesign誌(2002年4月号)のプログラミングで理解するSNMPを執筆しました。
また、執筆時のプログラムも公開しています。
プログラムの詳細は、技術評論社のSoftwareDesign誌を読んでください。
なお、記事についての質問などがありましたら、ASHの掲示板でも受け付けます。
SNMP(Simple Network Management Protocol)とは、ネットワークに接続された機器類をネットワーク経由で監視するためのプロトコルです。
SNMPのバージョン1は、RFC1157で定義され、バージョン2はRFC1441でされています。
今のところ、普及しているのはバージョン1のSNMPです。本稿の説明も、SNMPバージョン1に基づいています。
SNMPによるネットワーク管理は、マネージャと、管理対象機器に常駐するエージェントとの間のUDP通信により実現されます。 マネージャからのリクエストに対して、エージェントはレスポンスを返します。 また、機器がリブートした等、特別な事象が発生した時は、エージェントからマネージャにトラップが送られます。
MIB(Management Information Base)は、SNMPに対応したネットワーク機器に存在する、そのネットワーク機器についての管理情報のデータベースです。
マネージャからのリクエストに対して、エージェントはMIB内の情報を返します。
逆に言うと、MIBに定義されている情報しか、マネージャは取得することができません。
MIBに格納されている個々の管理情報のことを、オブジェクト(Object)と呼びます。
OID(Object IDentifier)とは、ひとつひとつのオブジェクトを区別するために振られた識別子で、オブジェクト識別子とも呼ばれます。
MIBでは、オブジェクトはツリー構造で管理されています。
root | +-(0) +-(1)iso -+-(1) +-(2) +-(2) +- . +-(3)org -+-(1) +- . +-(4) +-(2) +- . +-(3) +- . +-(4) +-(5) +-(6)dod -+-(1)internet-+-(1) +-(7) +-(2) +-(2)mgmt-+-(1)mib-2-+-(1)system-+-(1)sysDescr +- . +- . +-(3) +-(2) +-(2) +-(2)sysObjectID +- . +- . +- . +- . +- . +-(3)sysUpTime +- . +- . +- . +-(4)sysContact +-(5)sysName +-(6)sysLocation +-(7)sysServices |
OIDは、例えば".1.3.6.1.2.1.1"のように、ピリオドで区切られた数字として表現されます。
ピリオドで区切られる各数値は、オブジェクトのツリー構造の枝に対応します。
例とした".1.3.6.1.2.1.1"は、sysDescr、つまり機器についての説明文字列を意味します。
なお、実際にマネージャがエージェントに対してリクエストを発行する時にOIDを指定する場合には、オブジェクトの後にインデックス番号を指定する必要があります。
機器にひとつしか存在しないオブジェクトの場合は、インデックスは0になります。
例えば、sysDescrは機器にひとつしか存在しないので、".1.3.6.1.2.1.1.0"と指定します。
ネットワークインタフェースの数だけ異なる情報が存在するようなオブジェクトの場合などは、それぞれの情報を取得するためには、1以上のインデックスを指定する必要があります。
コミュニティ名は、マネージャとエージェントとの間のやりとりで、パスワードのような役割を持っています。 つまり、マネージャからエージェントにリクエストを発行する時、正しいコミュニティ名を指定しないと、エージェント側では不正アクセスと解釈します。