Forrester Total Economic Impact™の調査によると、Edwin AIは複合組織において313%の投資対効果(ROI)を実現したことが判明しました。

続きを読む

SNMPとは?ネットワークパフォーマンスをリアルタイムで把握する(2026年)

SNMP(Simple Network Management Protocol)は、ルーター、サーバー、UPSシステムなどのネットワーク機器を監視するための標準的な方法です。このガイドでは、SNMPの仕組み、主要コンポーネント、バージョン間の違い、セキュリティのベストプラクティス、そして大規模な監視に効果的に使用する方法について説明します。
所要時間
2026 年 5 月 1 日
ニュースレター

最新情報のメール配信を登録

最新のブログ、ホワイトペーパー、電子ガイドなどを直接受信ボックスにお届けします。

シェア
この記事で

クイックダウンロード

SNMPはネットワークインフラストラクチャを監視するための汎用プロトコルですが、その真価は、どのバージョンを使用するか、どのようにセキュリティ対策を講じるか、そして監視ツールがOID処理をどれだけ適切に行えるかによって決まります。

  • お使いの機器がSNMPv3をサポートしている場合は、必ずSNMPv3を使用してください。v2cは信頼できる内部ネットワークで使用可能であり、v1はより新しい規格に対応していない旧式の機器でのみ使用してください。

  • SNMPの導入を安全に行うには、デフォルトのコミュニティ文字列を変更し、SNMPへのアクセスを特定の監視サーバーに限定し、SNMPがパブリックインターネットからアクセスできないようにしてください。

  • ポーリングを主要なデータソースとして使用し、トラップをバックアップ信号として使用してください。ポーリングはスケジュールに基づいて実行され、傾向履歴を構築します。トラップは変化があった場合に即座に作動しますが、パケットが1つでも失われるとアラートを見逃すことになります。

  • LogicMonitorのような監視ツールを使用しましょう。このツールは、適切なOIDを自動的に検出し、SNMPデータを正しく解釈し、生のデバイスメトリクスをチームが対応できるアラートやダッシュボードに変換します。 

SNMP(Simple Network Management Protocol)は、ITチームがネットワーク機器を監視および管理するために使用する標準プロトコルです。 

中央システム(マネージャー)は、CPU負荷、メモリ使用量、インターフェーストラフィックなどのデータをデバイス(エージェント)に要求し、デバイスはMIBと呼ばれるローカルデータベースから取得した構造化された値で応答します。 

クエリにはUDPポート161、アラートには162を使用し、ほぼすべてのルーター、スイッチ、サーバー、UPS、ストレージアレイで動作します。バージョンは3種類(v1、v2c、v3)あり、適切な暗号化と認証機能を提供するのはv3のみです。

このガイドでは、SNMPがエンドツーエンドでどのように動作するのか、各コンポーネントの役割、どのバージョンを選択すべきか、設定とセキュリティ対策の方法、トラブルシューティングの方法、そしてSNMPの欠点について詳しく解説します。

SNMP とは何ですか?

