SNMP(Simple Network Management Protocol)
概要
SNMP は、ネットワークデバイス(ルータ、スイッチ、サーバーなど)の監視と管理を行うためのプロトコルです。これにより、ネットワークのパフォーマンスを監視し、問題を診断し、ネットワークの設定変更を行うことができます。
使用するポート
- ポート 161: SNMP マネージャが SNMP エージェントに対してリクエスト(GetRequest, SetRequest 等)を送信するために使用します。
- ポート 162: SNMP エージェントが SNMP マネージャにトラップ(非同期通知)を送信するために使用します。
機能
- データ収集: ネットワークデバイスからの情報収集。
- 構成管理: デバイスの設定変更。
- フォールト管理: エラーや障害の検出と報告。
- パフォーマンス管理: ネットワークの効率と最適化の監視。
- セキュリティ管理: アクセス制御と活動の監視。
バージョン
- SNMPv1: 最初のバージョンで、基本的な機能を提供しますが、セキュリティは限定的です。
- SNMPv2: パフォーマンスとセキュリティの改善、追加機能(例:バルク転送)を提供します。
- SNMPv3: 強化されたセキュリティ機能(認証と暗号化)を提供し、より柔軟な管理機能を備えています。
コンポーネント
- SNMP マネージャ: ネットワーク管理システム(NMS)で、監視と管理の中心点です。
- SNMP エージェント: ネットワークデバイスに組み込まれ、情報を収集しマネージャに報告します。
- MIB(Management Information Base): デバイスやネットワーク要素の情報を構造化するためのデータベース。
通信方式
SNMP は主に UDP を使用し、データの交換を行います。標準ポートは、マネージャからエージェントへのリクエスト用に 161、エージェントからマネージャへの非同期通知(トラップ)用に 162 を使用します。
コミュニティベースの認証方式
コミュニティベースの認証方式では、コミュニティストリングがキーとして機能し、SNMP エージェントと SNMP マネージャ間のメッセージが許可されるかどうかを決定します。
MIB(Management Information Base)
MIB は、管理対象のネットワークデバイスやシステム上のオブジェクト(情報の集合)を階層的に構造化したデータベースです。各オブジェクトは一意の識別子(OID: Object Identifier)によって識別され、デバイスの状態、性能、設定などの情報を提供します。MIB は、SNMP マネージャがデバイスの特定の情報を照会したり、デバイスの設定を変更する際の基盤となります。
主な MIB セクション
- system(1): デバイスの識別情報、稼働時間、連絡先などの基本情報。
- interfaces(2): ネットワークインターフェース(物理的および論理的)の状態と構成。
- ip(4), icmp(5), tcp(6), udp(7): IP、ICMP、TCP、UDP プロトコルに関する統計と設定。
- vendor-specific MIB modules: デバイスメーカー固有の情報や機能を提供するセクション。
MIB を通じて、ネットワーク管理者はデバイスの状態を監視し、パフォーマンスを評価し、設定変更を行うことができます。
[iso(1)]
└── [org(3)]
└── [dod(6)]
└── [internet(1)]
├── [directory(1)]
├── [mgmt(2)]
│ └── [mib-2(1)]
│ ├── [system(1)]
│ ├── [interfaces(2)]
│ ├── [at(3)]
│ ├── [ip(4)]
│ ├── [icmp(5)]
│ ├── [tcp(6)]
│ ├── [udp(7)]
│ └── [...]
└── [private(4)]
└── [enterprises(1)]
└── [vendor-specific MIB modules]
シーケンス図
######## 簡易版
sequenceDiagram
participant Manager as SNMP Manager
participant Agent as SNMP Agent
Manager->>Agent: GetRequest
Note over Manager,Agent: SNMP Manager requests data from Agent
Agent-->>Manager: Response
Note over Manager,Agent: SNMP Agent sends requested data back
######## ちょっと詳しく版
sequenceDiagram
participant Manager as SNMP Manager
participant Agent1 as SNMP Agent 1
participant Agent2 as SNMP Agent 2
Manager->>Agent1: GetRequest (Device Status)
Note over Manager,Agent1: SNMP Manager requests status from Agent 1
Agent1-->>Manager: Response (Device Status)
Note over Manager,Agent1: Agent 1 sends status back to Manager
Manager->>Agent2: GetRequest (Traffic Load)
Note over Manager,Agent2: SNMP Manager requests traffic load from Agent 2
Agent2-->>Manager: Response (Traffic Load)
Note over Manager,Agent2: Agent 2 sends traffic load back to Manager
Note over Agent1,Agent2: Time passes, an event occurs at Agent 1
Agent1->>Manager: Trap (Error Detected)
Note over Manager,Agent1: Agent 1 sends unsolicited Trap message to Manager
Manager->>Agent1: Trap (Error Detected)
Note over Manager,Agent1: SNMP Manager receives Trap from Agent 1
[SNMPマネージャ] [L2スイッチ] [L3スイッチ]
| | |
| GetRequest (ステータス情報) | |
|---------------------------->| |
| | |
| Response (情報) | |
|<---------------------------| |
| | |
| | GetRequest (ステータス情報) |
|------------------------------------------------------->|
| | |
| | Response (情報) |
|<-------------------------------------------------------|
| | |
| SetRequest (設定変更) | |
|------------------------------------------------------->|
| | |
| | Response (確認) |
|<-------------------------------------------------------|
| | |
| | Trap (エラー検出) |
|<----------------------------| |