1. ホーム
  2. 記事一覧
  3. ネットワークの基本「SNMP」とは?SNMPの基礎を学んで理解しよう

2024.10.28

ネットワークの基本「SNMP」とは?SNMPの基礎を学んで理解しよう

SNMP(Simple Network Management Protocol)は、ネットワーク上に存在するサーバーやルーターなどの機器の状態や動作状況をチェックするために使われるプロトコルです。監視対象の機器に対してリクエストを送り、その機器が応答してくれることで現在の状況を把握することができます。

インフラエンジニアにとってSNMPを理解することは、ネットワーク管理の第一歩となります。この記事を通してSNMPとは何なのか?を理解していきましょう。

SNMPとは

SNMPとは、TCP/IPネットワークに接続された通信機器の情報を収集・管理するためのプロトコルです。プロトコルとは通信をするためのルールのようなもので、インターネットの世界ではこのプロトコルを利用して通信が行われます。

そのプロトコルの一つであるSNMPを利用することで、様々なネットワーク機器が持つ情報を収集し把握することができます。

具体的には、監視対象となるサーバーのCPU使用率やメモリ使用率、ディスク使用率などの状態監視、ルーターやスイッチなどのネットワーク機器の状況監視を行うことができます。

TCP/IPについては以下の記事を参照ください。

TCP/IPモデルとOSI参照モデルの違いと実際の利用シーン

SNMPはOSI参照モデル第七層

SNMPはOSI参照モデルの第七層、アプリケーション層に分類され、通信を行う際にはトランスポート層のUDPを使った通信を行います。

【初心者必見】OSI参照モデル アプセトネデブで覚えよう

UDPは(User Datagram Protocol)の略で、動画ストリーミングやゲームのオンラインマルチプレイ、DNSクエリなどのアプリケーションで利用されるプロトコルになり、OSI参照モデル第4層、トランスポート層に該当します。

UDPではデータの送受信を開始する前に通信相手との接続を確立しないため、通信の開始が高速であるという特徴があります。

UDPに対してTCP(Transmission Control Protocol)というプロトコルも存在し、この2つはそれぞれ真逆の特徴を持っています。

TCP、UDPに関しては以下の記事で詳しく解説しています。

ネットワークプロトコルTCPとUDPの違いとその用途

SNMPのメリット

SNMPを利用することで、ネットワークの管理者は機器の状態をリアルタイムで把握できるようになります。

リアルタイムで機器の状態を把握できれば、システムの運用中に発生する問題を早期に発見したり、予防的な保守を行ったりすることも可能です。

こうすることで、ダウンタイムを最小限に抑え、安定したネットワーク環境を維持することができます。

SNMPはZabbixのような統合監視ツールと組み合わせて利用されています。Zabbixなどの監視ツールを利用することで、SNMPで収集されたデータを視覚化し、アラートを設定して自動的に通知を受け取ることが可能になります。

Zabbixについては、以下の記事で解説しています。

https://envader.plus/article/494

SNMPの仕組み

SNMPの仕組みを理解する上で、基本となる要素は次に紹介する5つの要素となります。

SNMPマネージャ

SNMPマネージャは、後述するSNMPエージェントが持っている情報を収集、監視します。

SNMPマネージャがSNMPエージェントに定期的に問い合わせを行うことで、それぞれの機器の状態を把握することができます。

SNMPマネージャは162番ポートでSNMPエージェントからの通信を受け付けます。

SNMPとは

SNMPエージェント

SNMPエージェントは、各ネットワーク機器に「インストールされたソフトウェア」で、エージェントがインストールされた機器の情報を監視しておきます。

SNMPマネージャから取得したい情報のリクエストが来た時に、そのリクエストに応じて適宜情報を返します。

エージェントは、ルーターやスイッチ、サーバーなどにインストールし、その機器のCPU使用率やメモリ使用量などの情報をマネージャに通知します。

SNMPエージェントは161番ポートでSNMPマネージャからの通信を受け付けます。

SNMPエージェント

また、SNMPエージェントは後述する「MIB」というツリー構造のデータベースに「OID」という番号で識別されるオブジェクトを保持しています。

