排解具有多個網路介面的 VM 問題

本頁面提供疑難排解步驟,協助您解決建立及使用具備多個網路介面的 VM 時可能遇到的常見問題。

我無法建立具有多個介面的 VM

您可能會看見以下其中一則錯誤訊息:

  • Invalid value for field 'resource': ''. Too many network interfaces. The maximum number of network interfaces allowed for this machine type is.

    如果您看到這則錯誤訊息,表示您嘗試建立的介面數量超過執行個體機器類型支援的介面數量上限。請參閱介面數量上限表格。

  • Subnetworks must be distinct for NICs attached to a VM.

    如果收到這則訊息,表示您嘗試在同一個子網路中建立多個介面。每個網路介面都必須連接到不同的子網路。

  • Networks must be distinct for non-default NICs attached to a VM.

    如果您看到這則訊息,表示您正嘗試在同一網路中建立多個介面。瞭解下列資訊:

    • 如要將多個網路介面連接至相同的 VPC 網路,每個網路介面都必須連接至與 nic0 介面相同的網路。

    • 動態 NIC 或 Private Service Connect 介面不支援將多個網路介面連結至同一個虛擬私有雲網路。

  • Subnetwork CIDR ranges must be non-overlapping for NICs attached to a VM.

    如果您看到這則訊息,表示與 VM 介面建立關聯的 CIDR 範圍有所重疊。這些 CIDR 範圍包括與 VM 介面建立關聯的所有主要子網路範圍,以及用於別名 IP 範圍的次要範圍。每個介面都會連接至子網路,且不得與其他介面的子網路重疊。舉例來說,如果您正嘗試在 REGION_A 地區建立執行個體,則可利用以下指令或 Google Cloud 主控台檢查子網路的主要 CIDR 範圍。

    gcloud compute networks subnets list --regions REGION_A
    NAME                REGION      NETWORK          RANGE
    default             REGION_A  default          10.138.0.0/20
    overlapping-subnet  REGION_A  test-network     10.138.8.0/24
    

    如要檢查次要子網路 CIDR 範圍,請使用下列指令或 Google Cloud 控制台

    gcloud compute networks subnets describe overlapping-subnet --region REGION_A
    
    ...
    ipCidrRange: 10.128.8.0/24
    ...
    secondaryIpRanges:
    - ipCidrRange: 10.138.8.0/24
      rangeName: conflicting-range
    
  • Multiple network interfaces are not supported on legacy networks.

    如果您看到這則訊息,表示您正嘗試在舊版網路中建立執行個體。舊版網路不支援內含多個介面的執行個體。如要確認網路是否為舊版網路,請使用下列其中一種方法:

    • 前往 Google Cloud 控制台的「VPC Networks」(虛擬私有雲網路) 頁面,然後檢查「Mode」(模式) 欄。
    • 執行 gcloud compute networks list 指令,然後檢查 SUBNET_MODE 欄位。
  • Required 'compute.instances.create' permission for 'projects/PROJECT_ID/zones/ZONE/instances/test-inst'

    如果收到這則訊息,表示您登入的帳戶沒有建立執行個體所需的 IAM 權限。如要進一步瞭解建立執行個體所需的角色,請參閱「權限、身分與存取權管理 (IAM) 以及內含多個網路介面的執行個體」。您可以檢查與專案相關聯的 IAM 政策是否授予您下列任一角色:OWNEREDITORcompute.instanceAdmin.v1。如要在共用虛擬私有雲中建立執行個體,您還需要 compute.networkUser 角色。在下列範例中,帳戶 email2@gmail.com 的身分與存取權管理權限不足,無法建立執行個體。如需詳細的操作說明,請參閱身分與存取權管理指南中的授予、變更及撤銷資源的存取權

    gcloud projects get-iam-policy PROJECT_ID
    bindings:
    - members:
      - user:email1@gmail.com
        role: roles/owner
    - members:
      - serviceAccount:our-project-123@appspot.gserviceaccount.com
      - serviceAccount:123456789012-compute@developer.gserviceaccount.com
        role: roles/editor
    - members:
      - user:email2@gmail.com
        role: roles/viewer
    etag: BwUjMhXbSPU=
    version: 1
    

    您可以要求專案擁有者或編輯者授予您 OWNEREDITORcompute.instanceAdmin.v1 等任一角色。如果您要將任何介面與屬於共用虛擬私有雲的子網路建立關聯,也需要 compute.networkUser 角色。

    gcloud projects set-iam_policy --member user:email2@gmail.com --role roles/editor
    

