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

对于发往公共 IP 地址的所有出站流量,Azure 防火墙提供 SNAT 功能。 默认情况下,如果目标 IP 地址在符合 IANA RFC 1918 的专用 IP 地址范围内或符合 IANA RFC 6598 的共享地址空间内,Azure 防火墙将不使用网络规则执行 SNAT。 应用程序规则始终使用透明代理进行源网络地址转换

将流量直接路由到 Internet 时,此逻辑非常有效。 但是,在一些情况下,你可能希望替代默认的 SNAT 行为。

  • 如果已启用强制隧道,会将 Internet 绑定的流量由 SNAT 转换为 AzureFirewallSubnet 中的某个防火墙专用 IP 地址,从而向本地防火墙隐藏源。
  • 如果组织对专用网络使用 IANA RFC 1918 或 IANA RFC 6598 外的注册 IP 地址范围,Azure 防火墙会通过 SNAT 将流量发送到 AzureFirewallSubnet 中的某个防火墙专用 IP 地址。 但是,可以将 Azure 防火墙配置为不 SNAT 公共 IP 地址范围。 例如,若要指定单个 IP 地址,可以按如下所示指定它:192.168.1.10。 若要指定 IP 地址范围,可以按如下所示指定它:192.168.1.0/24

可以通过以下方式更改 Azure 防火墙 SNAT 行为:

  • 要将 Azure 防火墙配置为无论目标 IP 地址为何都不会对网络规则处理的流量执行 SNAT,请使用0.0.0.0/0作为专用 IP 地址范围。 通过此配置,Azure 防火墙永远不能将流量直接路由到 Internet。

  • 要将防火墙配置为无论目标地址为何都始终对网络规则处理的流量执行 SNAT,请使用255.255.255.255/32作为专用 IP 地址范围。

重要

专用地址范围配置仅适用于网络规则。 目前,应用程序规则始终为 SNAT。

重要

若要指定自己的专用 IP 地址范围,并保留默认的 IANA RFC 1918 地址范围,请确保自定义列表仍包含 IANA RFC 1918 范围。

可以使用以下方法配置 SNAT 专用 IP 地址。 必须使用适用于配置的方法配置 SNAT 专用地址。 与防火墙策略关联的防火墙必须在策略中指定范围,而不是使用 AdditionalProperties

方法 使用经典规则 使用防火墙策略
Azure 门户 支持 支持
Azure PowerShell 配置 PrivateRange 目前不支持
Azure CLI 配置 --private-ranges 目前不支持
ARM 模板 在防火墙属性中配置 AdditionalProperties 在防火墙策略中配置 snat/privateRanges

配置 SNAT 专用 IP 地址范围 - Azure PowerShell

经典规则

可以使用 Azure PowerShell 为防火墙指定专用 IP 地址范围。

注意

对于与防火墙策略关联的防火墙,会忽略防火墙 PrivateRange 属性。 必须按照配置 SNAT 专用 IP 地址范围 - ARM 模板中所述,在 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 防火墙需要一个现有的 VNet 和公共 IP 地址。 有关完整的部署指南,请参阅使用 Azure PowerShell 部署和配置 Azure 防火墙

注意

将其他范围添加到 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

配置 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 防火墙需要额外的配置步骤来创建公共 IP 地址和 IP 配置。 有关完整的部署指南,请参阅使用 Azure CLI 部署和配置 Azure 防火墙

注意

将其他范围添加到 Azure 防火墙中时,IANAPrivateRanges 将扩展到 Azure 防火墙上的当前默认值。 若要在专用范围规范中保留 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"
},

防火墙策略

自 2020-11-01 API 版本起,与防火墙策略关联的 Azure 防火墙已支持 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 地址范围。

  1. 选择资源组,然后选择防火墙。

  2. 在“概述”页上的“专用 IP 范围”中,选择默认值“IANA RFC 1918” 。

    此时将打开“编辑专用 IP 前缀”页:

    编辑专用 IP 前缀的屏幕截图。

  3. 默认情况下,“IANAPrivateRanges”已配置。

  4. 编辑环境的专用 IP 地址范围,然后选择“保存”。

防火墙策略

  1. 选择资源组,然后选择防火墙策略。

  2. 在“设置”列中选择“专用 IP 范围(SNAT)” 。

  3. 在“执行 SNAT”下选择为环境执行 SNAT 的条件,以自定义 SNAT 配置。 专用 IP 范围 (SNAT) 的屏幕截图。

  4. 选择“应用”。

后续步骤