你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
此功能支持以下方案:
- DNAT - 您可以将多个标准端口实例映射到您的后端服务器。 例如,如果你有两个公共 IP 地址,可以为这两个 IP 地址映射 TCP 端口 3389 (RDP)。
- SNAT - 其他端口可用于出站 SNAT 连接,以减少 SNAT 端口耗尽的可能性。 Azure 防火墙随机选择用于连接的第一个源公共 IP 地址,并在第一个 IP 中的端口耗尽后选择另一个公共 IP。 如果你在网络中进行任何下游筛选,则需要允许与防火墙关联的所有公共 IP 地址。
可以通过 Azure 门户、Azure PowerShell、Azure CLI、REST 和模板访问具有多个公共 IP 地址的 Azure 防火墙。 你可以为部署在虚拟网络中的 Azure 防火墙 关联最多 250 个公共 IP 地址。 DNAT 目的地规则也计入 250 个上限。 对于部署在安全虚拟枢纽(VHub)中的 Azure 防火墙,你可以关联最多 80 个公共 IP 地址。
重要
Azure 防火墙本身不支持附加公共 IP 前缀,但它可以使用从公共 IP 前缀预配的单个标准 SKU 公网 IP 地址。
注意
添加多个公共 IP 地址是缩放 SNAT 端口的低成本方法。 在流量大和吞吐量较高的方案中,请改用 NAT 网关 来获取更具可缩放性的解决方案。 NAT 网关跨与之关联的所有公共 IP 动态分配 SNAT 端口。 有关详细信息,请参阅将 NAT 网关与Azure 防火墙集成,以及最佳做法中的选项比较。
以下 Azure PowerShell 示例显示如何配置、添加和删除 Azure 防火墙的公共 IP 地址。
重要
无法从 Azure 防火墙公共 IP 地址配置页中删除第一个 IP 配置。 若要修改 IP 地址,请使用 Azure PowerShell。
创建具有两个或更多公共 IP 地址的防火墙
此示例创建一个附加到虚拟网络 myVirtualNetwork 的防火墙,其中包含两个公共 IP 地址。 使用 Get-AzVirtualNetwork 检索现有的虚拟网络 ,New-AzPublicIpAddress 创建每个公共 IP 地址,使用 New-AzFirewall 部署具有两个 IP 的防火墙。
$rgName = "resourceGroupName"
$vnet = Get-AzVirtualNetwork `
-Name "myVirtualNetwork" `
-ResourceGroupName $rgName
$pip1 = New-AzPublicIpAddress `
-Name "AzFwPublicIp1" `
-ResourceGroupName $rgName `
-Sku "Standard" `
-Location "centralus" `
-AllocationMethod Static
$pip2 = New-AzPublicIpAddress `
-Name "AzFwPublicIp2" `
-ResourceGroupName $rgName `
-Sku "Standard" `
-Location "centralus" `
-AllocationMethod Static
New-AzFirewall `
-Name "azFw" `
-ResourceGroupName $rgName `
-Location centralus `
-VirtualNetwork $vnet `
-PublicIpAddress @($pip1, $pip2)
将公共 IP 地址添加到现有防火墙
在此示例中,公共 IP 地址 azFwPublicIp1 将附加到防火墙。 使用 New-AzPublicIpAddress 创建新的 IP、 Get-AzFirewall 来检索现有防火墙对象,使用 Set-AzFirewall 保存更新的配置。
$pip = New-AzPublicIpAddress `
-Name "azFwPublicIp1" `
-ResourceGroupName "rg" `
-Sku "Standard" `
-Location "centralus" `
-AllocationMethod Static
$azFw = Get-AzFirewall `
-Name "AzureFirewall" `
-ResourceGroupName "rg"
$azFw.AddPublicIpAddress($pip)
$azFw | Set-AzFirewall
从现有防火墙中删除公共 IP 地址
在此示例中,公共 IP 地址 azFwPublicIp1 将与防火墙分离。 使用 Get-AzPublicIpAddress 检索现有 IP、 Get-AzFirewall 检索防火墙对象,使用 Set-AzFirewall 保存更新的配置。
$pip = Get-AzPublicIpAddress `
-Name "azFwPublicIp1" `
-ResourceGroupName "rg"
$azFw = Get-AzFirewall `
-Name "AzureFirewall" `
-ResourceGroupName "rg"
$azFw.RemovePublicIpAddress($pip)
$azFw | Set-AzFirewall