Skip to content
Published on

[コンピュータネットワーク] 20. ネットワーク管理とSNMP

Authors

ネットワーク管理と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大管理領域
SNMPUDPベースのネットワーク管理プロトコル(ポート161/162)
MIB管理オブジェクト情報の格納庫、OIDで識別
OID階層的ツリー構造のオブジェクト識別子
SMIMIBオブジェクト定義のルールと構造
ASN.1データ構造の表記法、BERでエンコード
SNMPv3USM(認証/暗号化)+ 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