Azure Firewall为所有到公共 IP 地址的出站流量提供 SNAT 功能。 默认情况下,当目标 IP 地址位于每个
将流量直接路由到 Internet 时,此默认行为适用。 在某些情况下,您可能需要覆盖默认的 SNAT 行为:
- 如果启用强制隧道,Azure 防火墙会将指向互联网的流量通过 SNAT 转换为其在 AzureFirewallSubnet 中的专用 IP 地址之一,从而隐藏您本地防火墙的流量源。
- 如果贵组织在专用网络中使用 IANA RFC 1918 或 IANA RFC 6598 之外的已注册 IP 地址范围,Azure 防火墙会将流量 SNAT 到 AzureFirewallSubnet 中的一个防火墙专用 IP 地址。 可以将 Azure Firewall 配置为不对公共 IP 地址范围执行 SNAT。 例如,将单个 IP 地址指定为
x.x.x.x或将 IP 地址范围指定为x.x.x.x/24。
可以通过以下方式更改 Azure Firewall SNAT 行为:
- 若要将 Azure Firewall 配置为网络规则处理的 SNAT 流量从不考虑目标 IP 地址,请使用 0.0.0.0/0 作为专用 IP 地址范围。 使用此配置,Azure Firewall无法将流量直接路由到 Internet。
- 若要将防火墙配置为 始终 由网络规则处理的 SNAT 流量,而不考虑目标地址,请使用 255.255.255.255/32 作为专用 IP 地址范围。
- 可以将 Azure Firewall 配置为每小时自动学习已注册和专用的 IP 范围,并使用学习到的路由进行 SNAT。 此预览功能需要Azure Route Server部署在与Azure Firewall相同的虚拟网络中。
重要
- 专用地址范围配置仅适用于网络规则。 应用程序规则始终使用 SNAT。
- 如果要指定自己的专用 IP 地址范围并保留默认的 IANA RFC 1918 地址范围,请确保自定义列表中仍包含 IANA RFC 1918 范围。
可以使用以下方法配置 SNAT 专用 IP 地址。 使用适用于你的配置的方法。 与防火墙策略关联的防火墙必须在策略中指定范围,而不是使用 AdditionalProperties。
| 方法 | 使用经典规则 | 使用防火墙策略 |
|---|---|---|
| Azure 门户 | 支持 | 支持 |
| Azure PowerShell |
配置 PrivateRange |
目前不支持 |
| Azure CLI |
配置 --private-ranges |
目前不支持 |
| ARM 模板 |
在防火墙属性中配置AdditionalProperties |
在防火墙策略中配置snat/privateRanges |
配置 SNAT 专用 IP 地址范围 - Azure PowerShell
经典规则
使用Azure PowerShell为防火墙指定专用 IP 地址范围。
新建防火墙
对于使用经典规则的新防火墙,请使用以下Azure PowerShell cmdlet:
$azFw = @{
Name = '<fw-name>'
ResourceGroupName = '<resourcegroup-name>'
Location = '<location>'
VirtualNetworkName = '<vnet-name>'
PublicIpName = '<public-ip-name>'
PrivateRange = @("IANAPrivateRanges", "192.168.1.0/24", "192.168.1.10")
}
New-AzFirewall @azFw
注意
- 使用
New-AzFirewall部署Azure Firewall需要现有的虚拟网络和公共 IP 地址。 有关完整部署指南,请参阅 使用 Azure PowerShell 部署和配置 Azure 防火墙。 -
IANAPrivateRanges扩展到Azure Firewall上的当前默认值,而其他范围则添加到其中。 若要在IANAPrivateRanges专用范围规范中保留默认值,它必须如示例中所示保留在PrivateRange规范中。
有关详细信息,请参阅 New-AzFirewall。
现有防火墙
若要配置使用经典规则的现有防火墙,请使用以下Azure PowerShell cmdlet:
$azfw = Get-AzFirewall -Name '<fw-name>' -ResourceGroupName '<resourcegroup-name>'
$azfw.PrivateRange = @("IANAPrivateRanges", "192.168.1.0/24", "192.168.1.10")
Set-AzFirewall -AzureFirewall $azfw
配置 SNAT 专用 IP 地址范围 - Azure CLI
经典规则
使用Azure CLI通过经典规则为防火墙指定专用 IP 地址范围。
新建防火墙
对于使用经典规则的新防火墙,请使用以下Azure CLI命令:
az network firewall create \
-n <fw-name> \
-g <resourcegroup-name> \
--private-ranges 192.168.1.0/24 192.168.1.10 IANAPrivateRanges
注意
- 使用 Azure CLI 命令
az network firewall create部署Azure Firewall需要额外的配置步骤来创建公共 IP 地址和 IP 配置。 有关完整部署指南,请参阅 部署并使用 Azure CLI 配置 Azure Firewall。 - Azure Firewall将
IANAPrivateRanges扩展为当前默认值,并将其他范围添加到其中。 若要在专用范围规范中保留IANAPrivateRanges默认值,请将其包含在规范中private-ranges,如示例中所示。
现有防火墙
若要配置使用经典规则的现有防火墙,请使用以下Azure CLI命令:
az network firewall update \
-n <fw-name> \
-g <resourcegroup-name> \
--private-ranges 192.168.1.0/24 192.168.1.10 IANAPrivateRanges
配置 SNAT 专用 IP 地址范围 - ARM 模板
经典规则
若要在 ARM 模板部署期间配置 SNAT,请将以下代码添加到 additionalProperties 属性:
"additionalProperties": {
"Network.SNAT.PrivateRanges": "IANAPrivateRanges, IPRange1, IPRange2"
},
防火墙策略
与防火墙策略关联的 Azure 防火墙自 API 版本 2020-11-01 以来支持 SNAT 专用范围。 可以使用模板更新防火墙策略上的 SNAT 专用范围。 下面的示例将防火墙配置为始终使用 SNAT 网络流量:
{
"type": "Microsoft.Network/firewallPolicies",
"apiVersion": "2020-11-01",
"name": "[parameters('firewallPolicies_DatabasePolicy_name')]",
"location": "chinaeast",
"properties": {
"sku": {
"tier": "Standard"
},
"snat": {
"privateRanges": "[255.255.255.255/32]"
}
}
}
配置 SNAT 专用 IP 地址范围 - Azure门户
经典规则
使用Azure门户为防火墙指定专用 IP 地址范围。
选择资源组,然后选择防火墙。
在 “概述”窗格的“私有 IP 范围”,选择默认值 IANA RFC 1918。
此时将打开“编辑专用 IP 前缀”页:
默认情况下,“IANAPrivateRanges”已配置。
编辑环境的专用 IP 地址范围,然后选择“保存”。
防火墙策略
- 选择资源组,然后选择防火墙策略。
- 在“设置”列中选择“专用 IP 范围(SNAT)” 。
- 在“执行 SNAT”下选择为环境执行 SNAT 的条件,以自定义 SNAT 配置。
- 选择应用。