SNMPは、監視システム(SNMPマネージャ)が共有メッセージ形式を使用してネットワークデバイスからヘルスおよびパフォーマンスデータを収集できるようにする標準プロトコルです。異なるオペレーティングシステム( Cisco スイッチLinuxサーバーやAPC製UPSなど、あらゆるデバイスが同じプロトコルを使用してSNMPクエリに応答しますが、公開される具体的なデータはデバイスによって異なります。1つのツールで環境全体を監視できます。

その名称は誤解を招く可能性があります。SNMPは必ずしも使いやすいとは限りません。ネットワーク機器以外にも多くの用途があり、実際の導入環境では、アクティブな管理よりも監視目的で利用されることがほとんどです。 

SNMPは主に、CPU負荷、メモリ使用量、インターフェーストラフィック、温度、ファン状態、UPSのバッテリー駆動時間、ストレージアレイのドライブ状態など、デバイスに関するデータを収集するために使用します。ほぼすべてのネットワーク機器がSNMPをサポートしています。また、ほとんどのサーバーオペレーティングシステム、多くのストレージデバイス、および一部のアプリケーションソフトウェアもSNMPをサポートしています。

SNMPが重要な理由

SNMPが重要なのは、低コストで広くサポートされている方法であり、ユーザーが確認する前にインフラストラクチャが正常に動作しているかどうかを知ることができるからです。 

それがなければ、誰かがダッシュボードやその他の監視ツールを監視したり、苦情を待ったりしなければなりません。しかし、それがあれば、1つのシステムで数千台のデバイスを監視し、問題が発生した場合に自動的にアラートを発信できます。

SNMPコンポーネント:マネージャ、エージェント、MIB、およびOID

SNMPには4つの主要コンポーネントがあります。

  1. マネージャーはデータを要求するとアラートを受け取る。
  2. エージェントは応答し、アラートを送信することもできます。
  3. MIBは、各デバイスに存在するデータを定義します。
  4. OIDはMIB内の単一データポイントの一意のアドレスです。

これらの部品がどのように組み合わさるか

マネージャーは、UDPポート161(デフォルト)でエージェントに問い合わせを行います。エージェントは、ローカルMIBで要求されたOIDを検索し、その値を返します。また、同じエージェントは、しきい値を超えた場合や状態が変化した場合、UDPポート162でマネージャーに未承諾のアラート(トラップ)を送信することもできます。

マネージャー(ネットワーク管理ステーション)

マネージャーとは、SNMPクエリを送信し、アラート(トラップ/インフォーム)を受信するシステムのことです。これは、コマンドラインからsnmpwalkを実行する単一のLinuxマシン、あるいは次のようなシンプルなツールでも構いません。 ゴールドさん、こんにちはまたはフルプラットフォーム LogicMonitorそこでは、当社のコレクターがクエリを発行し、当社のSaaSバックエンドがデータを保存、分析、およびアラートします。 

SNMPクエリを開始するものはすべてマネージャーとして扱われます。1台のデバイスでマネージャーとエージェントの両方を実行できます。

エージェント

エージェントとは、監視対象デバイス上で動作するソフトウェアであり、2つの役割を果たします。1つはマネージャーからのクエリに応答すること、もう1つは設定されたイベントが発生した際にアラート(トラップまたは通知)を送信することです。 

ルーター、スイッチ、ファイアウォールでは、エージェントはファームウェアに組み込まれています。汎用サーバーでは(Linux, Windows, ソラリス、AIX、 FreeBSDの) いずれかをインストールします。Linux では、標準的な選択肢は net-snmp で、これは snmpd デーモンとして実行されます。

MIB(経営情報ベース)

MIBは、プレーンテキストファイルで定義された構造化データベースであり、デバイスが報告できるすべてのデータをツリー構造で記述します。 

標準MIBは、インターフェースカウンタ、システム名、稼働時間など、すべてのデバイスが公開すべき情報を網羅しています。ベンダーMIBは、APC製UPSの残り稼働時間やCisco製ラインカードの温度など、デバイス固有のデータを網羅しています。 

デバイスは、ベンダーが定義するMIBを実装することによってデータを公開する。

OID(オブジェクト識別子)

OIDとは、MIBツリー内の管理対象オブジェクトの数値アドレスです。OID内の各数値はノード名を表し、ドットで区切られた完全なパスは、エージェントが返すことができる値を正確に1つ識別します。

1.3.6.1.2.1.1.1.0 を例にとってみましょう。 

それは常に、システムのテキストによる説明である sysDescr を意味します。一般的に、扱う OID は、標準 MIB-2 オブジェクトの場合は .1.3.6.1.2.1 で始まり、プライベート ベンダー OID の場合は .1.3.6.1.4.1 で始まります。

Ciscoは.1.3.6.1.4.1.9を所有しているため、Cisco固有のオブジェクトはすべてそのブランチに紐づいています。IANAは、ベンダープレフィックスの完全なレジストリをiana.org/assignments/enterprise-numbersで管理しています。

スカラーOIDと表形式OIDの比較

OIDには2つの形状があります。

  1. スカラーOIDは、値が1つしかないため、単一の値を返します。sysDescrは、デバイスには1つの説明しかないため、スカラーです。 
  2. 表形式のOIDはテーブルから値を返します。各OIDは列を表し、インデックスは行を識別します。 

インターフェースは表形式です。ルータには多数のインターフェースがあり、それぞれに説明、オクテットカウンタ、エラーカウントがあります。表形式のOIDは、行を識別するインデックスで終わります。たとえば、インターフェースインデックス3のインオクテットカウンタの場合は、.1.3.6.1.2.1.2.2.1.10.3となります。

snmpwalk を使用した簡単な例を以下に示します。

$ snmpwalk -v2c -c Secret 127.0.0.1 .1.3.6.1.2.1.1.1.0

SNMPv2-MIB::sysDescr.0 = STRING: Linux demo1.logicmonitor.net 2.6.32-358.6.2.el6 x86_64

Ciscoスイッチに対して同じクエリを実行すると、Linuxカーネル文字列ではなくIOSバージョン文字列が返されます。同じOIDでも、エージェントが異なれば、適切な応答が得られます。

SNMPの仕組み:エンドツーエンドの流れ

SNMPは4つのステップで動作します。 

  1. マネージャーがリクエストを送信します
  2. エージェントはMIBを読み取ります
  3. エージェントは値で応答します
  4. エージェントは、何らかの変化があった際に、意図しない罠を仕掛ける(オプション)

すべては主にUDP上で動作します。

ステップバイステップ

1. リクエスト: マネージャーは、UDPポート161でエージェントにGET、GETNEXT、またはGETBULKを送信し、必要なOIDを指定し、コミュニティ文字列(v1/v2c)またはユーザー認証情報(v3)を提供します。

2. 検索: エージェントは認証情報を確認し、実装しているMIBオブジェクト内でOIDを検索して、デバイスから対応する値を取得します。

3.応答: エージェントは、UDPポート161からマネージャーに値を含むRESPONSEパケットを返信します。ゲージ(温度など)はそのまま返されます。カウンター(入力オクテットなど)は生の累計値として返され、マネージャーは2つのサンプルをレートに変換します。

4. トラップ(オプション): エージェントをそのように設定している場合、しきい値を超えたり状態が変化したりすると、エージェントはポーリングを待たずに、UDP 162 を介してマネージャーに TRAP または INFORM を送信します。

監視プラットフォームは、デバイスごとに30秒から300秒ごとにステップ1から3を繰り返し、値を保存し、レートと比率を計算し、値が閾値を超えた場合にアラートを発します。 

ほとんどのプラットフォームは、トラップを主要な信号ではなく、二次的な信号として使用します。その理由については、以下で説明します。

SNMPコマンドとPDUタイプ

SNMPは、PDUと呼ばれる7種類のメッセージタイプを定義しています。そのうち5種類は、マネージャーからデータ取得や変更のために送信され、残りの2種類はエージェントからイベント報告のために送信されます。 

すべてのSNMP交換は、これらのいずれかを使用します。

Commandリーダーシップ何それがありません
GETマネージャー → エージェント特定のOIDの値を取得します。1つのリクエストに複数のOIDを含めることができます。
ゲットネクストマネージャー → エージェントMIBツリー内の次のOIDを取得します。すべての行インデックスを事前に必要とせずにテーブルを走査します。
大量購入マネージャー → エージェント1回の要求で多数のOIDを取得します。v2cでこの機能が追加されました。大規模なテーブルを処理する際に非常に効率的です。
セットマネージャー → エージェント設定変更のためにOIDに値を書き込みます。ほとんどの運用環境では、安全上の理由からSETコマンドは無効になっています。
応答エージェント → マネージャーGET、GETNEXT、GETBULK、またはSETに対する応答を伝達します。
トラップエージェント → マネージャーエージェントがしきい値またはイベントが発生した際に送信する、一方通行のアラート。応答なし。
INFORMエージェント → マネージャー罠のようなものだが、マネージャーは受信確認を行う。確認応答が届かない場合は、エージェントは再試行する。SNMPv2cおよびv3で利用可能(v1では利用不可)。

SNMPポートとプロトコル

SNMPは2つのUDPポートを使用します。161番ポートはポーリング用、162番ポートはトラップ用です。 

SNMPは通常UDP(ポート161および162)上で動作しますが、一部の実装ではTCP(まれ)またはTLS/DTLS上で動作することも可能です。

ポートプロトコルに使用リーダーシップ
161UDPGET、GETNEXT、GETBULK、SETリクエストとそのレスポンスマネージャー → エージェント(および返信)
162UDPTRAPメッセージとINFORMメッセージエージェント → マネージャー
10161TLS/DTLSSNMP over TLS/DTLS (RFC 6353)、クエリマネージャー → エージェント(および返信)
10162TLS/DTLSSNMP over TLS/DTLS、通知エージェント → マネージャー

ファイアウォールとACLに関する考慮事項

SNMPポーリングが機能しなくなった場合、まずファイアウォールを確認します。SNMPはUDP上で動作するため、パケットがサイレントにドロップされると、デバイスのダウンやエージェントの不具合と見分けがつかない場合があるからです。他の箇所に手を加える前に、ファイアウォールルールを確認するのが通常は最も手軽な解決策です。 

マネージャーの送信元IPアドレスは、デバイスのUDP 161ポートに到達できる必要があります。これは、SNMPエージェントがクエリをリッスンするポートだからです。トラップの場合は逆のルールが適用されます。デバイスはマネージャーのUDP 162ポートに到達できる必要があります。これは、トラフィックを開始するのはマネージャーではなくエージェントだからです。

ファイアウォールの問題に関する簡単なチェックリストを以下に示します。

  • チェックしません管理者のIPアドレスまたはサブネットからデバイスへのUDP 161の受信を許可します。
  • チェックしませんマネージャー上で、トラップを送信するすべてのデバイスからのUDP 162の受信を許可します。このリストは通常​​、ポーリングACLよりもはるかに大きくなります。
  • チェックしませんUDPはコネクションレス型であることに注意してください。特にステートレスファイアウォールでは、UDPの状態追跡はTCPよりも弱いため、戻りパケットはファイアウォールルールに個別に照合される必要があります。
  • チェックしません暗号化された通信には、UDPポート10161と10162を開放してください。ほとんどの導入環境ではTLS/DTLSは使用せず、代わりにプロトコルレベルでの暗号化によってv3を保護しています。

SNMPバージョン:v1、v2c、v3

SNMPの3つのバージョン 本番環境で実行します。 SNMPv3を推奨します デバイスが対応している場合はSNMPv2cを、それ以外の形式を一切受け付けない旧型機器の場合はv1のみを使用します。

SNMPの3つのバージョンについて、概要を以下に示します。 

機能SNMPv1SNMPv2cSNMPv3
リリース198819962002
カウンターサイズ32ビットのみ32ビットと64ビット32ビットと64ビット
GETBULKのサポートいいえありあり
認証コミュニティ文字列(プレーンテキスト)コミュニティ文字列(プレーンテキスト)ユーザー名 + MD5 または SHA
EncryptionなしなしDES、3DES、またはAES
におすすめ旧型デバイスのみACLの背後にある内部ネットワーク信頼できないネットワークに触れるものすべて

SNMPv1:オリジナルバージョン 

プレーンテキストのコミュニティ文字列を唯一の認証情報として使用するため、設定は簡単です。しかし、致命的な制限は32ビットカウンタです。1Gbpsのインターフェースでは、32ビットのオクテットカウンタを34秒で処理してしまうため、1分間隔のポーリングでは、10オクテットが経過したのか、4,294,967,306オクテットが経過したのかを判別できません。 

もしどこかでまだv1を使用しているなら、それを置き換える計画を立ててください。

SNMPv2c

v2cは、64ビットカウンタとGETBULKなどの新しいメッセージタイプがいくつか追加されたv1です。セキュリティは依然として平文のコミュニティ文字列であるため、デバイスにアクセスできるすべての人を信頼できるネットワークでのみ使用可能です。 

ほとんどのハードウェアはv2cをサポートしており、多くの場合デフォルトで有効になっています。一部の古いデバイスでは明示的に有効にする必要があります。v3が利用できない場合にのみ有効にしてください。

SNMPv3

v3は、v2cの機能セットに加えて、本格的なセキュリティ機能を追加します。認証(通常はSHA)、暗号化(通常はAES)、またはその両方をサポートします。 

設定はより複雑になります。コミュニティ文字列を1つだけ設定するのではなく、ユーザー、認証プロトコル、暗号化キー、ビューなどを設定する必要があります。しかし、信頼できない人物がトラフィックを傍受したり、パケットを偽装したりする可能性のあるネットワークでは、このトレードオフは十分に価値があります。

どのSNMPバージョンを使用すべきか?

デフォルト設定としては、認証と暗号化を有効にしたSNMPv3を推奨します。v2cは、ACLによってクエリ可能なホストが制限されている、完全に信頼できるネットワークセグメント内でのみ使用してください。v1は、デバイスがそれより新しい規格に対応できない場合にのみ使用し、対応可能になったらデバイスを交換してください。

投票と罠:それぞれをいつ使うべきか

ポーリングとは、管理者がスケジュールに従って質問をすることです。トラップとは、何かが起こった際にエージェントが自発的に情報を提供することです。 

主要なデータソースとして世論調査を、補助的なシグナルとしてトラップを利用することをお勧めします。その逆は避けてください。

側面ポーリングトラップ
仕組みマネージャーがスケジュールについてエージェントに問い合わせるエージェントはイベントが発生したときにメッセージを送信します。
信頼性の向上タイムアウトと再試行の設定に基づいて、失敗したポーリングが即座に検出されます。単一のUDPパケット、再試行なし(INFORMを除く)
テスタビリティポーリング間隔ごとにテストします。実際のイベントが発生したときにのみテストされます
検出までの遅延時間最大1回のポーリング間隔(30~300秒)うまくいけばほぼ瞬時に反応する
負荷デバイスとネットワークへの負荷を常に低く保つイベントが発生するまではほぼゼロ
トレンドデータ時系列履歴を構築する履歴はなく、イベントのみ記録される(ただし、プラットフォームは受信したトラップを保存できる)。
構成作業サブネットごと、またはマネージャースコープごとに1つのACL各デバイスの宛先IPアドレス
ベスト指標、閾値、キャパシティプランニング歴史が関係ない稀な州の変化

罠だけでは危険な理由

トラップとは、デバイスが何らかの問題が発生したまさにその瞬間に送信するUDPパケットのことです。つまり、そのパケットがデバイスに届く可能性が最も低い瞬間に送信されるパケットです。 

仮に電源装置がフェイルオーバーし、アップリンクが不安定になったとします。そのパケットが失われた場合、通知は届かず、通知が届くはずだったことすら知ることができません。 

ポーリングはこの問題を解決します。ポーリングの失敗自体が検知可能なので、管理者はデバイスが応答しなくなったことを通知します。

罠が今でも役立つ理由

ポーリングの間隔で発生し、迅速な対応が求められるイベント(ポートが管理者によってダウンする、BGPネイバーがリセットされる、冗長電源が切り替わるなど)については、トラップによってほぼリアルタイムで通知を受け取ることができます。 

これらはポーリングに加えて早期警告として使用し、ポーリングの代替として使用しないでください。INFORMメッセージは確認応答と再試行を必要とするため、デバイスが対応している場合はINFORMメッセージを有効にしてください。

世論調査が教えてくれること、罠では教えてくれないこと

世論調査は背景情報を提供してくれる。 

デバイスにしきい値ベースのアラートが設定されていれば、トラップによってCPU使用率が80%を超えたことを検知できます。しかし、ポーリングでは、CPU使用率が1週間上昇し続けていたのか、それとも過去5分間に急上昇したのかが分かります。 

その違いによって、担当者を起こすか、明日対応を予定するかが決まります。顧客環境では、このパターンが頻繁に見られます。同じしきい値を超えても、その背後にあるトレンドラインによって、意味するところが全く異なるのです。

SNMPのセキュリティリスクとベストプラクティス

SNMPは、ほとんどのネットワークが信頼できるものと想定されていた1980年代後半に設計されたため、一般的な攻撃対象となっている。 

SNMPには、繰り返し見られる3つの弱点があります。 

  1. v1とv2cは認証情報を平文で送信するため、マネージャーとデバイス間のパケットを1つでも傍受できれば、誰でもコミュニティ文字列を読み取って再利用できてしまう。 
  2. デフォルトのコミュニティ文字列(「public」と「private」)は、ベンダーが有効な状態で出荷し、管理者が変更を忘れるため、依然として数百万台のデバイスで使用されています。これは、攻撃者が認証情報を推測する手順を完全に省略できる場合が多いことを意味します。 
  3. 攻撃者は、オープンなSNMPレスポンダーを悪用してDDoS攻撃のトラフィックを増幅させます。なぜなら、小さなGETBULKクエリでも最大100倍もの規模の応答をトリガーできるため、あなたのデバイスが他者を攻撃するための武器になってしまうからです。 

これらの問題を解決するには、すべてのSNMP展開を、デフォルトで安全なものとしてではなく、強化が必要なものとして扱う必要があります。

守備チェックリスト

SNMPに対応するすべてのデバイスに、以下のベストプラクティスを適用してください。

  • デフォルトのコミュニティ文字列は絶対にそのままにしないでください。「public」と「private」を変更するか、削除してください。
  • デバイスが対応している場合は、SNMPv3とauthPriv(認証と暗号化を組み合わせた機能)を組み合わせて使用​​してください。
  • SNMPをACLで制限する場合は、広範なサブネットではなく、特定のマネージャIPアドレスに限定してください。
  • 管理トラフィックは、ユーザートラフィックと同じセグメントではなく、専用のVLANまたは管理VRFに配置してください。
  • 監視する必要のないデバイスでは、SNMPを完全に無効にしてください。
  • 特別な理由がない限り、SETはオフにしてください。
  • ネットワークのエッジでUDPポート161と162をブロックしてください。SNMPはパブリックインターネットからアクセスできないようにしてください。
  • SNMPv3認証情報は、他の特権認証情報と同じスケジュールでローテーションしてください。
  • デバイスが公開するOIDを監査します。ほとんどのデバイスでは表示を制限できるため、エージェントはマネージャーが実際に必要とするMIBのサブセットに対してのみ応答します。

「SNMPサポート」とは実際には何を意味するのか

「SNMPサポート」とは、デバイスがSNMPクエリに応答できることを意味しますが、どのクエリに応答できるか、またどの程度の有用なデータが返されるかは保証されません。対応範囲はバージョン文字列から数千ものベンダー固有のメトリックまで多岐にわたるため、ラベルだけではデバイスの監視価値があるかどうかは判断できません。

標準MIBは、インターフェース使用率、1秒あたりのパケット数、CPU、メモリ、およびTCP統計情報を網羅しています。 

これはルーターやスイッチの基本的な監視には十分な場合が多い。しかし、UPS(バッテリー駆動時間、バッテリー駆動時間、バッテリーパックの状態が必要)やストレージアレイ(ドライブの状態、空き容量、LUNごとのレイテンシが必要)には不十分だ。これらのメトリックはベンダー固有のMIBにしか存在しない。

ベンダーMIBを持っているからといって、必ずしも役に立つとは限りません。 

APCのMIBには4,500を超えるオブジェクトが含まれていますが、そのほとんどは日常業務において何の意味も持ちません。例えば、「バス上の整流器の物理アドレス」を報告するオブジェクトなどがあります。また、すべてのAPCデバイスがすべてのオブジェクトを実装しているわけではなく、デバイスはMIB全体のサブセットのみをサポートしています。 

実際に重要な指標はツリー全体に散在しており、それらを見つけるには、ベンダーのドキュメントを注意深く読むか、各モデルにとってどのOIDが重要かを既に把握している監視ツールを使用する必要があります。

監視システムにおける「SNMPサポート」の意味

SNMPに対応した監視システムが、必ずしもSNMPデバイスの監視に優れているとは限りません。真の評価基準は、システムがどれだけOID関連の作業を自動で行ってくれるかです。 

両者を区別する3つの機能:

  1. 自動検出: 優れたシステムは、デバイスを識別し、そのモデルに適したOIDを選択し、構成が変更された際に再確認を行います。PoEを有効にすると、構成を編集することなくPoE MIBを照会できるようになります。
  2. 正しいデータ解釈: SNMPは、ゲージ、カウンター、文字列、ビットマップを返します。カウンターは、サンプルの差分を計算し、間隔で割ることによってレートに変換する必要があります。また、64ビットカウンターは32ビットカウンターよりもオーバーフローの頻度がはるかに低くなります。システムはこれらすべてを透過的に処理する必要があります。
  3. 適切なデフォルトアラートしきい値: 実際に生産性を低下させる要因(インターフェースエラー、CPU飽和、ディスク容量不足、UPSのバッテリー駆動など)に関する事前定義済みアラートは既に存在しているべきである。さらに、カスタムしきい値の設定は、1週間もかかるようなものではなく、ちょっとした調整で済むべきである。

これら3つの機能以外にも、グラフ作成、柔軟なアラートルーティング、デバイスの自動検出、レイヤー2およびレイヤー3のトポロジーマップ、SNMPでは対応できない他のプロトコル(WMI、JMX、ベンダーAPI)のサポートなど、便利な追加機能が備わっています。 

SNMPとその他の情報源を統合したシステムは、SNMPのみに対応するシステムよりもはるかに有用であり、これが私たちが自社プラットフォームを構築した原則です。

LinuxにSNMPをインストールする

LinuxにSNMPをインストールするには、次の4つの手順に従ってください。 

  1. パッケージをインストールします
  2. エージェントを設定する
  3. サービスを開始する
  4. 応答していることを確認してください 

Red HatやCentOSでは、このプロセス全体は単一ホストで約1分で完了します。その他のディストリビューションでは、同じnet-snmpパッケージを使用しますが、パッケージマネージャのコマンドが異なります。

ステップ1:net-snmpパッケージをインストールする

パッケージマネージャーを使用して、エージェントとコマンドラインユーティリティをインストールしてください。ユーティリティパッケージには、`snmpwalk`、`snmpget`、およびテストに必要なその他のツールが含まれています。

yum install net-snmp net-snmp-utils

DebianまたはUbuntuでは、同等のコマンドは`apt install snmpd snmp`です。新しいRed Hatシステムでは、yumの代わりにdnfを使用してください。

ステップ2:エージェントの設定

エージェントは/etc/snmp/snmpd.confから設定を読み込みます。ファイアウォールの内側にあり、インターネットに公開されていないホストの場合、最もシンプルな動作設定は次の1行です。

rocommunity MyCommunity

これにより、コミュニティ文字列「MyCommunity」を知っているデバイスは、アクセス制御が追加されない限り、任意のIPアドレスから読み取り専用のクエリを実行できます。書き込み操作(SET)は無効のままですが、これはほとんどすべての運用環境で望ましい動作です。

「MyCommunity」を、辞書に載っている単語やデフォルト値以外のものに置き換えてください。「public」と「private」は常にスキャンされているため、絶対に使用しないでください。

より厳格な設定のために、snmpd.conf では、エージェントに問い合わせできる IP アドレスの制限、SNMPv3 認証と暗号化の有効化、およびエージェントが応答する OID の制限もサポートしています。 

ステップ3:サービスを開始し、起動時に有効にする

今すぐエージェントを起動し、システム起動時に毎回起動するように設定してください。

chkconfig snmpd on

service snmpd restart

systemdを使用するシステム(ほとんどの最新のLinuxディストリビューション)では、同等のコマンドは次のようになります。

systemctl enable snmpd

systemctl restart snmpd

ステップ4:エージェントが応答していることを確認する

ネットワーク全体のトラブルシューティングを行う前に、同じホストからエージェントをテストしてください。ローカルクエリが成功すれば、エージェントが実行されており、ローカルアクセス用の設定が有効であることを意味します。

snmpwalk -v2c -c MyCommunity 127.0.0.1 .1.3.6.1.2.1.1.1.0

次のような行が返ってくるはずです。 SNMPv2-MIB::sysDescr.0 = STRING: 続いて、システムの説明が表示されます。これが表示されれば、エージェントは正常に動作しています。表示されない場合は、次のセクションのトラブルシューティングチェックリストを参照してください。

クエリが失敗した場合:

以下の手順を順番に進めてください。

  • ローカルファイアウォール: iptables、firewalld、またはnftablesでUDP 161の受信を許可する必要があります。iptables -L -nなどのコマンドで確認してください。
  • ネットワークファイアウォール: マネージャーとサーバー間のすべての機器は、UDP 161を許可する必要があります。
  • すべてのパケットが到着します: サーバー上でtcpdump -i any port 161を実行し、マネージャーからクエリを実行してください。何も表示されない場合は、ネットワークの問題です。
  • hosts.allow / hosts.deny: net-snmp の一部のビルドでは tcpwrappers を使用しています。テストするには、/etc/hosts.allow に snmpd: ALL を追加してください。
  • コミュニティ文字列: マネージャーがエージェント設定から取得した文字列と全く同じ文字列を使用していることを確認してください。

SNMPのトラブルシューティング:構造化されたチェックリスト

SNMPが失敗する場合、問題はほぼ必ず次の4つのいずれかにあります。ポート、認証情報、エージェント、またはACLです。 

必ずこの順番で確認してください。飛ばさないでください。

1. ポートにアクセス可能ですか?

  • マネージャーから、nmap -sU -p 161 を実行します。 「open」または「open|filtered」という結果は、ポートに到達可能であるものの、確定的に確認されたわけではないことを意味します。
  • ファイアウォールが閉じている場合は、管理者とデバイス間のファイアウォール、およびデバイス自体のACLを確認してください。

2. 資格情報は正しいですか?

  • v1/v2cの場合、コミュニティ文字列を文字単位で検証してください。末尾の空白と大文字・小文字は重要です。 
  • v3の場合、ユーザー名、認証プロトコル(MD5またはSHA)、認証キー、プライバシープロトコル(DESまたはAES)、およびプライバシーキーを確認してください。いずれかの項目が間違っていると、交換全体が失敗します。

3. エージェントは実行中で、応答していますか?

  • Linuxでは、systemctl status snmpdまたはservice snmpd statusを実行してください。
  • Cisco IOSでは、show snmpコマンドを実行してパケット数を確認してください。「入力キューのドロップ数」が増加している場合は、エージェントの過負荷を示しています。
  • デバイス上で `tcpdump -i any -n port 161` を実行してください。リクエストが到着しても応答が返ってこない場合は、エージェントの設定、認証情報、またはアクセス制御に問題がある可能性があります。

4. ACLはこのマネージャーを許可していますか?

  • Ciscosnmp-serverコミュニティまたはsnmp-serverグループで参照されているACLを確認してください。
  • Linux net-snmprocommunity ディレクティブは、例えば rocommunity MyCommunity 10.0.0.0/24 のように、ソース制限を受け入れます。

大規模環境でSNMPを大規模に実行する方法

SNMPを拡張するには:

  • メトリックに合わせてポーリング間隔を設定します。 60秒が一般的なデフォルト値です。デバイスの容量が許す限り、インターフェースカウンタの間隔を30秒に短縮してください。短いスパイクも影響するためです。ディスク容量など、変化の遅い値は300秒まで延長してください。間隔を短くすると、デバイスとコレクターへの負荷が増加するため、必要以上に頻繁にポーリングしないでください。
  • 監視対象機器の近くにコレクターを設置してください。 WANリンクを介したポーリングは、交換のたびに遅延を発生させ、トラップ配信をより不安定にする。
  • GETBULKを使用したバッチクエリ: GETBULK(v2c以降)を適切な繰り返し値(通常は10~20)で使用すると、リクエスト数を桁違いに削減できます。
  • 構成管理を通じて認証情報をローテーションする: Ansible、Chef、Puppet、Saltなどのツールを使用すると、個々のデバイスにログインすることなく、コミュニティ文字列やSNMPv3キーをネットワーク全体に展開できます。
  • 投票期間をずらして実施する: クエリは毎分0秒に一斉に送信するのではなく、均等に分散させて送信してください。SNMPクエリが一斉に送信されると、小型デバイスやリソースが限られたデバイスではパケットロスやCPU負荷の急上昇を引き起こします。

SNMPのユースケース

SNMPは、ほとんどのIT環境において、パフォーマンス監視、障害アラート、キャパシティプランニング、トラブルシューティング、コンプライアンス証明という5つの役割で活用されています。 

いずれも同じ基盤となるデータを使用しているが、データの利用方法は異なる。

  • パフォーマンス監視: CPU、メモリ、インターフェースのトラフィック、レイテンシに関する指標を定期的に収集し、グラフ化して傾向分析を行う。
  • 障害アラート: しきい値を超えた場合、プロセスがクラッシュした場合、電源供給が停止した場合、またはインターフェースが不安定になった場合にアラートを発報します。
  • 容量計画: 数週間から数か月分のSNMPデータを使用して、アップリンク、CPU、またはストレージがいつ枯渇するかを予測します。
  • トラブルシューティング: インシデント発生時にデバイスを操作して、CLIセッションを開かずにライブカウンター(インターフェースエラー、ルーティングテーブルサイズ、メモリプールなど)を検査します。
  • コンプライアンス: 過去のSNMPデータは、稼働時間、変更期間、リソース使用状況など、監査担当者が抱く疑問に答えるものであり、そうでなければ記録として残らない情報を提供します。

SNMPの制限事項

SNMPの脆弱性は、セキュリティ上の欠陥、スケーリングコスト、カバレッジのギャップという3つのカテゴリーに分類されます。問題がどのカテゴリーに属するかを把握することで、問題を修正すべきか、回避策を講じるべきか、あるいはSNMPを他のシステムと組み合わせるべきかを判断できます。

セキュリティギャップ

プロトコルレベルには2つの制限があり、収集するデータの完全性に影響を与えます。

  • デフォルトのセキュリティが脆弱: v1とv2cは暗号化機能がなく、平文の共有文字列で認証を行います。v3はこの問題を修正していますが、より慎重な設定が必要です。
  • UDP損失: SNMPはUDP上で動作します。ネットワークが混雑すると、ポーリングやトラップが静かに停止してしまうことがあり、そのため、実際よりも広い範囲をカバーできているという誤った認識につながる可能性があります。

スケーリングコスト

SNMPを数千台のデバイスに展開する際に、2つの制約が明らかになります。

  • 投票オーバーヘッド: 毎分数万件もの小さなUDPクエリが積み重なると、かなりの負荷となる。性能が制限されたデバイス(低価格スイッチ、IoT機器など)では、SNMP自体が相当なCPUリソースを消費する可能性がある。
  • テーブルインデックスの癖: デバイスによっては、再起動後にインターフェースのインデックスが変更される場合があります。インデックスをキャッシュする監視システムは、インデックスを再検出するまで誤った行をポーリングし続けることになります。

カバレッジギャップ

SNMPでは、ベンダー間の仕様の不一致や最新のスタックの進化といった理由で、以下の3つの制約事項を認識できない。

  • ベンダーによる実装のばらつき: 同じカテゴリーの異なるベンダーのデバイスは、同じ指標を公開することは稀です。すべてを公開するものもあれば、ほとんど何も公開しないものもあります。
  • OIDの不整合: ベンダーごとにMIBの構造が異なるため、同じデータでも構造が異なる場合があります。そのため、監視テンプレートをあるベンダーから別のベンダーに移植するのは容易ではありません。
  • 現代のインフラに関する可視性の限界: コンテナ、サーバーレス関数、クラウドサービスでは、SNMPが公開されることはほとんどありません。最新のスタックでは、SNMPはストリーミングテレメトリ(gNMI、OpenTelemetry)、ベンダーAPI、ログ取り込みと組み合わせて使用​​されます。

SNMPベンダーとMIBに関する課題

以下は、私たちが最も頻繁に目にする課題であり、それぞれがもたらす被害の大きさの順に大まかに並べたものです。

  • 名目上のサポートのみ: 一部のデバイスは標準MIBを実装しているものの、ゼロまたは静的な値を返します。エージェントは応答しますが、データは実際には存在しません。これは、見た目には何も問題がないため、最も検出が困難な障害モードです。
  • ファームウェアのバージョン間で変更されるOID: ベンダーはマイナーリリースでOIDを非推奨にすることができます。古いOIDに基づいて構築された監視システムは、アップグレード後にデータを返すのをひっそりと停止します。私たちは、この現象によって顧客のダッシュボードが機能しなくなるケースを何度も目撃してきました。
  • MIBファイルは公開されていません。 ベンダーによっては、MIBファイルをサポートポータルの奥に隠している場合があります。MIBがなければ、OIDを手探りで操作することになります。値は返ってきますが、それが何を意味するのかは何もわかりません。
  • コンテキストが見つかりません: CPU使用率のOIDは、ベンダーによって異なる値(1分平均、5分平均、瞬時値など)を報告する可能性があり、その場合、どのベンダーの値であるかは明示されません。あるベンダーに対して設定されたしきい値は、別のベンダーでは誤った値になる可能性があります。
  • 各部門の指標: インターフェースのエラー率は、ほとんどのデバイスでは標準のIF-MIBに含まれていますが、一部のデバイスではベンダー独自のツリーに含まれています。それらを見つけるには、デバイス固有の検出ロジックが必要です。
  • 指数の不安定性: ifIndexの値は再起動時に再割り当てされる可能性があります。一部のベンダーは回避策としてifAliasや永続的なインデックスMIBを提供していますが、すべてのベンダーがそうではありません。

これらの問題を回避するには、データに依存する前に、環境内の各デバイスクラスでSNMPが実際に何を返すかを検証してください。 

各モデルにつき少なくとも1台のデバイスで、カウンター値を他の情報源(CLI出力、NetFlow、アプリケーションメトリクスなど)と比較してスポットチェックしてください。

SNMPサポートから真の可視性まで

SNMPは、インフラ監視における普遍的な基準であり続けています。ほぼすべてのネットワーク機器とサーバーオペレーティングシステムで利用可能です。ルーター、スイッチ、ファイアウォール、UPS、そして従来のサーバーの監視においては、SNMPに代わるものはありません。

しかし、プロトコルのサポートはあくまで出発点に過ぎません。本当に重要なのは、どのOIDが重要かを特定し、デバイスの種類を問わず一貫して収集し、そのデータをチームが信頼できるアラートやトレンドに変換することです。

LogicMonitorは、そうした作業を軽減するために開発されました。手動設定を減らし、デバイスのカバレッジを向上させ、生のメトリクスからアクションへの道筋をより明確にすることで、SNMP対応インフラストラクチャの監視を支援します。

ハイブリッドインフラストラクチャ全体でSNMP監視を簡素化

LogicMonitorが、チームが適切なSNMPメトリックを発見し、手動によるOID作業を削減し、デバイスデータを実用的なアラートと可視化に変換するのにどのように役立つかをご覧ください。

よくあるご質問

1. SNMPは2026年にもまだ使われているだろうか?

はい。SNMPは、ルーター、スイッチ、ファイアウォール、UPSシステム、ストレージアレイ、従来型サーバーなどの監視に今でも広く利用されています。多くのインフラストラクチャがデフォルトでSNMPをサポートしているため、依然として有用です。

2. SNMPはNetFlowと同じですか?

いいえ。SNMPは、CPU、メモリ、インターフェースエラー、トラフィック総量などのデバイスの状態とカウンタを報告します。NetFlowは、誰が誰と、どのポートで、どれだけのデータを送信しているかなど、トラフィックのやり取りを表示します。

3. SNMPはプッシュ型ですか、それともプル型ですか?

SNMPは、マネージャーが定期的にエージェントをポーリングするため、基本的にはプル型です。トラップやインフォームによるプッシュ型のアラートもサポートしていますが、これらは通常、二次的なシグナルとして使用されます。

4. SNMPはクラウドインフラストラクチャを監視できますか?

限られたケースに限られます。ほとんどのクラウドネイティブサービス、コンテナ、サーバーレスプラットフォームはSNMPを公開していないため、チームは通常、SNMPをクラウドAPI、ログ、OpenTelemetry、またはベンダー固有の統合と組み合わせて使用​​します。

5. SNMPとICMPの違いは何ですか?

SNMPは、CPU、メモリ、インターフェースカウンタ、ハードウェアステータスなど、デバイスの詳細なメトリックを収集します。ICMPは通常、デバイスにpingを送信して応答を確認するなど、基本的な到達可能性チェックに使用されます。

6. SNMP SETを有効にする必要がありますか?

通常は無効です。SNMP SETはSNMP経由での設定変更を可能にするため、ほとんどの監視環境では不要なリスクを生み出します。特定の管理された使用例がない限り、無効にしておくことをお勧めします。

14日間フルアクセス LogicMonitor プラットフォーム