Azure 防火墙为所有到公共 IP 地址的出站流量提供 SNAT 功能。 默认情况下,当目标 IP 地址位于每个
将流量直接路由到 Internet 时,此默认行为适用。 在某些情况下,您可能需要覆盖默认的 SNAT 行为:
- 如果启用强制隧道,Azure 防火墙会将指向互联网的流量通过 SNAT 转换为其在 AzureFirewallSubnet 中的专用 IP 地址之一,从而隐藏您本地防火墙的流量源。
- 如果贵组织在专用网络中使用 IANA RFC 1918 或 IANA RFC 6598 之外的已注册 IP 地址范围,Azure 防火墙会将流量 SNAT 到 AzureFirewallSubnet 中的一个防火墙专用 IP 地址。 可以将 Azure 防火墙 配置为不对公共 IP 地址范围执行 SNAT。 例如,将单个 IP 地址指定为
x.x.x.x或将 IP 地址范围指定为x.x.x.x/24。
可以通过以下方式更改 Azure 防火墙 SNAT 行为:
- 若要将 Azure 防火墙 配置为网络规则处理的 SNAT 流量从不考虑目标 IP 地址,请使用 0.0.0.0/0 作为专用 IP 地址范围。 使用此配置,Azure 防火墙无法将流量直接路由到 Internet。
- 若要将防火墙配置为 始终 由网络规则处理的 SNAT 流量,而不考虑目标地址,请使用 255.255.255.255/32 作为专用 IP 地址范围。
- 可以将 Azure 防火墙 配置为每小时自动学习已注册和专用的 IP 范围,并使用学习到的路由进行 SNAT。 此预览功能需要Azure 路由服务器部署在与Azure 防火墙相同的虚拟网络中。
重要
- 专用地址范围配置仅适用于网络规则。 应用程序规则始终使用 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 地址范围。
注意
对于与防火墙策略关联的防火墙,会忽略防火墙 PrivateRange 属性。 你必须按照 firewallPolicies 选项卡中的说明,在 SNAT 中使用 属性。
新建防火墙
对于使用经典规则的新防火墙,请使用以下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 防火墙需要现有的虚拟网络和公共 IP 地址。 有关完整部署指南,请参阅 使用 Azure PowerShell 部署和配置 Azure 防火墙。 -
IANAPrivateRanges扩展到Azure 防火墙上的当前默认值,而其他范围则添加到其中。 若要在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
- Azure CLI
- ARM 模板
- Azure 门户
使用Azure CLI来指定防火墙的私有IP地址范围。
注意
CLI --private-ranges 选项仅适用于使用经典规则的防火墙。 对于与防火墙策略相关的防火墙,可以使用ARM模板或Azure门户来配置SNAT范围。
新建防火墙
对于使用经典规则的新防火墙,请使用以下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 防火墙需要额外的配置步骤来创建公共 IP 地址和 IP 配置。 有关完整部署指南,请参阅 部署并使用 Azure CLI 配置 Azure 防火墙。 - Azure 防火墙将
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