SNMP の検証環境を構築する必要があったので、環境構築時のメモを。
エージェント / マネージャー間の簡単な相互通信の検証を行うための環境となり、実運用を想定した情報の取得などは実施していません。
本投稿では、以下の構成を使用して、Windows Server のみで SNMP による監視の検証環境を作成しています。
- SNMP エージェント: Windows 標準の SNMP サービス
- SNMP マネージャー: TWSNMP FC を Windows Server 上にインストール
- SNMP コマンドラインユーティリティ: Net-SNMP でコマンドラインツールのみを使用
SNMP エージェントの導入
SNMP で情報を取得される対象に SNMP エージェントの導入を行う必要がありますが、今回は、Windows 標準の SNMP サービスを使用しています。
Windows で標準で含まれている SNMP サービスの構成については、SNMP サービスの構成 に記載されています。
services.msc で「SNMP サービス」のプロパティを開き、「トラップ」「セキュリティ」から SNMP トラップの送信先や SNMP パケットを受け付ける際の設定を行うことができますので必要となる設定を行い、設定後に SNMP サービスの再起動を行います。
SNMP エージェントについては、UDP 161 でリスニングをしており、snmp.exe からの UDP 161 については、SNMP サービスをインストール後に「SNMP サービス (UDP 受信)」という Windows Firewall ルールが有効になるため、要求の受付は自動的にできる状態になっているかと思います。
SNMP マネージャーの導入
SNMP エージェントから、SNMP マネージャーとして何を利用するかですが、「TWSNMP FC」が容易に導入ができ、ブラウザベースの管理コンソールで情報の確認も容易だと思いました。
最新の TWSNMP では様々な導入形態を選択することができますが、今回は ダウンロードリンク から「TWSNMP FC(Windows)」をダウンロードしてインストールを行っています。
操作方法については はじめてのTWSNMP FC(Window編) で確認できますので、こちらの内容を参考にして操作を行うことができました。
Windows Server では Windows Firewall のルールとして「SNMP トラップ サービス (UDP 受信)」で UDP 162 向けのファイアウォールルールが存在していますが、このルールについては「%SystemRoot%\system32\snmptrap.exe」を対象としたルールとなっており、今回のように TWSNMP FC を SNMP マネージャーとして使用する場合には活用できません。
そのため、明示的に UDP 162 の受信を許可するルールを作成しておく必要があります。
Windows の SNMP サービスの SNMP モードは v2c となっているかと思いますので、TWSNMP FC の管理コンソール接続後に「システム設定 -> マップ」から、適切なSNMP モードと、適切なコミュニティ名を指定しておき、「SNMP TRAP」を有効にしておけば SNMP トラップの受信設定は可能かと思います。
MIB ブラウザーで監視対象としたノードの情報をブラウザの管理コンソールから容易に確認することもでき、操作性もよかったです。
拡張 MIB フォルダを使用した MIB ファイルの追加 を行うこともでき、TWSNMP のデータストアディレクトリに extmibs ディレクトリを新規作成し、次のディレクトリに入っている MIB をコピーし、TWSNMP を再起動することで MIB を認識することができました。
- c:\windows\system32
- c:\windows\syswow64
- C:\Windows\WinSxS\amd64_microsoft-windows-snmp-mib-files_31bf3856ad364e35_10.0.20348.1_none_9896a905acea9bc4
- C:\Windows\WinSxS\x86_microsoft-windows-snmp-mib-files_31bf3856ad364e35_10.0.20348.1_none_3c780d81f48d2a8e
SNMP エージェントの通信テスト
SNMP エージェントからの通信テストについては「evntwin」(Event to Trap Translator) を使用して、特定のイベントログに書き込まれた内容を SNMP トラップとして送信する方法が解説されていることが多いかと思います。(もしくは evntwin のコマンドラインツールになる evntcmd)
そのほかの方法としては、Net-SNMP を使用した方法も覚えておくとよいのかなと思いました。
今回は、https://sourceforge.net/projects/net-snmp/files/net-snmp%20binaries/5.7-binaries/ から 5.7.0 のインストーラーを入手して使用しています。
今回はサービスとしては利用せず、コマンドラインアプリケーション のみを使用したかったため、Base Components のみインストールしています。
ツールはインストールした環境のモジュールをファイルコピーで他の環境でも実行することはできるため、実行したい環境でインストールしなくてもツールは使用できるかと思います。
私が使用したのは以下のコマンドラインアプリケーションとなりますが、マネージャー -> エージェントの通信 / エージェント導入端末からトラップの送信 については、これらのコマンドラインアプリでテストを行うことができます。