SNMP (Simple Network Management Protocol) は、ネットワーク上の機器を監視・制御するための通信プロトコルです。主にスイッチやルーター、サーバー、ファイアウォールなどのハードウェアを対象にします。
参考 通信プロトコルとは?
SNMPをうまく活用することで、ネットワーク機器に発生した障害を素早く検知したり、ネットワーク上のトラフィック量を把握したりすることが可能になります。
このページでは、ネットワーク初心者向けにSNMPの基本を1からわかりやすく解説します。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい基本知識の1つ。是非最後までご覧ください。
SNMPとは?わかりやすく
SNMPはSimple Network Management Protocolの略で、その名の通りネットワーク上の機器を監視・制御するためのプロトコルです。
ルーターやサーバ、スイッチ、プリンタなどのネットワーク機器に障害が発生した場合、SNMPを利用して監視を行っていれば即座に障害を検知することを可能にするためのプロトコルがSNMPです。
もしSNMPがないと、ネットワーク上で発生した障害をすぐに検知することができず、迅速な障害復旧が困難となってしまいます。
SNMP誕生前のネットワーク管理は運用担当者の経験やスキル、自前で作成した資料等を用いての人力管理が基本でした。当時はそこまでネットワーク機器の量も多くなく、人力で管理することが可能な量だったのですが、徐々にネットワークの複雑化・大規模化が進むにつれ人力で管理が不可能に。そこで誕生したのがSNMPというわけです。
SNMPの必要性と利用シーン
簡単に言うと、SNMPは多くの機器を「疲れずに、効率よく、安全に」管理するための便利なツールだと言えます。わかりやすく言えば、1人で何軒もの家を管理する管理人がいるようなものです。
なぜSNMPが必要になるのか?をわかりやすく整理しておきます。
ポイント SNMPの必要性
- 目の届く範囲を広げる
- 毎日、自分のコンピュータの状態をチェックするのは簡単ですが、たくさんの機器がある場合はどうでしょうか?SNMPを使うことで、1つ1つ「手動で」チェックする必要がなく、遠くの機器も簡単に確認することが可能になります。
- 速報性
- 何か問題が起きたとき、SNMPはその異常をすぐに知らせてくれるので、早急な対応が可能です。例えば、インターネットが遅くなったとき、何が原因なのかすぐに分かるようになります。
- まとめて管理
- 複数の機器を一箇所から管理できるので、設定変更やアップデートがスムーズに行えます。
- 安全対策
- 知らないうちに起きている不正アクセスやセキュリティリスクも早めに発見できます。
SNMPはオフィスのネットワークや学校・図書館、自宅のスマート家電管理などでも利用されます。
社内のWi-Fiやプリンター、コンピュータを一括で監視し、トラブルを早めに解決したり、家の中にあるスマートテレビやエアコン、照明なども管理することが可能になります。
実は、知らず知らずのうちにあなたも利用しているプロトコルがSNMPです。
SNMP:マネージャ/エージェントモデル
SNMPはSNMPマネージャとSNMPエージェントの2つで構成されるモデルを採用しています。
このモデルは、SNMPのコア部分とも言える仕組みで、大まかに「マネージャー」(管理者)と「エージェント」(管理対象)の2つのコンポーネントから成り立つということを表しています。
- マネージャー
- マネージャーは一般にサーバー/管理人。ネットワーク上の各エージェント(デバイス)から情報を収集したり、設定を行ったりすることが可能。
- エージェント
- エージェントは管理される側。ルーター、スイッチ、サーバー、プリンターなどがこれに該当。各デバイスに搭載されたSNMPエージェントが、マネージャーからの問い合わせに応じて情報を提供。
SNMPマネージャ
SNMPマネージャは、SNMPエージェント(=ネットワーク機器)に対して情報を要求したり、稼働状況を監視したりする役割を担います。
SNMPマネージャとして有名なソフトウェアがZabbixです。他にもOpManagerなど複数のSNMPマネージャソフトウェアが存在します。
SNMPマネージャは、WindowsサーバやLinuxサーバにインストールして利用します。
ソフトウェア名 | ライセンス | 特徴 | 特徴 |
---|---|---|---|
SolarWinds | 商用 | 豊富な機能と高度なカスタマイズが可能 | インターフェースが直感的で、多くのチュートリアルがある |
Nagios | オープンソース/商用 | 監視対象や通知オプションが非常に多い | 大量の文書とコミュニティサポートが存在する |
Zabbix | オープンソース | 高い拡張性と多機能性 | ユーザーフレンドリーなダッシュボードと多言語対応 |
PRTG | 商用 | シンプルで使いやすい | インストールが簡単で、無料トライアル版が利用可能 |
Observium | オープンソース/商用 | 自動ディスカバリ機能が強力 | 無料版でも十分な機能があり、導入が容易 |
ManageEngine OpManager | 商用 | 豊富なレポーティング機能 | 無料トライアルと簡単なセットアップ |
SNMPエージェント
SNMPエージェントはルーターやスイッチなど、監視される機器上で動作し機器の状態をSNMPマネージャに通知したりする役割を担います。
エージェント側では、多くのネットワークデバイス(ルーター、スイッチなど)にはすでにSNMPエージェントが組み込まれています。
ただし、一部のサーバーや特定のデバイスでは、SNMPエージェントをインストールする必要があります。一般的なOS(Windows、Linux等)であれば、SNMPエージェントは基本的に無料で提供されています。
SNMPメッセージ
SNMPマネージャとSNMPエージェントは具体的にはお互いに以下のようなメッセージをやり取りすることで、ネットワーク機器の状態を監視・制御します。
ネットワークスペシャリスト試験などの各種試験で問われることもある内容なので頭に入れておきましょう!
SNMPメッセージ | 送信側 | 説明 |
---|---|---|
Get Request | SNMPマネージャ | SNMPエージェントから得たい情報を要求 |
Get Response | SNMPエージェント | SNMPマネージャから要求された情報を返信 |
TRAP | SNMPエージェント | SNMPエージェントから自発的に送信する障害情報 |
Set Request | SNMPマネージャ | SNMPマネージャから要求された情報を返信 |
それぞれ、SNMPマネージャから送信するメッセージ/SNMPエージェントから送信するメッセージが決まっています。これらのSNMPメッセージを以下の2パターンでやり取りすることで、機器の情報を収集・監視します。
SNMP:ポーリング
ポーリングは、ネットワーク機器の状態を定期的に監視したい場合に利用します。
SNMPマネージャが定期的にSNMPエージェントに対して情報の要求を行い、それに対してSNMPエージェントが応答する仕組みです。
わかりやすくいうと、マネージャ(監視者)がエージェント(監視対象)に定期的に「今、大丈夫?」と聞いて、エージェントが「今の状態はこれです」と答える感じ。このようなやり取りを繰り返すのがポーリングです。このやり取りで、エージェントの状態が悪いと分かれば、マネージャは必要な対応をします。
- リクエスト送信
- 設定した時間間隔(例えば5分ごと)で、マネージャがエージェントに対してSNMP GETリクエストを送信。
- レスポンス受信
- エージェントは、受け取ったGETリクエストに対して必要な情報(例:CPU使用率、メモリ使用量など)をレスポンスとして返却。
SNMPマネージャからはUDPポート番号:161を利用してGet Requestが発出され、それに応答する形でSNMPエージェントはGet responseを返却します。返却時に利用されるポート番号は162が用いられます。
参考 UDPとは?
SNMP:トラップ
対してSNMPトラップとは、ネットワーク機器に障害が発生した場合など不測の事態が起きた際にSNMPエージェントからSNMPマネージャに対して自発的に通知を行う仕組みです。
例えばルーターが突如再起動したり、高負荷がかかったりした場合などに通知されます。
わかりやすく言えば、トラップはエージェント(監視対象)が何かおかしいと感じた瞬間に、自分からマネージャ(監視者)に「おかしいです!」と知らせる感じです。
- 事前設定
- まず、エージェントが何のイベントでトラップを送るか(例:CPU使用率の急激な上昇など)を設定しておく。
- イベント発生
- エージェントで設定された条件に一致するイベントが発生すると、エージェントはそれを検出。
- 通知送信
- イベントが発生したら、エージェントはSNMPトラップメッセージをマネージャに自動的に送信。
このようにポーリングとトラップというメッセージ交換を行うことでネットワーク上の機器の状態を監視・制御するためのあれこれを定めた約束事がSNMPです。
SNMPを利用するまでの手順イメージ
SNMPを使ってネットワーク機器を監視するには、監視したい機器(エージェント)と監視をする側(マネージャ)の設定が必要です。
それぞれに指示や通知の仕方を教えてあげて、ちゃんと会話できるようにするイメージです。
何を監視するか(例:エージェントの電源がONか、ネットワークが混んでいないか)を決めて、それが異常な値になったら警告を出すように設定します。
以下では、SNMPの仕組みをよりイメージしやすくするため、SNMP運用開始までの手順を明示します。
1. 要件定義と計画
ポイント1 管理対象となるデバイス(エージェント)をリストアップする
ポイント2 必要な監視項目(例: CPU使用率、ネットワークトラフィック等)を特定する。
まず初めに監視する目的と計画を明確にします。
例えば、自分の会社のコンピュータのCPUやメモリの使用状況を確認したいのか、ネットワークの使用状況などを知りたいのか。
そして、何が問題だと判断するのか(例えば、コンピュータが一定以上忙しいとか)、そのとき何をするのか(警告を出す、誰かに連絡するなど)も決めます。
2. SNMPエージェントのセットアップ
ポイント1 対象デバイス上でSNMPエージェントを有効化。
ポイント2 認証設定(Community StringやSNMPv3の認証/暗号化)を行う。
基本的には監視される側のデバイス(ルータ、スイッチ、サーバーなど)でセットアップ作業を行います。多くのネットワーク機器では、SNMPエージェント機能がプレインストールされています。
3. SNMPマネージャ(監視ツール)のセットアップ
ポイント1 SNMPマネージャソフトウェアをインストール。
ポイント2 エージェントの情報(IPアドレス、認証設定等)を登録。
SNMPマネージャのセットアップを行います。
各ソフトウェアによって設定方法や操作方法が異なります。一般的には、以下のような設定を行います。
- 監視対象デバイス:どのエージェントを監視するか
- 収集間隔:どれくらいの頻度でデータを収集するか
- アラート設定:どのような状況でアラートを出すか
SNMPのバージョン
最後にSNMPのバージョンとその違い・特徴について解説します。
SNMPには、いくつかのバージョンが存在し、それぞれが異なる機能とセキュリティのレベルを提供しています。ここでSNMPの主なバージョンとその特徴について説明します。
- SNMPv1(バージョン1)
- 最初にリリースされたバージョン。
- 基本的な機能を提供し、簡単なネットワーク管理に使用。
- セキュリティ機能が限定的で、通信内容が暗号化されていない。
- SNMPv2c(バージョン2c)
- SNMPv1の改良版。
- データ伝送の効率性とパフォーマンスが向上。
- 「コミュニティストリング」と呼ばれるシンプルな認証機構を採用。
- 依然としてセキュリティは限定的。
- SNMPv3(バージョン3)
- セキュリティと認証機能を大幅に強化。
- データの暗号化と認証機構が導入され、より安全なネットワーク管理が可能。
- 既存のSNMPv1/v2cとの互換性を保持しつつ、より厳格なセキュリティ要件に対応。
SNMPv1(Version 1)
SNMPv1は、1988年にIETF(Internet Engineering Task Force)によって標準化された最初のSNMPバージョン。このバージョンは、シンプルさと広範な互換性を重視し、基本的なネットワーク管理機能を提供します。
SNMPv1の大きな特徴は、そのシンプルな通信構造にあります。しかし、セキュリティ面では限定的で、通信内容は暗号化されていない→結果、データの機密性や完全性を保証することはできません。基本的なネットワーク監視には適していますが、セキュリティが重要な環境では適切ではないとされています。
シンプルで基本的なネットワークデバイスに適していますが、セキュリティの面での制限があるため、現在ではあまり使用されていません。
SNMPv2c(Version 2c)
SNMPv2cは、SNMPv1の改良版として1990年代中頃に登場しました。このバージョンでは、パフォーマンスが向上しデータの伝送効率が改善されました。SNMPv2cは、エラー処理機構を強化し、より豊富なデータ型をサポートすることで、より柔軟なネットワーク管理を実現。同時に「GET-BULK」という新しいコマンドが導入され、大量のデータを一度に取得できるようになりました。
セキュリティ面では「コミュニティベースの認証」を採用しており、これはコミュニティストリングと呼ばれるテキストベースの認証キーを使用する方式です。しかし、この認証方式は簡易的なものであり、通信内容の暗号化は提供されていません。そのため、セキュリティが重視される環境では、依然として不十分とされています。
SNMPv1よりも機能が向上していますが、セキュリティ面での弱点は依然として残っています。多くのネットワークでは、このバージョンがまだ広く使用されています。
SNMPv3(Version 3)
SNMPv3は、2000年代初頭に導入されたSNMPの最新バージョンです。このバージョンの最大の特徴は、セキュリティ面での大幅な強化です。SNMPv3では、データの暗号化と認証機能が実装されており、ネットワーク管理におけるセキュリティ要件を大きく満たしています。認証にはMD5やSHAなどのハッシュ関数が使用され、データの完全性と信頼性を保証します。また、暗号化にはDESやAESなどの強力な暗号化アルゴリズムが用いられ、通信内容を保護。
SNMPv3は、セキュリティポリシーに応じて柔軟に構成することが可能で、これによりユーザーベースのセキュリティモデル(USM)やビューベースのアクセス制御モデル(VACM)など、さまざまなセキュリティニーズに対応することができるようになりました。セキュリティが最優先される現代のネットワーク環境において、SNMPv3は最も推奨されるバージョンとなっています。
ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)
↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。
読者特典> 0から学ぶネットワーク入門