広告
広告
https://www.7key.jp/nw/technology/protocol/snmp.html#what
SNMPはTCP/IPネットワークに接続されている通信機器をネットワーク経由で監視や制御をするためのプロトコルです。1988年に開発されRFC1157で規定されています。SNMPはアプリケーション層プロトコルの1つでUDP(ポート番号161番及び162番)を利用し、更にこのUDPがIPを使うようになっています。
SNMPによるネットワーク管理は、管理対象となるネットワーク機器に常駐するエージェントと、管理する側の機器上のマネージャとのUDP通信により実現されます。具体的にやり取りされる情報には以下のものがあります。
また、マネージャとエージェントの間で情報をやり取りする方法には、ポーリングとトラップの2つがあります。
マネージャが定期的に要求を送信し、これにエージェントが応答をする方法です。エージェントから定期的に情報を抜き出し、その情報の推移からエージェントの状態を知るために使用します。UDP161番ポートが使われます。情報の重要度によって数分から数時間の感覚でマネージャはエージェントに対してOIDを指定し、情報を取得します。ポーリングはネットワークトラフィックの監視やディスクの使用率といったシステムリソースの監視などに利用されます。
障害が発生した際など自らの状態に何らかの変化が起きた際に、エージェントが自発的にマネージャへ情報を通知する方法です。このため、エージェントは事前に指定された情報機器の情報を定期的に取得しておく必要があります。UDP162番ポートが使われます。トラップはリブートの検知や機器の温度上昇の検知などに利用されます。
SNMPでマネージャがエージェントと通信をする際には、コミュニティと呼ばれる文字列を指定します。コミュニティは管理したい機器をグループ化するために使われる概念で、マネージャとエージェントが同コミュニティの場合のみ通信が可能な仕様となっています。エージェントは複数のマネージャと通信することを視野に入れ、複数のコミュニティを設定可能となっています。また、エージェントはコミュニティに対して読み込み専用、書き込み専用、読み書き可能の3つの属性を指定することができます。
マネージャがコマンドを発行する際にコミュニティ名が一致しないと通信できないので、コミュニティに使われる文字列はアクセス制御のためのパスワードのような役割も持っています。ただ、SNMPではパケットが暗号化されるわけではなく、コミュニティ名は平文のままネットワークを流れますので注意が必要です。
https://www.7key.jp/nw/technology/protocol/snmp.html#working
SNMPではコマンドのやり取りで機器やネットワークの管理を行います。ただ、Simpleと言う名が示す通り、SNMPのコマンドは非常に簡単なもので、基本的にはGetRequest
、GetNextRequest
、SetRequest
、GetResponse
、Trap
と言う5つのオペレーションしかありません。マネージャがエージェントの情報を知りたい場合は、指定したMIBのOIDを送りそのOIDに格納されている情報を得ることとなります。
コマンド | 意味 |
---|---|
GetRequest | MIB変数の値を要求する。 |
GetNextRequest | 指定し他MIBの次のMIB変数を読み込む。連続する範囲のMIB値を次々に読み出すことをMIB Walkと呼ぶ。 |
SetRequest | MIB変数の値を更新する。 |
GetResponse | GetRequest 、GetNextRequest 、SetRequest に対するエージェントからの応答。 |
Trap | トラップ送信。 |
GetBulkRequest | GetNextRequestの拡張コマンドで繰り返す回数を指定できる。 |
InformRequest | 複数のマネージャ間で情報交換用の通信に利用する。 |
上記コマンドは以下のSNMPメッセージとしてマネージャとエージェントでやり取りされます。
フィールド | 説明 |
---|---|
リクエストID | エージェントからの応答パケットがどのリクエストに対する応答かを判別するために使用する。 |
エラーステータス | エージェントからのエラー通知情報。GetResponse のPDUで利用される(詳細は下表)。 |
エージェントIPアドレス | どのエージェントからのトラップかを判別するために使用。 |
一般トラップ番号 | トラップの種類を表す(詳細は下表)。この番号が7の場合は、その機器固有のトラップであり、同PDUの固有トラップ番号に別途そのトラップを識別する番号が付与される。 |
値 | Status | 意味 |
---|---|---|
0 | noError | エラー無し。 |
1 | tooBig | 与えられた結果が大きすぎて管理エージェントが応答を作成できないことを表す。 |
2 | noSuchName | 可変結合フィールドで指定された名前(オブジェクト)が存在しないことを表す。 |
3 | badValue | 要求されたオブジェクトについて、指定値のフォーマットが正しくないことを表す。 |
4 | readOnly | MIBビューでRead-Onlyとなっているオブジェクトを変更しようとしたことを表す。 |
5 | genError | その他エラーが発生したことを表す。 |
値 | Trap | 意味 |
---|---|---|
1 | coldStart | MIB設定値はクリアされ、エージェントが再起動した。 |
2 | warmStart | MIB設定値は保存され、エージェントが再起動した。 |
3 | linkDown | 通信インターフェイスは使用不可である。 |
4 | linkUp | 通信インターフェイスは使用可である。 |
5 | authenticationFailure | 認証不可メッセージを受信した。 |
6 | egpNeighborLoss | 送信元エージェントがEGP隣接装置の1つのダウンを検出した。 |
7 | enterpriseSpecific | ベンダ固有のトラップである。 |
https://www.7key.jp/nw/technology/protocol/snmp.html#supplement
SNMPにUDPが利用されるのは、ネットワークの輻輳対策である。転送エラーが起こった際に、SNMP自らの責任で処理を行う事が出来、利用可能なリソースが増えて管理上の要求にも応じ易くなるため。また、ネットワークに余計な負荷をかけないメリットもある。
OSIプロトコルはCMIP【Common Management Information Protocol】とCMIS【Common Management Information System】を指す。SNMPはUDPサービスを利用するが、OSIプロトコルはコネクション型システムに依存する。また、SNMPはポーリングによって機器の状況を知るが、OSIプロトコルでは報告機構に依存し、装置から管理ステーションへ定期的に情報が送信される。
マネージャからマネージャへの通信をサポートし、GETNEXTの代わりとしてGETBULKを導入している。
SNMP v2cは論争の多かったSNMP v2の新しいセキュリティモデルを採用する代わりに、SNMP v1のコミュニティを改善している。
SNMP v2uはSNMP v2の複雑さを最低限にするために、セキュリティ機能を簡素化している。SNMP v3 のセキュリティの枠組みとして採用されている。
IETF はSNMP v3の登場によって旧式のSNMPが不要になると考えている。
データタイプ | 説明 |
---|---|
Counter | 負ではない整数で最大値は232-1。この値を使い切るとカウンタは0に復帰する。 |
Display String | Telnetで使える文字に制限されたオクテット列。 |
Gauge | 最大値を維持する負ではない整数。最大値は232-1。 |
Integer | 整数値。 |
IP Address | 4オクテットの列で表した32bitIP Address。 |
List | 他のデータタイプを順に並べたもの。 |
Network Address | プロトコルファミリーの1つでのアドレス。 |
Null | Nullオクテット列。 |
Object Identifier | 数値の列として表されるOID。 |
Octet String | コミュニティ列等0〜255までの任意の値。 |
Opaque | 任意のデータをオクテット列として渡す。 |
Physical Address | 装置の物理アドレスをオクテット列として表す。 |
Table | リストを並べたもの。 |
Time Ticks | 任意の時刻を起点に1/100sec単位で経過時間を示すカウンタ。 |
状態 | 意味 |
---|---|
Read-Only | 使用するアクセスモードとは関係なくオブジェクトの読み出しのみ可能。 |
Read-Write | 使用するアクセスモードに応じてオブジェクトの読み出しと書き込みが可能。 |
Write-Only | アクセスモードが適切であればオブジェクトの書き込みのみ可能。 |
Not-Accessible | 使用するアクセスモードとは関係なくオブジェクトは利用できない。 |
格 | 意味 |
---|---|
Mandatory | 該当する場合は必ず実装しなければならない。 |
Optional | 実装はベンダーの自由。 |
Obsolete | 時代遅れとなり、別のオブジェクトに置き換えられている。 |
広告