共用方式為

使用 Azure PowerShell 部署具有多个公共 IP 地址的Azure Firewall

此功能支持以下方案:

  • DNAT - 您可以将多个标准端口实例映射到您的后端服务器。 例如,如果你有两个公共 IP 地址,可以为这两个 IP 地址映射 TCP 端口 3389 (RDP)。
  • SNAT - 其他端口可用于出站 SNAT 连接,以减少 SNAT 端口耗尽的可能性。 Azure Firewall随机选择用于连接的第一个源公共 IP 地址,并在第一个 IP 中的端口耗尽后选择另一个公共 IP。 如果你在网络中进行任何下游筛选,则需要允许与防火墙关联的所有公共 IP 地址。 请考虑使用公共 IP 地址前缀来简化此配置。

可以通过Azure门户、Azure PowerShell、Azure CLI、REST 和模板访问具有多个公共 IP 地址的Azure Firewall。 可以在中心虚拟网络中部署最多 250 个公共 IP 地址的Azure Firewall。 然而,DNAT 目标规则也计入最大值 250。 使用“自带公共 IP”地址策略的 Azure Firewall 在 VHUB 部署中的限制为 250 个地址,而在经典 VHUB 部署中限制为 80 个公共 IP 地址。

注意

在流量和吞吐量较大的情况下,建议使用 NAT 网关 提供出站连接。 SNAT 端口在与 NAT 网关关联的所有公共 IP 之间动态分配。 若要了解详细信息,请参阅 integrate NAT Gateway with Azure Firewall

以下Azure PowerShell示例演示如何为Azure Firewall配置、添加和删除公共 IP 地址。

重要

无法从Azure Firewall公共 IP 地址配置页中删除第一个 IP 配置。 如果要修改 IP 地址,请使用Azure PowerShell。

创建具有两个或更多公共 IP 地址的防火墙

此示例创建一个附加到虚拟网络 myVirtualNetwork 的防火墙,其中包含两个公共 IP 地址。 使用 Get-AzVirtualNetwork 检索现有的虚拟网络 ,New-AzPublicIpAddress 创建每个公共 IP 地址,使用 New-AzFirewall 部署具有两个 IP 的防火墙。

$rgName = "resourceGroupName"

$vnet = Get-AzVirtualNetwork `
  -Name "vnet" `
  -ResourceGroupName $rgName

$pip1 = New-AzPublicIpAddress `
  -Name "AzFwPublicIp1" `
  -ResourceGroupName "rg" `
  -Sku "Standard" `
  -Location "chinaeast" `
  -AllocationMethod Static

$pip2 = New-AzPublicIpAddress `
  -Name "AzFwPublicIp2" `
  -ResourceGroupName "rg" `
  -Sku "Standard" `
  -Location "chinaeast" `
  -AllocationMethod Static

New-AzFirewall `
  -Name "azFw" `
  -ResourceGroupName $rgName `
  -Location chinaeast `
  -VirtualNetwork $vnet `
  -PublicIpAddress @($pip1, $pip2)

将公共 IP 地址添加到现有防火墙

在此示例中,公共 IP 地址 azFwPublicIp1 将附加到防火墙。

$pip = New-AzPublicIpAddress `
  -Name "azFwPublicIp1" `
  -ResourceGroupName "rg" `
  -Sku "Standard" `
  -Location "chinaeast" `
  -AllocationMethod Static

$azFw = Get-AzFirewall `
  -Name "AzureFirewall" `
  -ResourceGroupName "rg"

$azFw.AddPublicIpAddress($pip)

$azFw | Set-AzFirewall

从现有防火墙中删除公共 IP 地址

在此示例中,公共 IP 地址 azFwPublicIp1 将与防火墙分离。

$pip = Get-AzPublicIpAddress `
  -Name "azFwPublicIp1" `
  -ResourceGroupName "rg"

$azFw = Get-AzFirewall `
  -Name "AzureFirewall" `
  -ResourceGroupName "rg"

$azFw.RemovePublicIpAddress($pip)

$azFw | Set-AzFirewall

后续步骤