配置 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
输出包含具有唯一标识符 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。
例如,若要创建入站规则以允许 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 选项的详细信息,请参阅以下链接:
- 配置 Hyper-V 防火墙设置:配置 Hyper-V 防火墙设置
- 配置 Hyper-V 防火墙规则:配置通过 Hyper-V 防火墙控制流量的规则列表
若要了解如何使用Microsoft Intune配置防火墙,请参阅终结点安全的防火墙策略。
提供反馈
若要提供 Hyper-V 防火墙的反馈,请打开“反馈中心”,并使用类别“安全和隐私>Microsoft Defender防火墙和网络保护”。