我無法連線至次要介面的內部 IP 位址

  • 檢查防火牆規則,確認這類規則是否允許連線至 VM 次要介面。您可以查看連接至次要介面的網路的防火牆規則,方法包括前往 Google Cloud 主控台並按一下適當的虛擬私有雲端網路,或者使用下列 gcloud 指令。

    gcloud compute firewall-rules list --filter='network:NETWORK_NAME'
    
  • 檢查您是否正嘗試透過網址或從次要介面的網路外連線至該介面。您只能從介面所在的網路中連線至介面的內部 IP。如需從外部網路連線至該介面,您可以為次要介面指派外部 IP 位址。

  • 檢查您是否正嘗試透過對等網路或同一網路的其他子網路,從次要介面連接的子網路外連線至該介面的內部 IP。 您可以參閱每個執行個體的多個網路介面一節,瞭解虛擬私有雲對等互連與含有多個介面的 VM 執行個體之間如何交互作用。如要從次要介面的子網路外連線至該介面,您可能必須在 VM 上設定路徑。請參閱規格,詳細瞭解 DHCP 如何在 VM 中編排預設路徑。

  • 如要存取 IPv6 位址,請參閱「無法連線至次要介面的 IPv6 位址」。

我無法使用外部 IP 位址連線至次要介面

DHCP 伺服器只會在 VM 的主要網路介面上編排預設路徑。如要使用外部 IP 連線至次要介面,有兩種做法。如果只需從外部網路連線至次要網路介面,您可以在該網路介面上設定預設路徑。否則,您可以使用教學課程「為其他介面設定路由」中說明的做法,在 VM 中使用以來源為準的政策路由,設定個別的路由表。

如要存取 IPv6 位址,請參閱「無法連線至次要介面的 IPv6 位址」。

我無法連線至次要介面的 IPv6 位址

如果您嘗試存取 IPv6 位址,請確認 VM 已安裝 google-guest-agent 版本 20220603.00 以上版本。如要進一步瞭解如何管理 google-guest-agent 版本,請參閱「訪客環境」。

如果您使用舊版 google-guest-agent,次要介面不會收到 IPv6 子網路路徑。建議您更新訪客代理程式,確保路徑設定正確無誤。

不過,您可以建立啟動指令碼,為每個次要介面進行下列設定變更,做為替代方案。

sudo sysctl -w net.ipv6.conf.INTERFACE_NAME.accept_ra_rt_info_max_plen=128

INTERFACE_NAME 替換為介面名稱,例如 eth1ens5

我在使用 /32 以外的網路遮罩時遇到連線問題

根據預設,執行個體中繼資料伺服器只會回應預設閘道的 ARP 要求。

如要設定具有 /32 以外網路遮罩的介面,請使用 --guest-os-features MULTI_IP_SUBNET 旗標建立映像檔,並用來建立執行個體。舉例來說,如果您使用以 debian-9 為基礎的映像檔,可以使用下列指令建立映像檔:

gcloud compute images create debian-9-multi-ip-subnet \
     --source-disk debian-9-disk \
     --source-disk-zone ZONE_A \
     --guest-os-features MULTI_IP_SUBNET

如要查看映像檔上設定的訪客功能,請在訪客映像檔上執行 gcloud compute images describe 指令。

gcloud compute images describe debian-9-multi-ip-subnet

如要進一步瞭解如何建立自訂映像檔,請參閱「建立、刪除及淘汰自訂映像檔」。

我無法解析具備多個網路介面的 VM 的內部主機名稱

使用內部主機名稱執行 DNS 查詢時,該查詢會解析為執行個體的主要網路介面 (nic0)。

如果 nic0 所連結的 VPC 網路與發出 DNS 查詢的執行個體 VPC 網路不同,則 DNS 查詢會失敗。內部 DNS 僅在指定 VPC 網路中解析。詳情請參閱「Compute Engine 內部 DNS」。

更新執行個體屬性時,刪除動態 NIC 時發生錯誤

在極少數情況下,如果您在更新執行個體的屬性時刪除動態網路介面 (NIC),更新作業可能會失敗。失敗後,執行個體會還原為原始狀態。在極少數情況下,動態 NIC 可能會維持刪除狀態。

如果遇到這個問題,請按照下列步驟操作:

  • 如要解決問題:請使用相同的指令或要求,再次更新執行個體屬性。重新執行作業可確保執行個體達到您在原始要求中指定的狀態。

  • 如要防止問題再次發生:請勿透過更新執行個體屬性,從執行個體刪除動態 NIC。請改為直接刪除動態 NIC,詳情請參閱「刪除動態 NIC」。

更新 MIG 設定時,刪除動態 NIC 時發生錯誤

在極少數情況下,如果您在更新 MIG 中的執行個體設定時刪除動態 NIC,更新作業可能會失敗。失敗後,執行個體會還原為原始狀態。

Compute Engine 會自動重試更新作業,直到成功為止,藉此解決這個問題。您可以定期檢查代管執行個體的狀態,直到解決上次嘗試時發生的錯誤為止。

使用序列主控台來解決問題

建議您在 VM 上啟用序列控制台,以便偵錯與設定相關的問題。如要執行互動式偵錯,您可以按照使用序列主控台進行疑難排解中的步驟啟用序列主控台。