Windows Server および Windows 10/11 に SNMP サービスをインストールして構成する方法

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では、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

これにより、いくつかの基本情報が取得されます。データが返されれば成功です。

ええ、SNMPの設定は最初のハードルを乗り越えれば、まるで散歩するようなものです。設定を詳しく調べて、ファイアウォールが開いていることを確認するだけです。うまくいくことを祈っています。これで、あまり手間をかけずに目標達成に近づけることを願っています。

まとめ

  • サーバーマネージャーまたはPowerShell経由でSNMPをインストールする
  • Windows Server Coreでは、PowerShellとレジストリ編集を使用します。
  • services.msc またはレジストリ (Core の GUI ではない) 経由で SNMP を有効にして構成します。
  • ファイアウォールポートを開く(UDP 161/162)
  • snmpwalkや他のツールでテストする

まとめ

WindowsでSNMPを設定して実行するのは、正直言って面倒な作業です。しかし、一度設定してしまえば、ネットワーク監視には非常に役立ちます。重要なのは、SNMPが正しくインストールされ、正しく設定され、ファイアウォールが適切に設定されていることを確認することです。その後は、コミュニティ文字列とトラップターゲットをテストして調整するだけです。うまくいかない場合は、サービスの状態、ファイアウォールルール、そしてコミュニティ文字列を再確認してください。この記事が、誰かの頭痛の種を少しでも軽減してくれることを願っています。