Azure 防火墙 SNAT 专用 IP 地址范围

Azure 防火墙为所有到公共 IP 地址的出站流量提供 SNAT 功能。 默认情况下,当目标 IP 地址位于每个 IANA RFC 19180 的专用 IP 地址范围或每个 IANA RFC 65981 的共享地址空间时,Azure 防火墙不会使用网络规则 SNAT。 应用程序规则始终使用透明代理进行源网络地址转换

将流量直接路由到 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来指定防火墙的私有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