共用方式為

Azure Firewall SNAT 专用 IP 地址范围

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

将流量直接路由到 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 地址范围。

注意

对于与防火墙策略关联的防火墙,会忽略防火墙 PrivateRange 属性。 必须按照SNAT中所述,在firewallPolicies中使用属性。

新建防火墙

对于使用经典规则的新防火墙,请使用以下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 地址范围。

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

  2. “概述”窗格的“私有 IP 范围”,选择默认值 IANA RFC 1918

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

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

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

防火墙策略

  1. 选择资源组,然后选择防火墙策略。
  2. 在“设置”列中选择“专用 IP 范围(SNAT)” 。
  3. 在“执行 SNAT”下选择为环境执行 SNAT 的条件,以自定义 SNAT 配置。
  4. 选择应用

后续步骤