SNMP(Simple Network Management Protocol)は、ネットワーク上に存在するサーバーやルーターなどの機器の状態や動作状況をチェックするために使われるプロトコルです。監視対象の機器に対してリクエストを送り、その機器が応答してくれることで現在の状況を把握することができます。
インフラエンジニアにとってSNMPを理解することは、ネットワーク管理の第一歩となります。この記事を通してSNMPとは何なのか?を理解していきましょう。
SNMPとは
SNMPとは、TCP/IPネットワークに接続された通信機器の情報を収集・管理するためのプロトコルです。プロトコルとは通信をするためのルールのようなもので、インターネットの世界ではこのプロトコルを利用して通信が行われます。
そのプロトコルの一つであるSNMPを利用することで、様々なネットワーク機器が持つ情報を収集し把握することができます。
具体的には、監視対象となるサーバーのCPU使用率やメモリ使用率、ディスク使用率などの状態監視、ルーターやスイッチなどのネットワーク機器の状況監視を行うことができます。
TCP/IPについては以下の記事を参照ください。
TCP/IPモデルとOSI参照モデルの違いと実際の利用シーン
SNMPはOSI参照モデル第七層
SNMPはOSI参照モデルの第七層、アプリケーション層に分類され、通信を行う際にはトランスポート層のUDPを使った通信を行います。
UDPは(User Datagram Protocol)の略で、動画ストリーミングやゲームのオンラインマルチプレイ、DNSクエリなどのアプリケーションで利用されるプロトコルになり、OSI参照モデル第4層、トランスポート層に該当します。
UDPではデータの送受信を開始する前に通信相手との接続を確立しないため、通信の開始が高速であるという特徴があります。
UDPに対してTCP(Transmission Control Protocol)というプロトコルも存在し、この2つはそれぞれ真逆の特徴を持っています。
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マネージャから取得したい情報のリクエストが来た時に、そのリクエストに応じて適宜情報を返します。
エージェントは、ルーターやスイッチ、サーバーなどにインストールし、その機器のCPU使用率やメモリ使用量などの情報をマネージャに通知します。
SNMPエージェントは161番ポートでSNMPマネージャからの通信を受け付けます。
また、SNMPエージェントは後述する「MIB」というツリー構造のデータベースに「OID」という番号で識別されるオブジェクトを保持しています。
SNMPエージェントはSNMPマネージャからのリクエストに含まれるOIDを確認し、それに関連する値をレスポンスを返します。
MIB
MIB(Management Information Base)は、SNMPで利用する情報が保存されているデータベースのことで、SNMPマネージャ、SNMPエージェントでやり取りを行う情報がMIBになります。
このMIBの中身はツリー構造になっていて、システムに関する情報、インターフェイスに関する情報、端末監視情報など多岐にわたる情報が格納されています。
MIBには一意に識別するための情報として、次に解説するOIDが付けられています。
OID
OID(Object Identifier)は、MIB内に保存されている情報を一意に識別するための「番号」です。OIDを使うことで、SNMPマネージャーはエージェントから特定の情報を取得できます。
例えば、機器のCPU使用率の情報を得たいときには、その情報に対応するOIDを指定することでエージェントがそのデータを返します。
コミュニティ
SNMPにおけるコミュニティは、SNMPで管理できるシステムネットワークの範囲を意味し、範囲ごとにコミュニティ名をつけることができます。
同じコミュニティ名が付与されることで、その範囲で情報を共有することが可能になります。
コミュニティには権限があり、その権限によってコミュニティ内のMIBへのアクセス権限を変えることができます。
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メッセージへのアクセスを管理するための仕組みで、どのユーザーやグループがどの情報にアクセスできるかを決めるためのルールを設定するものになります。
セキュリティの詳細は以下リンクを参照ください。
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をマネージャに通知します。
まとめ
この記事では、TCP/IPネットワークに接続された通信機器の情報を収集・管理するためのプロトコルであるSNMPについて解説しました。
SNMPは、ネットワーク機器やサーバーの状態を把握するために重要なプロトコルであり、インフラエンジニアにとって必要な知識です。
SNMPを理解するためには、SNMPマネージャとエージェントの役割、MIBやOIDといった基本要素を理解することが必要です。
また、バージョンごとのセキュリティの違いや、SNMPv3の強化された保護機能を知ることで、安全な監視システムの構築ができます。
この記事を通して、SNMPについて理解を深めていただければ幸いです。
参考記事
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2023.08.30
Terraformの組み込み関数とは?elementやlookupなどの基本構文と使用例を学ぶ
こちらの記事では、Terraformの組み込み関数についての基本的な構文と使用例について解説します。
- インフラエンジニア
- AWS
2024.03.04
【疑問解消】ただのサーバー置き場じゃない データセンターって何?クラウドとどう違うの?
この記事では、データセンターについての詳細や似た概念であるクラウドと比較した内容を解説します。
- ネットワーク
2024.07.24
【徹底解説】IPアドレスの全知識
本記事ではIPアドレスについて解説します。
- ネットワーク