配置 Hyper-V 防火墙

从 Windows 11 版本 22H2 开始,Hyper-V 防火墙是一种网络防火墙解决方案,可用于筛选来自 Windows 托管的容器的入站和出站流量,包括 适用于 Linux 的 Windows 子系统 (WSL) 。
本文介绍如何使用 PowerShell 或配置服务提供程序 (CSP) 配置 Hyper-V 防火墙规则和设置。

重要提示

无法通过组策略 (GPO) 配置 Hyper-V 防火墙。 如果 Windows 防火墙设置是通过 GPO 配置的,而 Hyper-V 防火墙设置不是通过 CSP 配置的,则从 GPO 配置中自动镜像适用的规则和设置。

使用 PowerShell 配置 Hyper-V 防火墙

本部分介绍使用 PowerShell 管理 Hyper-V 防火墙的步骤。

获取 WSL GUID

Hyper-V 防火墙规则按 VMCreatorId 启用。 若要获取 VMCreatorId,请使用 cmdlet:

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

例如,若要创建入站规则以允许 TCP 流量在端口 80 上发到 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 防火墙,例如使用 Microsoft Intune 等 MDM 解决方案。

若要了解有关 CSP 选项的详细信息,请参阅以下链接:

若要了解如何使用Microsoft Intune配置防火墙,请参阅终结点安全的防火墙策略

提供反馈

若要提供 Hyper-V 防火墙的反馈,请打开“反馈中心”,并使用类别“安全和隐私>Microsoft Defender防火墙和网络保护”。