SNMPエージェントはSNMPマネージャからのリクエストに含まれるOIDを確認し、それに関連する値をレスポンスを返します。

MIB

MIB(Management Information Base)は、SNMPで利用する情報が保存されているデータベースのことで、SNMPマネージャ、SNMPエージェントでやり取りを行う情報がMIBになります。

このMIBの中身はツリー構造になっていて、システムに関する情報、インターフェイスに関する情報、端末監視情報など多岐にわたる情報が格納されています。

MIBには一意に識別するための情報として、次に解説するOIDが付けられています。

SNMP MIBリファレンス

OID

OID(Object Identifier)は、MIB内に保存されている情報を一意に識別するための「番号」です。OIDを使うことで、SNMPマネージャーはエージェントから特定の情報を取得できます。

例えば、機器のCPU使用率の情報を得たいときには、その情報に対応するOIDを指定することでエージェントがそのデータを返します。

コミュニティ

SNMPにおけるコミュニティは、SNMPで管理できるシステムネットワークの範囲を意味し、範囲ごとにコミュニティ名をつけることができます。

同じコミュニティ名が付与されることで、その範囲で情報を共有することが可能になります。

コミュニティには権限があり、その権限によってコミュニティ内のMIBへのアクセス権限を変えることができます。

SNMPコミュニティとは

SNMPのバージョン

SNMPにはバージョンが存在します。2024年10月現在でSNMPv1、SNMPv2c、SNMPv3の3つのバージョンが存在します。

SNMPv1が最初に誕生したもので最も古く、v3が最新のバージョンになります。

バージョンが上がるごとに性能が改善されていき、SNMPv3ではセキュリティ機能が強化されました。

SNMPv3のセキュリティ

SNMPv3で強化されたセキュリティには、USM (User-based Security Mode)とVACM (View-based Access Control Model)の2つの機能があります。

USMはメッセージを安全にやり取りするための仕組みで、共通鍵を使った認証と暗号化により、メッセージが改ざんされないように保護します。

VACMはSNMPメッセージへのアクセスを管理するための仕組みで、どのユーザーやグループがどの情報にアクセスできるかを決めるためのルールを設定するものになります。

セキュリティの詳細は以下リンクを参照ください。

SNMPv3

SNMPの動作

SNMPの動作は比較的シンプルで、主にマネージャからエージェントへ情報を問い合わせる「Get」、エージェントへ情報の更新を依頼する「Set」、エージェントからマネージャへ通知する「Trap」に分かれます。

SNMP Get

SNMP Getでは、エージェントが保持している機器の情報を「取得」します。

マネージャがエージェントにOIDを含めたGetRequestを送信し、エージェントは指定されたOIDの値をResponseで返します。

SNMP Set

SNMP Setでは、エージェントが保持している機器の情報を「更新」します。

この動作では、マネージャがエージェントに対してOIDを含めたSetRequestを送信し、エージェントは指定されたOIDを更新した値をResponseで返します。

Trap

Trapは、エージェントで管理している機器に障害が発生した場合に、マネージャに対して障害発生を通知します。

SNMPエージェントはOIDの値に特定の変化があったときに障害と判断し、Trapをマネージャに通知します。

SNMPv1,SNMPv2Cオペレーション

まとめ

この記事では、TCP/IPネットワークに接続された通信機器の情報を収集・管理するためのプロトコルであるSNMPについて解説しました。

SNMPは、ネットワーク機器やサーバーの状態を把握するために重要なプロトコルであり、インフラエンジニアにとって必要な知識です。

SNMPを理解するためには、SNMPマネージャとエージェントの役割、MIBやOIDといった基本要素を理解することが必要です。

また、バージョンごとのセキュリティの違いや、SNMPv3の強化された保護機能を知ることで、安全な監視システムの構築ができます。

この記事を通して、SNMPについて理解を深めていただければ幸いです。

参考記事

SNMPとは

SNMPエージェント

SNMP MIBリファレンス

SNMPコミュニティとは

SNMPv3

SNMPv1,SNMPv2Cオペレーション

『SNMP Configuration Guide』

図解で知るSNMP――MIB情報のすべて

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事