利用 Azure NAT 网关缩放 SNAT 端口
Azure 防火墙为每个后端虚拟机规模集实例配置的每个公共 IP 地址提供 2,496 个 SNAT 端口(至少提供两个实例),最多可以关联 250 个公共 IP 地址。 根据体系结构和流量模式,使用此配置可能需要超过 1,248,000 个可用的 SNAT 端口。 例如,使用它来保护与 Microsoft 365 应用集成的大型 Azure 虚拟桌面部署。
使用大量公共 IP 地址的难题之一是存在下游 IP 地址筛选要求。 当 Azure 防火墙与多个公共 IP 地址关联时,需要对与其关联的所有公共 IP 地址应用筛选要求。 即使使用公共 IP 前缀,并需要关联 250 个公共 IP 地址以满足出站 SNAT 端口要求,也仍需要创建并允许 16 个公共 IP 前缀。
最好使用 Azure NAT 网关来缩放和动态分配出站 SNAT 端口。 它为每个公共 IP 地址提供 64,512 个 SNAT 端口,并且最多支持 16 个公共 IP 地址。 这实际上最多可提供 1,032,192 个出站 SNAT 端口。 Azure NAT 网关还在子网级别动态分配 SNAT 端口,因此其关联 IP 地址提供的所有 SNAT 端口都可按需使用,其作用是提供出站连接。
NAT 网关资源与 Azure 防火墙子网关联时,所有出站 Internet 流量会自动使用 NAT 网关的公共 IP 地址。 无需配置用户定义的路由。 对出站流的响应流量也通过 NAT 网关。 如果有多个 IP 地址与 NAT 网关相关联,则会随机选择 IP 地址。 无法指定要使用的地址。
此体系结构没有双重 NAT。 Azure 防火墙实例使用其专用 IP 地址(而不是 Azure 防火墙公共 IP 地址)将流量发送到 NAT 网关。
注意
不建议“使用区域冗余防火墙部署 NAT 网关”的部署选项,因为 NAT 网关的单个实例目前不支持区域性冗余部署。
此外,安全虚拟中心网络 (vWAN) 体系结构目前不支持 Azure NAT 网关集成。 必须使用中心虚拟网络体系结构进行部署。 有关在中心辐射型网络体系结构中将 NAT 网关与 Azure 防火墙集成的详细指导,请参阅 NAT 网关和 Azure 防火墙集成教程。 有关 Azure 防火墙体系结构选项的详细信息,请参阅什么是 Azure 防火墙管理器体系结构选项?。
将 NAT 网关与 Azure 防火墙子网关联 - Azure PowerShell
以下示例使用 Azure PowerShell 创建 NAT 网关并将其附加到 Azure 防火墙子网。
# Create public IP addresses
New-AzPublicIpAddress -Name public-ip-1 -ResourceGroupName nat-rg -Sku Standard -AllocationMethod Static -Location 'China East'
New-AzPublicIpAddress -Name public-ip-2 -ResourceGroupName nat-rg -Sku Standard -AllocationMethod Static -Location 'China East'
# Create NAT gateway
$PublicIPAddress1 = Get-AzPublicIpAddress -Name public-ip-1 -ResourceGroupName nat-rg
$PublicIPAddress2 = Get-AzPublicIpAddress -Name public-ip-2 -ResourceGroupName nat-rg
New-AzNatGateway -Name firewall-nat -ResourceGroupName nat-rg -PublicIpAddress $PublicIPAddress1,$PublicIPAddress2 -Location 'China East' -Sku Standard
# Associate NAT gateway to subnet
$virtualNetwork = Get-AzVirtualNetwork -Name nat-vnet -ResourceGroupName nat-rg
$natGateway = Get-AzNatGateway -Name firewall-nat -ResourceGroupName nat-rg
$firewallSubnet = $virtualNetwork.subnets | Where-Object -Property Name -eq AzureFirewallSubnet
$firewallSubnet.NatGateway = $natGateway
$virtualNetwork | Set-AzVirtualNetwork
将 NAT 网关与 Azure 防火墙子网关联 - Azure CLI
以下示例使用 Azure CLI 创建 NAT 网关并将其附加到 Azure 防火墙子网。
# Create public IP addresses
az network public-ip create --name public-ip-1 --resource-group nat-rg --sku standard
az network public-ip create --name public-ip-2 --resource-group nat-rg --sku standard
# Create NAT gateway
az network nat gateway create --name firewall-nat --resource-group nat-rg --public-ip-addresses public-ip-1 public-ip-2
# Associate NAT gateway to subnet
az network vnet subnet update --name AzureFirewallSubnet --vnet-name nat-vnet --resource-group nat-rg --nat-gateway firewall-nat