SNMP(Simple Network Management Protocol)はネットワーク管理用に設計されたプロトコルです。SNMPを使って定期的にネットワーク・ルータやスイッチなどネットワーク機器、サーバ等の状態を観察すれば、障害やトラブル発生を事前策を打つことができます。

SNMPには以下3つのバージョンがあります。

  • SNMPバージョン1 RFC1157
  • SNMPバージョン2 RFC1441
  • SNMPバージョン3 RFC3411

最も普及しているのはSNMPバージョン1です。SNMPは「マネージャ」「エージェント」の2要素から構成されます。マネージャからはSNMPに対応した様々な機器の情報や設定を集中管理出来ます。当記事では主にマネージャ側について説明します。

MIB・OID

エージェント側の情報はMIB(Management Information Base)という既定の分類がなされています。MIBにはデータ項目(MIB変数)と、それらに対して出来る処理が決められています。

MIB分類には、system(ホストやルータの名称などシステムの情報), interface(個々のネットワークインタフェース情報), at, ip icmp, tcp, udp, egp, snmp, privateなどがあります。

MIBは沢山のオブジェクトから構成されます。それぞれのオブジェクトにはOIDというピリオドと数字を連続させた番号が設定されています。
個々のMIBには更に、サブツリーがさらに紐づきますが、詳細はここでは割愛します。

SNMPのコミュニティ名

SNMPでは、コミュニティというパスワードを使用します。コミュニティごとに役割や権限を設定できます。

CentOSでSNMPインストール

CentOSでのSNMP機能は、オープンソースのnet-snmpをインストールする事で使用出来るようになります。SNMPには先述の通り「マネージャ」「エージェント」の2要素がありますが、当記事では主にマネージャ側について説明します。マネージャの機能を使用するためには、net-snmp-utilsもインストールする必要があります。

インストールコマンドは以下の通りです。

初期設定

snmpの設定ファイルは以下です。今回はloacalhostからしか受け付けない設定としていますので、設定は適宜変更してください。

com2sec

com2sec は、SNMPマネージャに対して、セキュリティグループを決める設定です。エージェントはマネージャをIPとコミュニティ名で識別します。

以下はdefaultというローカルのSNMPマネージャからコミュニティ名publicでアクセスしてきた場合委はセキュリティグループnotConfigUserとして扱う。という設定です。グループの設定は後述します。

外部からエージェントとして接続を許可する場合は、publicのような文字列をそのまま使用するのは不適切です。予測可能なコミュニティ名をそのまま使用すると、外部からシステムの重要な情報を盗み取られる原因となります。

group

セキュリティグループに対して、セキュリティモデルを設定します。

  • v1:SNMPバージョン1で使用する
  • v2:SNMPバージョン2cで使用する
  • usm:SNMPバージョン3で使用する

view

MIBツリーをどこまで参照許可させるかの設定です。

access

snmpへのアクセス制限を設定します。設定は、com2sec group view を組み合わせで行います。

SNMPの起動・自動起動設定(CentOS7)

動作確認

正常に動作するか確認してみます。コマンドは後述しますが、以下のコマンドでサブツリー情報が大量に表示されれば正常に起動しています。

サブツリー情報が表示されれば問題ありません。以下のメッセージが表示された場合は、コミュニティ名の間違いやバージョンの許可情報の誤りなどを疑ってみてください。

SNMPマネージャのコマンドリスト

主なSNMPマネージャのコマンドは以下の通りです。

snmpget

snmpgetコマンド例

snmpgetnext

snmpgetnextコマンド例

snmpwalk

snmpwalkコマンド例

snmpdelta

snmpdeltaコマンド例

整数値以外のOIDを指定すると以下のようにエラーとなります。