共用方式為


Azure 中的預設輸出存取權限

在 Azure 中,當你在沒有明確定義的外接連線方式的虛擬網路中部署虛擬機(VM)時,Azure 會自動指派一個出站公網 IP 位址。 此 IP 位址可啟用從資源到因特網和 Microsoft 內其他公用端點的輸出連線。 這項存取稱為預設輸出存取。

虛擬機器的明確輸出連線範例包括:

  • 部署在與 NAT 閘道相關聯的子網路中。
  • 部署在標準負載平衡器的後端集區中,並定義輸出規則。
  • 部署在基本公用負載平衡器的後端集區中。
  • 具有公用 IP 位址的虛擬機器與這些都明確相關聯。

明確輸出選項的圖表。

提供預設輸出存取的方式和時間

如果部署虛擬機器 (VM) 時沒有明確的輸出連線方法,Azure 會為其指派預設輸出公用 IP 位址。 此 IP 稱為預設輸出存取 IP,由 Microsoft 擁有,可能會變更,恕不另行通知。 不建議用於生產工作負載。

預設外部存取決策樹的圖表。

附註

在某些情況下,即使已設定明確輸出方法 (例如 NAT 閘道或 UDR 將流量導向至 NVA/防火牆),仍會將預設輸出 IP 指派給非私人子網路中的虛擬機器。 這並不表示除非移除這些明確方法,否則會將預設的輸出 IP 用於出口。 若要完全移除預設的輸出 IP,子網路必須為私人,而且虛擬機器必須停止並解除配置。

重要

2026 年 3 月 31 日之後,新的虛擬網路將預設使用私人子網路,這表示必須啟用明確的輸出方法,才能連線到因特網和 Microsoft 內的公用端點。 如需詳細資訊,請參閱官方公告。 建議您使用下一節所討論的其中一種明確連線形式。 對於其他問題,請參閱「常見問題集:私人子網路的預設行為變更」一節。

安全性:預設網際網路存取與零信任原則相矛盾。
清晰度:顯式連線比隱式存取更受歡迎。
穩定性:預設輸出 IP 不是客戶擁有的,可能會變更,導致潛在的中斷。

使用預設輸出存取時無法運作的設定範例:

  • VM 上的多個 NIC 可能會產生不一致的輸出 IP
  • 調整 Azure 虛擬機器規模集可能會導致更改外部 IP 地址
  • 傳出 IP 在虛擬機器擴展集執行個體之間並不一致或連續。

此外:

  • 默認輸出存取IP不支援分散的封包
  • 默認輸出存取IP不支援ICMP Ping

如何轉換至公用連線的明確方法 (以及停用預設輸出存取)?

私人子網概觀

  • 建立子網路為私人可防止子網路上的任何虛擬機器利用預設輸出存取來連線到公用端點。
  • 私人子網路上的 VM 仍然可以使用明確的輸出連線來存取因特網 (或 Microsoft 內的任何公用端點)。

    附註

    某些服務無法在私人子網路中的虛擬機器上運作,而沒有明確的輸出方法 (範例是 Windows 啟用和 Windows 更新) 。

如何設定專用子網路

  • 從 Azure 入口網站 中,選取子網路,然後選取核取方塊以啟用私人子網路,如下所示:

Azure 入口網站的螢幕擷取畫面,其中顯示 [私人子網] 選項。

  • 使用 PowerShell 時,下列腳本會採用資源群組和虛擬網路的名稱,並迴圈查看每個子網以啟用私人子網。
$resourceGroupName = ""
$vnetName = ""
 
$vnet = Get-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Name $vnetName
 
foreach ($subnet in $vnet.Subnets) {
    if ($subnet.DefaultOutboundAccess -eq $null) {
        $subnet.DefaultOutboundAccess = $false
        Write-Output "Set 'defaultoutboundaccess' to \$false for subnet: $($subnet.Name)"
    } 
    elseif ($subnet.DefaultOutboundAccess -eq $false) {
        # Output message if the value is already $false
        Write-Output "already private for subnet: $($subnet.Name)"
    }
}
Set-AzVirtualNetwork -VirtualNetwork $vnet
az network vnet subnet update --resource-group rgname --name subnetname --vnet-name vnetname --default-outbound false
  • 使用 Azure Resource Manager 範本,將 defaultOutboundAccess 參數的值設定為 "false"
{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vnetName": {
      "type": "string",
      "defaultValue": "testvm-vnet"
    },
    "subnetName": {
      "type": "string",
      "defaultValue": "default"
    },
    "subnetPrefix": {
      "type": "string",
      "defaultValue": "10.1.0.0/24"
    },
    "vnetAddressPrefix": {
      "type": "string",
      "defaultValue": "10.1.0.0/16"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2023-11-01",
      "name": "[parameters('vnetName')]",
      "location": "westus2",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vnetAddressPrefix')]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('subnetName')]",
            "properties": {
              "addressPrefix": "[parameters('subnetPrefix')]",
              "defaultoutboundaccess": false
            }
          }
        ]
      }
    }
  ]
}

