Hyper-V ファイアウォールを構成する

バージョン 22H2 Windows 11以降、Hyper-V ファイアウォールは、windows でホストされているコンテナー (Linux 用 Windows サブシステム (WSL) を含む) との間の受信および送信トラフィックのフィルター処理を可能にするネットワーク ファイアウォール ソリューションです。
この記事では、PowerShell または構成サービス プロバイダー (CSP) を使用して Hyper-V ファイアウォール規則と設定を構成する方法について説明します。

重要

Hyper-V ファイアウォールの構成は、グループ ポリシー (GPO) では使用できません。 WINDOWS ファイアウォール設定が GPO 経由で構成され、Hyper-V ファイアウォール設定が CSP 経由で構成されていない場合、該当する規則と設定は GPO 構成から自動的にミラーリングされます。

PowerShell を使用して Hyper-V ファイアウォールを構成する

このセクションでは、PowerShell を使用して Hyper-V ファイアウォールを管理する手順について説明します。

WSL GUID を取得する

Hyper-V ファイアウォール規則は、 VMCreatorId ごとに有効になります。 VMCreatorId を取得するには、次のコマンドレットを使用します。

Get-NetFirewallHyperVVMCreator 

出力には、一意の識別子 VMCreatorIdfriendly name プロパティを持つ VmCreator オブジェクト型が含まれています。 たとえば、次の出力は WSL のプロパティを示しています。

PS C:\> Get-NetFirewallHyperVVMCreator
VMCreatorId : {40E0AC32-46A5-438A-A0B2-2B479E8F2E90} 
FriendlyName : WSL 

WSL VMCreatorId は です {40E0AC32-46A5-438A-A0B2-2B479E8F2E90}

Hyper-V ファイアウォールの設定を確認する

Hyper-V ファイアウォールには、一般的に VMCreatorId に適用される設定があります。 Get-NetFirewallHyperVVMSetting コマンドレットを使用して、設定をチェックします。 たとえば、WSL に適用されるポリシーは、次のコマンドを使用して取得できます。

Get-NetFirewallHyperVVMSetting -PolicyStore ActiveStore -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'

-PolicyStore ActiveStore適用された設定 を返します。

出力には、次の値が含まれています。

説明
Enabled (True/False) True を指定すると、WSL VM に対して Hyper-V ファイアウォールが有効になります。
DefaultInboundAction, DefaultOutboundAction これらは、WSL コンテナーに出入りするパケットに適用される既定のルール ポリシーです。 ルール ポリシーは、この記事の説明に従って変更できます。
LoopbackEnabled Hyper-V ファイアウォール規則を必要とせずに、ホストとコンテナー間のループバック トラフィックが許可されているかどうかを追跡します。 WSL では、既定でこれを有効にして、Windows ホストが WSL と通信し、WSL が Windows ホストと通信できるようにします。
AllowHostPolicyMerge Windows Host Firewall Enterprise Settings (GPO)、Hyper-V Firewall Enterprise Settings (CSP)、Windows Host Firewall Enterprise Settings (CSP)、ローカル Hyper-V ファイアウォール設定、ローカル ホスト ファイアウォール設定の対話方法を決定します。
この設定の詳細については、 Set-NetFirewallHyperVVMSetting コマンドレットを参照 してください。

Hyper-V ファイアウォール設定を構成する

Hyper-V ファイアウォールを構成するには、 Set-NetFirewallHyperVVMSetting コマンドを 使用します。 たとえば、次のコマンドは、既定の受信接続を 許可に設定します。

Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow 

ファイアウォール規則

Hyper-V ファイアウォール規則は、PowerShell から列挙して作成できます。 ルールを表示するには、 Get-NetFirewallHyperVRule コマンドレットを 使用します。 たとえば、WSL にのみ関連するファイアウォール規則を表示するには、次のコマンドを使用します。

Get-NetFirewallHyperVRule -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}'

特定の規則を構成するには、 Set-NetFirewallHyperVRule コマンドレットを 使用します。

たとえば、ポート 80 で WSL への TCP トラフィックを許可する受信規則を作成するには、次のコマンドを使用します。

New-NetFirewallHyperVRule -Name MyWebServer -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80 

特定のプロファイルへの Hyper-V ファイアウォール規則と設定をターゲットにする

Hyper-V ファイアウォール規則と設定は、デバイスが接続されているネットワークの種類に基づく ファイアウォール プロファイルを対象にすることができます。

  • パブリック プロファイル
  • プライベート プロファイル
  • ドメイン プロファイル

ポリシー オプションは既に説明したオプションと似ていますが、接続されている Windows ホスト ネットワーク アダプターの特定のプロファイルに適用されます。

プロファイルごとの設定を表示するには、次のコマンドを使用します。

Get-NetFirewallHyperVProfile -PolicyStore ActiveStore 

-PolicyStore ActiveStore適用された設定 を返します。

出力には、前のセクションで説明した値と比較して余分な値が含まれています。

説明
AllowLocalFirewallRules (True/False) この設定は、エンタープライズ Hyper-V ファイアウォール規則 (CSP または GPO) がローカルに定義された Hyper-V ファイアウォール規則と対話する方法を決定します。
- 値が True の場合、エンタープライズ Hyper-V ファイアウォール規則とローカルで定義された規則の両方が適用されます
- 値が False の場合、ローカルで定義された Hyper-V ファイアウォール規則は適用されず、エンタープライズ 規則のみが適用されます。

プロファイルごとにこれらの 設定 を構成するには、 Set-NetFirewallHyperVProfile コマンドレットを 使用します。

Set-NetFirewallHyperVRule コマンドレットを使用してプロファイルごとにこれらの規則を構成するには、 オプションを-Profile指定します。

CSP を使用して Hyper-V ファイアウォールを構成する

たとえば、Microsoft Intune などの MDM ソリューションを使用して、ファイアウォール CSP を使用して Hyper-V ファイアウォールを構成できます。

CSP オプションの詳細については、次のリンクを参照してください。

Microsoft Intuneを使用してファイアウォールを構成する方法については、「エンドポイント セキュリティのファイアウォール ポリシー」を参照してください。

フィードバックを提供する

Hyper-V ファイアウォールに関するフィードバックを提供するには、フィードバック ハブを開き、[セキュリティとプライバシー > ] Microsoft Defender [ファイアウォールとネットワーク保護] カテゴリを使用します。