SNMP(Simple Network Management Protocol)は、ネットワーク監視で今でも頻繁に登場する定番プロトコルの1つです。軽量で高速、UDPポート161と162を使用し、ネットワーク機器、サーバー、プリンターなどから情報を取得するのに非常に便利です。しかし、実際にWindowsで設定しようとしたことがあれば、Microsoftが特にWindows 10、11、Windows Server 2022/2019などの新しいバージョンでは、設定が簡単ではないことに気付いたでしょう。この機能はデフォルトでインストールされていない場合があり、GUIが少し隠れているように感じます。そのため、監視設定でSNMPを動作させようとしている場合、または単に試してみる場合に備えて、もう少し現実的で洗練されていないものの、目的を達成できる簡単な説明を以下に示します。
- Windows Server 2022/2019 に SNMP をインストールする (サーバー マネージャーと同様)
- Windows Server Core 上の SNMP エージェント (GUI なし、PowerShell を使用する必要があります)
- Windows 10/11でSNMPを有効にする(オプション機能経由)
- SNMP設定の構成(services.msc、レジストリ、ファイアウォール)
Windows Server 2022/2019にSNMPサービスをインストールする方法
古き良きWindows Serverでは、SNMPを実行するにはサーバーマネージャーを使用します。SNMPはもはや役割ではなく、追加する機能であるため、戸惑う方もいるかもしれません。基本的には、「役割と機能の追加」に移動し、「機能」セクションまでクリックします。「SNMPサービス」を見つけます。必要であれば、「SNMP WMIプロバイダー」もチェックしてください。このWMIコンポーネントを使用すると、PowerShellやスクリプトを使ってSNMPデバイスにクエリを実行できます。これはかなり便利です。
ご存知のとおり、SNMP WMI プロバイダーは以前はオプションでしたが、最近では、SNMP クエリに WMI を使用する場合に必要になることがよくあります。
選択後、「次へ」をクリックし、「インストール」をクリックします。インストールが完了するまで数分お待ちください。インストールされたかどうか確認したい場合は、PowerShell を起動して以下を実行してください。
Get-WindowsFeature SNMP*
このコマンドは、SNMPがインストールされているかどうかを表示します。インストールされていない場合は、次のコマンドでインストールできます。
Install-WindowsFeature SNMP-Service, SNMP-WMI-Provider -IncludeManagementTools
インストールが完了したら、PowerShell に次のように入力して、サービスが実行されていることを確認します。
Get-Service SNMP*
通常、SNMPは実行されているはずですが、実行されていない場合は手動で起動する必要があります。また、デバイスからのアラートや通知を処理する場合は、 SNMPトラップサービスに注意してください。
Windows Server Core への SNMP エージェントのインストール
ヘッドレス Windows Server Core — そう、GUI がないやつです。これは時々面倒で、特に SNMP の場合は、ボックスをクリックするだけでは操作できないからです。代わりに、PowerShell か Windows Admin Center(インストールされている場合)を使用する必要があります。PowerShell を使用する場合、コマンドは簡単です。
まず、SNMP がすでにインストールされているかどうかを確認します。
Get-WindowsFeature SNMP*
見つからない場合は、次を実行します。
Install-WindowsFeature SNMP-Service, SNMP-WMI-Provider -IncludeManagementTools
派手ではありませんが、Windows Server 2016 と同じように動作します。その後、サービスが実行されているかどうかを確認します。
Get-Service SNMP*
起動または再起動する必要がある場合は、次の操作を実行してください。
Restart-Service SNMP
コアバージョンについてはこれでほぼ完了です。ただし、GUIがないため、すべての設定はレジストリまたはPowerShell経由で行う必要があることに注意してください。これについては後ほど詳しく説明します。
Windows 10/11でSNMPサービスを有効にする
はい、Windows 10/11は実際にSNMPをサポートしています。ちょっと奇妙に聞こえるかもしれませんが、「オンデマンド機能」の一部です。SNMPを有効にするには、「設定」 → 「アプリ」 → 「オプション機能」→ 「機能の追加」に進みます。下にスクロールするか、 「簡易ネットワーク管理プロトコル(SNMP)」を検索し、「WMI SNMPプロバイダー」も追加してください。これにより、Microsoftのサーバーから必要なコンポーネントが取得されるため、インターネット接続が機能している必要があります。
あるいは、PowerShell を使用する場合は、次のコマンドを実行します。
Add-WindowsCapability -Online -Name SNMP. Client~~~~0.0.1.0
これをオフラインで行う必要がありますか?はい、Windows が処理を複雑にする必要があるため、Windows Feature on Demand の ISO イメージが必要になります。VLSC から ISO イメージを取得し、マウントして、次のコマンドを実行します。
Add-WindowsCapability -Online -Name SNMP. Client~~~~0.0.1.0 -LimitAccess -Source \\path\to\your\mount\Win11_FoD.iso
これにより、ネットワーク環境にインターネット接続を必要とせずにSNMPをインストールできます。非常にスマートではありませんが、実行可能です。
Windows で SNMP サービスを構成する方法
インストールが完了したら、SNMPの設定はservices.mscにアクセスするだけです。「SNMP Service」を見つけて右クリックし、「Properties」を選択します。ここから少し古風な設定になりますが、このサービスには「Agent」、「Traps」、「Security」のタブがあります。それぞれのタブは、設定内容によって重要度が異なります。
「エージェント」タブでは、連絡先情報と位置情報、そしてデバイスから送信する情報を設定できます。デバイスの「名札」のようなものだと考えてください。
「セキュリティ」タブは重要です。ここにはコミュニティ文字列(SNMP v1/v2のパスワードのようなもの)が格納されます。異なる権限を持つ複数のコミュニティ文字列を設定できます。
- 読み取り専用 – 情報の読み取りのみ、変更は行いません
- 読み取り書き込み — デバイス設定の読み取りと変更
- NOTIFY — トラップ/アラートを受け取る
- READ CREATE — 新しいオブジェクトも作成します
- なし — アクセスなし
ほとんどの人は監視に読み取り専用を使用しますが、より高度な制御が必要な場合は、異なる権限を持つ追加のコミュニティ文字列を設定します。
「これらのホストからのSNMPパケットを受け入れる」で、質問できるユーザーを制限できます。全員に公開したくない場合は、特定のIPアドレスまたはホスト名を追加してください。それ以外の場合は、「すべてのホスト」のままにしておいてください。
トラップ(デバイスからの通知)を設定するには、「トラップ」タブに移動し、アラートの対象を指定します。トラップは、「何かおかしい」という緊急のメッセージと考えてください。
SNMPトラフィックを通過させるには、ファイアウォールルールの設定が必要です。PowerShellで、既に有効になっているルールを確認できます。
Get-NetFirewallrule -DisplayName *snmp* | ft
必要に応じてルールを有効化または無効化します。例えば、すべてのSNMPルールを有効化するには、次のようにします。
Get-NetFirewallrule -DisplayName *snmp* | Enable-NetFirewallRule
または、トラブルシューティングを行う場合は特定のものをオフにします。
Windows Server Core でこれを処理する場合は、GUI だけでは不十分であることに注意してください。GUI を使うには、レジストリキーを直接編集する必要があり、これは非常に面倒です。SNMP のレジストリキーは にありますHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters。これらの値を作成または調整するには、PowerShell を使用する必要があります。たとえば、sysContact、を設定しsysLocationたり、 のコミュニティ文字列を管理したりする必要がValidCommunitiesあります。その後、次のコマンドで SNMP サービスを再起動します。
Restart-Service SNMP
複数のマシンに展開する場合は、グループポリシーやスクリプトを使ってレジストリの調整を自動化できます。また、*nix*の観点からSNMPをテストする場合は、snmpwalkなどのツールを使って動作確認ができます。以下のコマンドでデバイスにpingを実行してください。
# snmpwalk -v 2c -c public1 -O e 192.168.12.200
これにより、いくつかの基本情報が取得されます。データが返されれば成功です。
まとめ
- サーバーマネージャーまたはPowerShell経由でSNMPをインストールする
- Windows Server Coreでは、PowerShellとレジストリ編集を使用します。
- services.msc またはレジストリ (Core の GUI ではない) 経由で SNMP を有効にして構成します。
- ファイアウォールポートを開く(UDP 161/162)
- snmpwalkや他のツールでテストする
まとめ
WindowsでSNMPを設定して実行するのは、正直言って面倒な作業です。しかし、一度設定してしまえば、ネットワーク監視には非常に役立ちます。重要なのは、SNMPが正しくインストールされ、正しく設定され、ファイアウォールが適切に設定されていることを確認することです。その後は、コミュニティ文字列とトラップターゲットをテストして調整するだけです。うまくいかない場合は、サービスの状態、ファイアウォールルール、そしてコミュニティ文字列を再確認してください。この記事が、誰かの頭痛の種を少しでも軽減してくれることを願っています。