專用子網路的限制

  • 若要啟動或更新虛擬機作系統,例如 Windows,則需要明確的輸出連線方法。

  • 在使用使用者定義路由 (UDR) 的組態中,任何已配置的具有下一個躍點類型Internet的路由都會在私人子網路中發生中斷。

    • 常見的範例是使用 UDR 將流量導向上游網路虛擬設備/防火牆,但會為特定的 Azure 服務標籤設定例外,以略過檢查。 這是透過將路由設定到這些 Service Tags,並將下一跳類型設定為 Internet 來完成的。 在此情境下,你需要設定以下內容:

      • 目的地 0.0.0.0/0 的預設路由,在一般案例中會套用下一個躍點類型的虛擬設備。

      • 一或多個路由會設定為具有下一個躍點類型 Internet,以略過 NVA/ 防火牆。 除非連線來源也設定明確的出站連接方式,否則嘗試連接這些目的地的嘗試會失敗,因為私有子網預設無法提供出站存取。

    • 這項限制不適用於使用服務端點,其使用不同的下一個躍點類型 VirtualNetworkServiceEndpoint。 請參閱 虛擬網路服務端點。

  • 在沒有輸出的明確方法的情況下,虛擬機器仍可以存取私人子網路中相同區域的 Azure 儲存體帳戶。 建議使用 NSG 來控制出口連線能力。

  • 私人子網路不適用於用來裝載 PaaS 服務的委派或受控子網路。 在這些案例中,輸出連線是由個別服務所管理。

重要

當負載平衡器後端集區依 IP 位址設定時,由於持續的已知問題,它會使用預設輸出存取。 針對預設安全配置和具有嚴苛輸出需求的應用程式,請將 NAT 閘道綁定到您的負載平衡器後端集區中的 VM,以保護流量。 深入了解現有的已知問題

新增明確的輸出方法

  • 使 NAT 閘道與虛擬機器的子網路產生關聯。 請注意,這是大部分案例的建議方法。
  • 建立已設定輸出規則的標準負載平衡器關聯性。
  • 將標準公用 IP 與任何虛擬機器的網路介面建立關聯。
  • 將防火牆或網路虛擬設備 (NVA) 新增至虛擬網路,並使用使用者定義路由 (UDR) 將流量指向它。

針對虛擬機器擴展集使用彈性編排模式

  • 彈性擴展集預設是安全的。 任何透過彈性擴展集建立的執行個體都沒有與其相關聯的預設輸出存取 IP,因此需要明確的輸出方法。 如需詳細資訊,請參閱虛擬機器擴展集的彈性協調流程模式

常見問題集:清除預設輸出 IP 警示

為什麼我會看到警示,顯示我的 VM 上有預設的輸出 IP?

有一個 NIC 層級的參數(defaultOutboundConnectivityEnabled),用來追蹤預設的外部 IP 是否分配給虛擬機/虛擬機器規模集實例。 這用來產生 VM / 虛擬機 Scale Set 的 Azure 入口區橫幅,標示此狀態。 您的訂閱也有特定的 Azure Advisor 建議包含此資訊。 如果您想查看哪些虛擬機器或虛擬機器規模組合已分配了預設的出站 IP,請依照以下步驟操作:

  1. 在 Azure 入口網站的搜尋欄輸入「Advisor」,然後在跳出時選擇這個選項。
  2. 選擇“卓越運營”
  3. 請尋找建議「新增明確傳出方法以停用預設傳出」和/或「新增明確傳出方法以停用虛擬機器擴展集的預設傳出」(注意這是兩個不同的項目)
  4. 如果存在其中任何一個,選取相應的建議名稱,您將會看到所有已啟用預設傳出的虛擬機器/虛擬機器擴展集執行個體的網路介面卡 (NIC)。

如何清除此警示?

  1. 必須對被標記的 VM/虛擬機器擴展集使用明確的傳出方法。 請參閱上一節,以了解不同的選項。
  2. 子網路應該為私人,以防止建立新的預設輸出 IP。
  3. 子網路中具有該旗標的任何適用虛擬機器都必須停止並解除配置,變更才能反映在 NIC 層級參數中並讓旗標清除。 (請注意,相反的情況也是如此;為了在將子網路層級參數設定為 false 之後,為機器提供預設的輸出 IP,虛擬機器需要停止/解除配置。)

我已在使用輸出的明確方法,為什麼仍會看到此警示?

在某些情況下,即使已設定明確輸出方法 (例如 NAT 閘道或 UDR 將流量導向至 NVA/防火牆),仍會將預設輸出 IP 指派給非私人子網路中的虛擬機器。 這並不表示除非移除這些明確方法,否則會將預設的輸出 IP 用於出口。 若要完全移除預設的輸出 IP (並移除警示),子網路必須為私人,而且虛擬機器必須停止並解除配置。

常見問題:私有子網路的預設行為變更

設為私有子網預設是什麼意思,將如何實作?

在 2026 年 3 月 31 日之後發佈的 API 版本中,新 VNET 中子網路的預設 OutboundAccess 屬性預設會設定為 "false"。 此變更預設會將子網路設為私人,並防止為這些子網路中的虛擬機器產生預設輸出 IP。 此行為適用於所有設定方法,即 ARM 範本、Azure 入口網站、PowerShell 和 CLI。 舊版的 ARM 範本 (或可指定舊版的 Terraform 等工具) 會繼續將 defaultOutboundAccess 設定為 null,這會隱含地允許輸出存取。

我現有的 VNET 和虛擬機器會發生什麼情況? 在現有 VNET 中建立的新虛擬機器怎麼樣?

不會對現有的 VNET 進行任何變更。 這表示這些 VNET 中現有的虛擬機器和新建立的虛擬機器都會繼續產生預設輸出 IP 位址,除非手動修改子網路變成私人。

新的虛擬網路部署呢? 我的基礎結構相依於預設輸出 IP,目前尚未準備好移至私人子網路。

您仍可以使用任何支援的方法 (ARM 範本、入口網站、CLI、PowerShell) 將子網路設定設定為非私人。 這可確保依賴預設輸出 IP 且尚未準備好轉換至私人子網路的基礎結構的相容性。

下一步

如需 Azure 中輸出連線的詳細資訊,請參閱: