- Authors

- Name
- Youngju Kim
- @fjvbn20031
ネットワーク管理とSNMP
大規模ネットワークを安定的に運営するには、体系的なネットワーク管理が不可欠です。数千台のルータ、スイッチ、サーバが接続されたネットワークで障害を検知し、性能をモニタリングし、構成を管理するのは非常に複雑な作業です。
この記事では、ネットワーク管理の概要、管理インフラの構成要素、SNMP(Simple Network Management Protocol)の動作原理、そしてMIBとASN.1表現方式を見ていきます。
1. ネットワーク管理の概要
1.1 ネットワーク管理とは
ネットワーク管理とは、合理的なコストでリアルタイムのネットワークサービス要件を満たすために、ネットワークとその構成要素のハードウェア、ソフトウェア、人的リソースをモニタリング、テスト、ポーリング、構成、分析、評価、制御する活動です。
1.2 ネットワーク管理の5大領域
ネットワーク管理の5大領域(ISO FCAPSモデル)
===============================================
1. 障害管理(Fault Management)
- ネットワーク障害の検知、記録、通知
- 障害原因の分析と回復
- 例:リンクダウン、機器故障の検知
2. 構成管理(Configuration Management)
- ネットワーク機器の設定管理
- 構成変更の追跡と監査
- 例:ルータインタフェース設定、VLAN構成
3. 会計管理(Accounting Management)
- ネットワークリソースの使用量測定と記録
- 課金情報の収集
- 例:ユーザーごとの帯域幅使用量、トラフィック統計
4. 性能管理(Performance Management)
- ネットワーク性能のモニタリングと最適化
- トラフィックパターン分析、ボトルネック検出
- 例:リンク使用率、遅延、パケット損失率
5. セキュリティ管理(Security Management)
- ネットワークアクセス制御とセキュリティポリシー管理
- セキュリティイベントのモニタリング
- 例:認証、権限管理、監査ログ
2. ネットワーク管理インフラ
2.1 主要構成要素
ネットワーク管理インフラ
==========================
+-------------------------------------------+
| 管理サーバ(NMS) |
| [管理アプリケーション] |
| [MIBデータベース] |
| [SNMPマネージャ] |
+-------------------------------------------+
| | |
SNMP SNMP SNMP
| | |
+--------+--+ +--------+--+ +--------+--+
| ルータ | | スイッチ | | サーバ |
| [エージェント]| | [エージェント]| | [エージェント]|
| [MIB] | | [MIB] | | [MIB] |
+------------+ +------------+ +------------+
管理対象デバイス(Managed Devices)
構成要素:
1. 管理エンティティ(Managing Entity / NMS)
- ネットワーク管理アプリケーションを実行
- 管理対象デバイスの情報収集と制御
2. 管理対象デバイス(Managed Device)
- ルータ、スイッチ、サーバ、プリンタなど
- エージェントソフトウェアを実行
3. エージェント(Agent)
- 管理対象デバイスで実行されるプロセス
- デバイスの状態情報を収集してMIBに格納
- NMSのリクエストに応答
4. MIB(Management Information Base)
- 管理対象オブジェクトの情報を格納するデータベース
- 各オブジェクトに固有のOIDを付与
5. ネットワーク管理プロトコル
- NMSとエージェント間の通信プロトコル
- SNMPが事実上の標準
3. SNMP(Simple Network Management Protocol)
3.1 SNMPの役割
SNMPは管理サーバ(NMS)と管理対象デバイスのエージェント間で管理情報を交換するアプリケーション層プロトコルです。
SNMP動作方式
==============
1. リクエスト-レスポンス(Request-Response)
NMS --> [GetRequest] --> エージェント
NMS <-- [Response] <-- エージェント
2. トラップ(Trap)
NMS <-- [Trap] <-- エージェント
(非同期、エージェントが自発的に通知)
転送プロトコル:UDP
- GetRequest/SetRequest:UDPポート161
- Trap:UDPポート162
理由:ネットワーク障害時にも動作する必要があるため
TCP接続設定のオーバーヘッドを回避
3.2 SNMP PDU(Protocol Data Unit)
SNMPメッセージタイプ
======================
メッセージタイプ | 方向 | 説明
-------------------+-----------------+----------------------------------
GetRequest | NMS -> Agent | 1つ以上のMIBオブジェクト値を要求
GetNextRequest | NMS -> Agent | MIBツリーで次のオブジェクト値を要求
GetBulkRequest | NMS -> Agent | 大量のMIBオブジェクト値を一度に要求(v2)
SetRequest | NMS -> Agent | MIBオブジェクト値の設定(構成変更)
Response | Agent -> NMS | リクエストへの応答(値を含む)
Trap | Agent -> NMS | 非同期イベント通知(リクエストなし)
InformRequest | NMS -> NMS | 管理サーバ間の情報転送(v2)
3.3 SNMP動作例
SNMP動作シナリオ
==================
シナリオ1:インタフェース状態照会
NMS:「ルータR1のeth0の状態を教えてください」
--> GetRequest(OID:1.3.6.1.2.1.2.2.1.8.1)
Agent:「eth0はup状態です」
<-- Response(値:1 = up)
シナリオ2:MIBテーブルの走査
NMS:「最初のインタフェース情報」
--> GetNextRequest(OID:1.3.6.1.2.1.2.2.1)
Agent:「ifIndex.1 = 1」
<-- Response
NMS:「次の情報」
--> GetNextRequest(OID:1.3.6.1.2.1.2.2.1.1.1)
Agent:「ifDescr.1 = eth0」
<-- Response
シナリオ3:障害通知(Trap)
Agent:「リンクeth0がダウンしました!」
--> Trap(linkDown、ifIndex=1)
NMS:通知を受信し管理者に通報
4. SMI(Structure of Management Information)
4.1 SMIの役割
SMIはMIBオブジェクトを定義するルールと構造を提供します。MIBオブジェクトの名前、データ型、エンコーディング方法を規定します。
SMIが定義するもの
====================
1. オブジェクト名:OID(Object Identifier)
- 階層的ツリー構造
- ドットで区切られた数値列
- 例:1.3.6.1.2.1.1.1 = sysDescr
2. データ型:ASN.1基本型
- INTEGER
- OCTET STRING
- Counter32
- Gauge32
- TimeTicks
- IpAddress
3. エンコーディング:BER(Basic Encoding Rules)
- TLV(Type-Length-Value)形式
- ネットワーク転送のためのバイトエンコーディング
4.2 OIDツリー構造
OID(Object Identifier)ツリー
=================================
root
/ | \
iso(1) ...
|
org(3)
|
dod(6)
|
internet(1)
/ | \
mgmt(2) private(4) ...
| |
mib-2(1) enterprises(1)
/ | \ |
system interfaces ip ...
(1) (2) (4)
| |
sysDescr ifNumber
(1.1) (2.1)
完全なOIDの例:
sysDescr = 1.3.6.1.2.1.1.1
iso.org.dod.internet.mgmt.mib-2.system.sysDescr
ifNumber = 1.3.6.1.2.1.2.1
iso.org.dod.internet.mgmt.mib-2.interfaces.ifNumber
5. MIB(Management Information Base)
5.1 MIB-2の主要グループ
MIB-2オブジェクトグループ
===========================
グループ | OID | 説明
----------------+-------------------+---------------------------
system (1) | 1.3.6.1.2.1.1 | システム基本情報
interfaces (2) | 1.3.6.1.2.1.2 | ネットワークインタフェース
at (3) | 1.3.6.1.2.1.3 | アドレス変換(ARP)
ip (4) | 1.3.6.1.2.1.4 | IPプロトコル統計
icmp (5) | 1.3.6.1.2.1.5 | ICMP統計
tcp (6) | 1.3.6.1.2.1.6 | TCP統計
udp (7) | 1.3.6.1.2.1.7 | UDP統計
snmp (11) | 1.3.6.1.2.1.11 | SNMP自体の統計
5.2 MIBオブジェクトの例
systemグループオブジェクト
============================
OID | 名前 | 型 | 説明
-----------------------+--------------+-------------+-------------
1.3.6.1.2.1.1.1 | sysDescr | OCTET STRING| システム説明
1.3.6.1.2.1.1.2 | sysObjectID | OID | ベンダ識別
1.3.6.1.2.1.1.3 | sysUpTime | TimeTicks | 稼働時間
1.3.6.1.2.1.1.4 | sysContact | OCTET STRING| 管理者連絡先
1.3.6.1.2.1.1.5 | sysName | OCTET STRING| デバイス名
1.3.6.1.2.1.1.6 | sysLocation | OCTET STRING| デバイス設置場所
interfacesグループ(ifTable):
OID | 名前 | 説明
-----------------------+--------------+------------------
1.3.6.1.2.1.2.2.1.1 | ifIndex | インタフェース番号
1.3.6.1.2.1.2.2.1.2 | ifDescr | インタフェース説明
1.3.6.1.2.1.2.2.1.5 | ifSpeed | インタフェース速度
1.3.6.1.2.1.2.2.1.8 | ifOperStatus | 動作状態(1=up)
1.3.6.1.2.1.2.2.1.10 | ifInOctets | 受信バイト数
1.3.6.1.2.1.2.2.1.16 | ifOutOctets | 送信バイト数
6. ASN.1(Abstract Syntax Notation One)
6.1 ASN.1の役割
ASN.1はネットワーク管理データの構造を定義するための標準表記法です。MIBオブジェクトの形式的定義に使用されます。
ASN.1 MIBオブジェクト定義の例
================================
sysDescr OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..255))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A textual description of the entity."
::= { system 1 }
ifOperStatus OBJECT-TYPE
SYNTAX INTEGER {
up(1),
down(2),
testing(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The current operational state of the interface."
::= { ifEntry 8 }
6.2 BERエンコーディング
BER(Basic Encoding Rules)TLV形式
======================================
各データ要素をTag-Length-Valueでエンコード
+------+--------+-------+
| Tag | Length | Value |
+------+--------+-------+
例:INTEGER値5をエンコード
Tag: 02(INTEGERタイプ)
Length: 01(1バイト)
Value: 05
エンコード結果:02 01 05
例:OCTET STRING "Hi"をエンコード
Tag: 04(OCTET STRINGタイプ)
Length: 02(2バイト)
Value: 48 69("Hi"のASCII)
エンコード結果:04 02 48 69
7. SNMPバージョンの発展
7.1 SNMPv1、v2c、v3の比較
SNMPバージョン比較
====================
項目 | SNMPv1 | SNMPv2c | SNMPv3
--------------+---------------+---------------+--------------
発表 | 1988 | 1996 | 2004
セキュリティ | コミュニティ文字列| コミュニティ文字列| USM(認証+暗号化)
認証 | 平文転送 | 平文転送 | HMAC-MD5/SHA
暗号化 | なし | なし | DES/AES
アクセス制御 | 基本的 | 基本的 | VACM(詳細)
バルク転送 | なし | GetBulk | GetBulk
7.2 SNMPv3セキュリティモデル
SNMPv3セキュリティアーキテクチャ
==================================
USM(User-based Security Model):
認証レベル3種類:
1. noAuthNoPriv:認証なし、暗号化なし
- ユーザー名のみでアクセス
- セキュリティが不要な環境
2. authNoPriv:認証あり、暗号化なし
- HMAC-MD5またはHMAC-SHAでメッセージ認証
- 改ざん防止、盗聴可能
3. authPriv:認証あり、暗号化あり
- 認証:HMAC-MD5/SHA
- 暗号化:DESまたはAES
- 盗聴と改ざんの両方を防止
VACM(View-based Access Control Model):
- ユーザーごとにアクセス可能なMIBビューを定義
- 読み取り専用、読み取り-書き込みなど詳細なアクセス制御
- セキュリティレベルに応じて異なるビューを割り当て可能
8. 現代のネットワーク管理ツール
SNMPを超えた現代のネットワーク管理
=====================================
ツール/技術 | 用途 | 特徴
----------------+--------------------+----------------------------
SNMP | デバイスモニタリング | 標準、軽量、レガシー技術
NetFlow/sFlow | トラフィック分析 | フローベースの詳細分析
YANG/NETCONF | 構成管理 | XMLベース、トランザクションサポート
gNMI/gRPC | テレメトリ | ストリーミング、高性能
Prometheus | メトリック収集 | プル方式、時系列DB
Grafana | 可視化 | ダッシュボード、アラート
Ansible | 自動化構成管理 | エージェントレス、冪等性
Terraform | Infrastructure as Code | IaC、宣言的構成
発展方向:
1. SNMP:基本的なデバイスモニタリングに依然として使用
2. NETCONF/YANG:SNMPの構成管理の限界を克服
3. ストリーミングテレメトリ:リアルタイムデータ収集
4. SDN:中央化されたネットワーク管理と制御
9. ネットワーク管理の実践例
SNMPコマンドの例(snmpwalk、snmpget)
=========================================
システム情報照会:
snmpget -v2c -c public 192.168.1.1 sysDescr.0
応答:"Cisco IOS Software, Version 15.1"
snmpget -v2c -c public 192.168.1.1 sysUpTime.0
応答:12345678(1/100秒単位 = 約1.4日)
インタフェース状態照会:
snmpwalk -v2c -c public 192.168.1.1 ifOperStatus
応答:
ifOperStatus.1 = up(1)
ifOperStatus.2 = down(2)
ifOperStatus.3 = up(1)
トラフィック統計照会:
snmpget -v2c -c public 192.168.1.1 ifInOctets.1
応答:1234567890(受信バイト数)
snmpget -v2c -c public 192.168.1.1 ifOutOctets.1
応答:987654321(送信バイト数)
10. まとめ
| 概念 | 核心内容 |
|---|---|
| FCAPS | 障害、構成、会計、性能、セキュリティの5大管理領域 |
| SNMP | UDPベースのネットワーク管理プロトコル(ポート161/162) |
| MIB | 管理オブジェクト情報の格納庫、OIDで識別 |
| OID | 階層的ツリー構造のオブジェクト識別子 |
| SMI | MIBオブジェクト定義のルールと構造 |
| ASN.1 | データ構造の表記法、BERでエンコード |
| SNMPv3 | USM(認証/暗号化)+ VACM(アクセス制御)セキュリティ |
| Trap | エージェントがNMSに非同期イベントを通知 |
この記事でコンピュータネットワークシリーズを締めくくります。アプリケーション層から物理層まで、インターネットのプロトコルスタック全体を見てきました。ネットワークの各層がどのような問題を解決し、どのように互いに協力するかを理解することが重要です。
参考資料
- James F. Kurose, Keith W. Ross, "Computer Networking: A Top-Down Approach", 6th Edition, Chapter 9
- RFC 3411 - Architecture for SNMP Management Frameworks
- RFC 3414 - User-based Security Model (USM) for SNMPv3
- RFC 3415 - View-based Access Control Model (VACM) for SNMP