Azure 防火牆會針對每個後端虛擬機器擴展集執行個體 (至少 2 個執行個體),為每個已設定的公共 IP 位址提供 2,496 個 SNAT 連接埠,且您最多可以關聯 250 個公共 IP 位址。 視您的結構和流量模式而定,此設定可能需要超過 1,248,000 個可用的 SNAT 連接埠。 例如,當您使用它來保護與 Microsoft 365 應用程式整合的大型 Azure 虛擬桌面 部署時,
使用大量公共 IP 位址的其中一項挑戰,是下游 IP 位址篩選需求。 Azure 防火牆 本身不支援附加公共 IP 前綴,但它可以使用由公共 IP 前綴配置的個別標準 SKU 公共 IP 位址。 當 Azure 防火牆 與多個公共 IP 位址相關聯時,下游過濾必須允許所有與之相關的公共 IP 位址。 如果你從 公共 IP 前綴配置這些位址,就可以允許對應的前綴範圍,而不必逐一列出每個位址。
一個更優的方式來擴展和動態分配 SNAT 端口是使用 Azure NAT 閘道。 每個公共IP位址提供64,512個SNAT埠,並支援最多16個IPv4公共IP位址。 如此一來,就能有效提供多達 1,032,192 個輸出 SNAT 連接埠。 Azure NAT 閘道 也會動態分配子網層級的 SNAT 埠,因此其相關 IP 位址所提供的 SNAT 埠口皆可隨時開放,以提供出站連線。
當你將 NAT 閘道與 AzureFirewallSubnet 關聯時,防火牆的外出網路流量會使用該 NAT 閘道的公共 IP 位址。 你不需要額外的使用者定義路由(UDR),即可將該流量從防火牆經由 NAT 閘道傳送出去。 保留工作負載子網路路由,以將流量導向防火牆的私人 IP 位址進行檢查。 對外流的回應流量也會經過 NAT 閘道。 如果 NAT 閘道器有多個公共 IP 位址,則會隨機選擇一個位址。 你無法指定要用哪個地址。
此結構沒有雙重 NAT。 Azure 防火牆 實例會用他們的私人 IP 位址,而不是 Azure 防火牆 的公用 IP 位址,將流量傳送到 NAT 閘道。
在多個公共 IP 位址與 NAT 閘道器之間選擇
當你的防火牆 SNAT 埠口不足時,你可以選擇新增多個公共 IP 位址,或使用 NAT 閘道器:
- 當你對成本敏感且規模需求中等時,可以新增多個公共 IP 位址。 每個公共 IP 位址會為每個後端實例增加 2,496 個 SNAT 埠口,且最多可關聯 250 個公共 IP 位址。 相關步驟請參見「部署具有多個公共 IP 位址的 Azure 防火牆」。
- 當你需要跨子網動態分配 SNAT 埠時,可以使用 NAT 閘道器。 每個公共 IP 位址最多可支援 64,512 個 SNAT 埠口。
欲全面比較優缺點,請參閱 Azure 防火牆 效能最佳實務。
若要在入口網站中建立 StandardV2 NAT 閘道作為 Azure 防火牆 部署的一部分,請在進階標籤中選擇啟用 NAT 閘道。完整流程請參見「建立 Azure 防火牆 with a StandardV2 NAT 閘道」。 以下的 PowerShell 與 CLI 範例將標準 NAT 閘道與現有防火牆子網關聯起來。
備註
使用帶有區域冗餘防火牆的 StandardV2 NAT 閘道器。 標準 NAT 閘道不支援區域冗餘部署。 步驟請參見「整合 Azure 防火牆 與 NAT Gateway V2」。 欲了解更多關於 SKU 差異的資訊,請參見 NAT Gateway SKU skus。 Azure NAT 閘道 在安全的虛擬中樞(vWAN)中不被支援。 在 vWAN 架構中,應改為直接在分支虛擬網路上設定 NAT 閘道。 關於如何在樞紐虛擬網路中整合 NAT 閘道與防火牆的步驟,請參閱 NAT 閘道與 Azure 防火牆 整合教學。 欲了解更多關於Azure 防火牆架構選項的資訊,請參閱 有哪些 Azure 防火牆管理員 架構選項?
將 NAT 閘道與 Azure 防火牆子網路關聯 - Azure PowerShell
以下範例使用 Azure PowerShell 建立並附加一個帶有 Azure 防火牆 子網的 NAT 閘道。
# Create public IP addresses
New-AzPublicIpAddress -Name public-ip-1 -ResourceGroupName nat-rg -Sku Standard -AllocationMethod Static -Location 'South Central US'
New-AzPublicIpAddress -Name public-ip-2 -ResourceGroupName nat-rg -Sku Standard -AllocationMethod Static -Location 'South Central US'
# 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 'South Central US' -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 建立並附加一個帶有 Azure 防火牆 子網的 NAT 閘道。
# 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 --sku standard
# Associate NAT gateway to subnet
az network vnet subnet update --name AzureFirewallSubnet --vnet-name nat-vnet --resource-group nat-rg --nat-gateway firewall-nat