設定 Hyper-V 防火牆

從 Windows 11 22H2 版開始,Hyper-V 防火牆是一種網路防火牆解決方案,可篩選 Windows 所裝載容器的輸入和輸出流量,包括 Windows 子系統 Linux 版 (WSL) 。
本文說明如何使用PowerShell或設定服務提供者 (CSP) 來設定 Hyper-V 防火牆規則和設定。

重要

無法透過組策略 (GPO) 來設定 Hyper-V 防火牆。 如果 Windows 防火牆設定是透過 GPO 設定,而 Hyper-V 防火牆設定不是透過 CSP 設定,則適用的規則和設定會自動從 GPO 組態進行鏡像。

使用 PowerShell 設定 Hyper-V 防火牆

本節說明使用 PowerShell 管理 Hyper-V 防火牆的步驟。

取得 WSL GUID

每個 VMCreatorId 都會啟用 Hyper-V 防火牆規則。 若要取得 VMCreatorId,請使用 Cmdlet:

Get-NetFirewallHyperVVMCreator 

輸出包含具有唯一標識 VMCreatorId 碼和 friendly 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 Cmdlet 來檢查設定。 例如,您可以使用 命令取得套用至 WSL 的原則:

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

注意

-PolicyStore ActiveStore傳回 套用的設定。

輸出包含下列值:

描述
Enabled (True/False) 如果已針對 WSL VM 啟用 Hyper-V 防火牆,則為 True。
DefaultInboundAction, DefaultOutboundAction 這些是套用至進入或離開 WSL 容器之封包的預設規則原則。 您可以修改規則原則,如本文所述。
LoopbackEnabled 追蹤是否允許主機與容器之間的回送流量,而不需要任何 Hyper-V 防火牆規則。 WSL 預設會啟用它,以允許 Windows 主機與 WSL 通訊,以及讓 WSL 與 Windows 主機通訊。
AllowHostPolicyMerge 決定 Windows 主機防火牆企業設定 (GPO) 、Hyper-V 防火牆企業設定 (CSP) 、Windows 主機防火牆企業設定 (CSP) 、本機 Hyper-V 防火牆設定和本機主機防火牆設定的互動方式。
Set-NetFirewallHyperVVMSetting Cmdlet 會詳細說明此設定。

設定 Hyper-V 防火牆設定

若要設定 Hyper-V 防火牆,請使用 Set-NetFirewallHyperVVMSetting 命令。 例如,下列命令會將預設輸入連線設定為 Allow

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

防火牆規則

您可以從 PowerShell 列舉和建立 Hyper-V 防火牆規則。 若要檢視規則,請使用 Get-NetFirewallHyperVRule Cmdlet。 例如,若要檢視僅與 WSL 相關的防火牆規則,請使用下列命令:

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

若要設定特定規則,請使用 Set-NetFirewallHyperVRule Cmdlet。

例如,若要建立輸入規則以允許埠 80 上的 TCP 流量流向 WSL,請使用下列命令:

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 Cmdlet。

若要使用 Set-NetFirewallHyperVRule Cmdlet 搭配 -Profile 選項,為每個配置檔設定這些規則

使用 CSP 設定 Hyper-V 防火牆

您可以使用防火牆 CSP 來設定 Hyper-V 防火牆,例如使用 MDM 解決方案,例如 Microsoft Intune。

若要深入瞭解 CSP 選項,請遵循下列連結:

若要瞭解如何使用 Microsoft Intune 設定防火牆,請參閱端點安全性的防火牆原則

提供意見反應

若要提供 Hyper-V 防火牆的意見反應,請開啟意見反應中樞,並使用 [安全性和隱私>權] 類別 Microsoft Defender 防火牆和網路保護。