設定別名 IP 範圍

本文件說明如何使用 Google Cloud Platform 主控台和 gcloud 指令列工具,來設定別名 IP 位址和別名 IP 範圍。在執行這些指令前,請先參閱別名 IP 總覽頁面。

限制

子網路

  • 每個子網路允許最多 5 個次要 IP 範圍。
  • 您無法同時新增「及」移除次要範圍,新增及移除作業必須以個別的步驟完成。
  • 次要範圍不支援 CIDR 擴展。

VM 執行個體

  • 所有 VM 網路介面皆支援別名 IP 範圍。系統是針對主要網路介面上的別名 IP 範圍自動設定轉送方式,而非次要介面。如果您有多個網路介面,則必須針對額外的介面設定政策路由
  • VM 執行個體虛擬介面最多可以有 10 個指派的別名 IP 範圍。
  • 您可以新增或刪除別名 IP 範圍,但無法更新。
  • 如果您從一個 VM 中移除別名 IP 範圍,並將其指派給另一個 VM,轉移作業可能最多需要一分鐘才能完成。
  • 別名 IP 位址不支援防火牆來源標記。這代表在防火牆規則中設定來源標記時,來源標記會比對 VM 主要 IP 位址,而不是別名 IP 位址。使用來源範圍允許或拒絕來自別名 IP 位址的輸入流量。
  • 內部 DNS 會將 VM 名稱解析為其主要 IP。系統不會自動設定別名 IP 的其他名稱,但您可以透過手動方式新增名稱。

虛擬私人雲端網路

  • 虛擬私人雲端網路在所有 VM 中最多可以有 7000 個別名 IP 範圍。
  • 同時新增或移除大量的別名 IP 範圍可能會花費很長的時間。舉例來說,新增或刪除 7000 個別名 IP 範圍可能最多需要 10 分鐘。
  • 自動模式虛擬私人雲端網路無法在具有次要子網路範圍的情況下刪除。
  • 在靜態路徑中,下一個躍點的 IP 位址必須是 VM 的主要 IP 位址。系統不支援使用別名 IP 位址做為下一個躍點的 IP 位址。
  • 系統不支援 IPv6 位址。
  • 僅限虛擬私人雲端網路支援別名 IP 範圍,舊版網路則不支援。如要確定您的網路類型,請列出您的網路。虛擬私人雲端網路具有 customauto 兩種模式,舊版網路則具有 legacy 模式。

子網路指令

您必須從子網路擁有的範圍中指派 VM 別名 IP 範圍,且該子網路必須為 VM 所在的位置。所有子網路都有主要範圍,這是定義子網路的內部 IP 位址標準範圍。子網路可能也有一或多個內部 IP 位址的次要 IP 範圍。您可以從子網路的主要或次要範圍指派別名 IP 範圍。

您必須為每個次要範圍命名,且這些名稱在子網路中不得重複。將別名 IP 範圍指派給 VM 時,次要範圍名稱會告知 GCP 該從哪個子網路範圍指派別名 IP。

在 VPC 網路的所有子網路中,以及透過 VPC 網路對等互連、VPN 或互連網路連結的任何網路中,所有主要及次要範圍皆不得重複。

本節說明如何建立具有次要範圍的子網路、將次要範圍新增到現有子網路,或是從子網路中移除次要範圍。子網路具有您要使用的範圍後,請參閱 VM 執行個體指令,瞭解指派範圍到 VM 的操作說明。

建立具有一或多個次要 CIDR 範圍的子網路

這個指令假設您已經擁有 VPC 網路。如果沒有 VPC 網路,請先進行建立作業。

無論您是針對 VM 的主要介面或是其中一個次要介面建立子網路,使用的指令都是相同的。

使用次要範圍分配別名 IP 能讓您區隔 VM 中託管服務的 IP 空間,並可更輕鬆地建立防火牆規則,僅允許 VM 上所執行服務的存取權及封鎖 VM 主要 IP 位址的存取權。

主控台

  1. 前往 Google Cloud Platform 主控台的「VPC 網路」頁面。
    前往 VPC 網路頁面
  2. 按一下現有網路的名稱。
  3. 按一下 [新增子網路]
  4. 輸入新子網路的「名稱」
  5. 指定「地區」
  6. 以 CIDR 標記法輸入「IP 位址範圍」(範例:10.65.61.0/24)。
  7. 按一下 [建立次要 IP 範圍]
  8. 輸入「子網路範圍名稱」
  9. 以 CIDR 標記法輸入「次要 IP 範圍」(範例:10.9.0.0/24)。
  10. 如要新增額外的次要 IP 範圍,針對每個範圍,請按一下 [Add IP range] (新增 IP 範圍) 並提供名稱和範圍。
  11. 按一下 [Add] (新增)

gcloud

gcloud compute networks subnets create s1 \
    --network [NETWORK_NAME] \
    --region [REGION] \
    --range 10.65.61.0/24 \
    --secondary-range [RANGE_NAME]=[RANGE_CIDR][,[RANGE_NAME]=[RANGE_CIDR]...]

其中

  • [NETWORK_NAME] 是您要建立子網路的網路名稱。
  • [REGION] 是您要建立子網路的地區。
  • [RANGE_NAME]=[RANGE_CIDR] 是您要擷取別名 IP 範圍的次要範圍名稱及別名 IP 範圍本身。範例:range1=10.9.0.0/24

如需完整語法,請參閱 gcloud 說明文件

將次要 CIDR 範圍新增至現有子網路

在本程序中,我們假設您有想要使用的子網路,但您必須新增一或多個次要範圍。

無論您是針對 VM 的主要介面或是其中一個次要介面建立子網路,使用的指令都是相同的。

使用次要範圍分配別名 IP 可讓您更輕鬆地建立防火牆規則,允許在 VM 上所執行服務的存取權,但不允許 VM 主要 IP 位址的存取權。

主控台

使用 gcloud 指令。

gcloud

gcloud compute networks subnets update [SUBNET_NAME] \
    --region [REGION] \
    --add-secondary-ranges [RANGE_NAME]=[RANGE_CIDR],[[RANGE_NAME]=[RANGE_CIDR],...]

其中

  • [SUBNET_NAME] 是您要新增次要範圍的子網路名稱。
  • [REGION] 是您要建立子網路的地區。
  • [RANGE_NAME]=[RANGE_CIDR] 是您要擷取別名 IP 範圍的次要範圍名稱及別名 IP 範圍本身。範例:range1=10.9.0.0/24

如需完整語法,請參閱 gcloud 說明文件

從子網路中移除次要 CIDR 範圍

主控台

使用 gcloud 指令。

gcloud

gcloud compute networks subnets update [SUBNET_NAME] \
    --region [REGION] \
    --remove-secondary-ranges [RANGE_NAME],[[RANGE_NAME],...]

其中

  • [SUBNET_NAME] 是您要移除次要範圍的子網路名稱。
  • [REGION] 是您要建立子網路的地區。
  • [RANGE_NAME] 是您要擷取別名 IP 範圍的次要範圍名稱及別名 IP 範圍本身。範例:range1=10.9.0.0/24

如需完整語法,請參閱 gcloud 說明文件

具有單一介面的 VM 適用的 VM 執行個體指令

這些指令說明如何建立具有別名 IP 範圍的執行個體、將一或多個別名 IP 範圍新增至現有的 VM 執行個體,或是從現有 VM 執行個體中移除一或多個範圍。

在主要 CIDR 範圍中建立具有別名 IP 範圍的 VM

如要從子網路的主要範圍中指派別名 IP 範圍,請使用本程序。您選擇的範圍必須尚未由 VPC 網路上的其他任何資源使用,即便是一部分也不行。

如要讓執行個體的主要介面和別名 IP 位址位於相同的範圍,請使用本程序。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往「VM instances」(VM 執行個體) 頁面
  2. 按一下 [建立執行個體]
  3. 輸入新執行個體的「名稱」
  4. 指定「區域」
  5. 按一下 [管理、安全性、磁碟、網路、單獨租用]
  6. 按一下 [Networking] (網路) 分頁標籤。
  7. 在「Network interfaces」(網路介面) 區段中,按一下主要介面旁的編輯 (鉛筆圖示) 按鈕。
  8. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  9. 將「子網路範圍」的設定保留為「主要」
  10. 以 CIDR 標記法輸入「Alias IP range」(別名 IP 範圍),這個範圍必須是主要範圍的未使用子範圍。
  11. 按一下 [Create] (建立)

gcloud

gcloud compute instances create vm1 \
    --zone [ZONE] \
    --network-interface "subnet=[SUBNET_NAME],aliases=[RANGE_CIDR][;[RANGE_CIDR];...]"

其中

  • [ZONE] 是要包含執行個體的區域。
  • [SUBNET_NAME] 是您要移除次要範圍的子網路名稱。
  • [RANGE_CIDR] 是要從主要子網路指派給介面的 IP 範圍。此範圍可以是特定範圍 (192.168.100.0/24)、單一 IP 位址 (192.168.100.1) 或 CIDR 格式 (/24) 的網路遮罩。如果只有網路遮罩指定 IP 範圍,IP 分配器會選擇具有指定網路遮罩的可用範圍,並將該範圍分配給網路介面。如要指定多個範圍,請以分號 (;) 分隔範圍。

如需完整語法,請參閱 gcloud 說明文件

在次要 CIDR 範圍中建立具有別名 IP 範圍的 VM

如要指派從子網路的次要範圍取得的別名 IP 範圍,請使用本程序。將別名 IP 範圍與子網路的主要範圍隔開可讓您更輕鬆地建立防火牆規則,允許在 VM 上所執行服務的存取權,但不允許 VM 主要 IP 位址的存取權。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往「VM instances」(VM 執行個體) 頁面
  2. 按一下 [建立執行個體]
  3. 輸入新執行個體的「名稱」
  4. 指定「區域」
  5. 按一下 [管理、安全性、磁碟、網路、單獨租用]
  6. 按一下 [Networking] (網路) 分頁標籤。
  7. 在「Network interfaces」(網路介面) 區段中,按一下主要介面旁的編輯 (鉛筆圖示) 按鈕。
  8. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  9. 選取具有次要範圍的 [Subnetwork] (子網路)
  10. 在「Subnet range」(子網路範圍) 底下,選取您要使用的 [Secondary IP range] (次要 IP 範圍)
  11. 以 CIDR 標記法輸入「Alias IP range」(別名 IP 範圍),此範圍必須是次要 IP 範圍的未使用範圍。
  12. 按一下 [Create] (建立)

gcloud

gcloud compute instances create vm3 \
    --zone [ZONE] \
    --network-interface subnet=[SUBNET_NAME],aliases=[RANGE_NAME]:[RANGE_CIDR]
 

其中

  • [ZONE] 是要包含執行個體的區域。
  • [SUBNET_NAME] 是要包含執行個體的子網路名稱。
  • [RANGE_NAME] 是您要擷取別名 IP 範圍的子網路次要範圍名稱。
  • [RANGE_CIDR] 是要指派給介面的 IP 範圍。此範圍可以是特定範圍 (192.168.100.0/24)、單一 IP 位址 (192.168.100.1) 或 CIDR 格式 (/24) 的網路遮罩。如果只有網路遮罩指定 IP 範圍,IP 分配器會選擇具有指定網路遮罩的可用範圍,並將該範圍分配給網路介面。

如需完整語法,請參閱 gcloud 說明文件

將別名 IP 範圍新增至現有的執行個體

您可以將別名 IP 範圍新增至執行中的執行個體。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往 VM 執行個體頁面
  2. 在現有執行個體的名稱上按一下。
  3. 按一下 [Edit] (編輯)
  4. 在網路介面「nic0」或您要修改的網路介面上按一下。
  5. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  6. 按一下 [新增別名 IP 範圍]
  7. 指定子網路 CIDR 範圍。
  8. 輸入別名 IP 範圍。
  9. 按一下 [Done] (完成)
  10. 按一下 [儲存]

gcloud

gcloud compute instances network-interfaces update [INSTANCE_NAME] \
    --zone [ZONE] \
    [--network-interface [NETWORK_INTERFACE]; default="nic0"]
    --aliases "[RANGE_NAME]:[RANGE_CIDR];[[RANGE_NAME]:[RANGE_CIDR],...]"
  • [ZONE] 是包含執行個體的區域。
  • [RANGE_NAME] 是您要擷取別名 IP 範圍的子網路次要範圍名稱。如要從子網路的主要範圍指派範圍,請省略這個值。
  • [RANGE_CIDR] 是要指派給介面的 IP 範圍。此範圍可以是特定範圍 (192.168.100.0/24)、單一 IP 位址 (192.168.100.1) 或 CIDR 格式 (/24) 的網路遮罩。如果只有網路遮罩指定 IP 範圍,IP 分配器會選擇具有指定網路遮罩的可用範圍,並將該範圍分配給網路介面。

如需完整語法,請參閱 gcloud 說明文件

修改現有執行個體的別名 IP 範圍

您可以將更多的別名 IP 範圍新增至現有執行個體,或移除一或多個範圍。

  • 如要新增範圍,請執行指令並指定所有現有及新的別名 IP 範圍。您可以使用分號將組合分開。範例:--aliases "[CURRENT_RANGE_NAME]:[CURRRENT_RANGE_CIDR];[NEW_RANGE_NAME]:[NEW_RANGE_CIDR]"

  • 如要移除範圍,請執行指令並僅指定您要保留的別名 IP 範圍。如要保留次要範圍中的範圍,您必須指定次要範圍的名稱。CIDR 範圍可以是特定範圍 (192.168.100.0/24) 或單一 IP 位址 (192.168.100.1)。範例:--aliases "[RANGE_NAME]:[RANGE_CIDR];[RANGE_CIDR]"

  • 如要移除所有範圍,請執行指令並指定 --alias 標記,但是請使用雙引號提供空白的輸入內容。範例:--aliases ""

  • 您無法在同一個 gcloud 指令中新增及移除範圍。如要移除某些範圍並使用 gcloud 指令列介面新增其他範圍,請先執行指令來移除不需要的範圍,然後再次執行指令來新增需要的範圍。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往 VM 執行個體頁面
  2. 在現有執行個體的名稱上按一下。
  3. 按一下 [Edit] (編輯)
  4. 在網路介面「nic0」或您要修改的網路介面上按一下。
  5. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  6. 如要新增別名 IP 範圍,請按一下 [Add Alias IP range] (新增別名 IP 範圍)
  7. 如要移除別名 IP 範圍,請在別名 IP 範圍旁的「X」上按一下。
  8. 按一下 [Done] (完成)
  9. 按一下 [儲存]

gcloud

gcloud compute instances network-interfaces update [INSTANCE_NAME] \
    --zone [ZONE] \
    --aliases "[RANGES_TO_RETAIN];[[NEW_RANGE_NAME]:[NEW_RANGE_CIDR];...]"
  • [ZONE] 是包含執行個體的區域。
  • [RANGES_TO_RETAIN] 是您要保留的現有範圍,格式為:[CURRENT_RANGE_NAME]:[CURRRENT_RANGE_CIDR]。如要將範圍新增至沒有任何範圍的執行個體,這些值將會是空白的。如要移除執行個體中的所有範圍,整個 --alias 欄位將會是空白的。
  • [NEW_RANGE_NAME] 是您要擷取任何新別名 IP 範圍的子網路次要範圍名稱。如要從子網路的主要範圍指派範圍,請省略這個值。
  • [NEW_RANGE_CIDR] 是要指派給介面的 IP 範圍。此範圍可以是特定範圍 (192.168.100.0/24)、單一 IP 位址 (192.168.100.1) 或 CIDR 格式 (/24) 的網路遮罩。如果只有網路遮罩指定 IP 範圍,IP 分配器會選擇具有指定網路遮罩的可用範圍,並將該範圍分配給網路介面。

如需完整語法,請參閱 gcloud 說明文件

具有多個介面的 VM 適用的 VM 執行個體指令

建立具有多個介面和別名 IP 位址的 VM

本範例會建立兩個網路且分別各有一個子網路,以及在兩個網路中都具有介面的 VM。如果您已經擁有兩個 VPC 網路,可移至「建立 VM 執行個體」步驟。

主控台

建立第一個網路和子網路:

  1. 前往 Google Cloud Platform 主控台的「VPC 網路」頁面。
    前往「VPC networks」(虛擬私人雲端網路) 頁面
  2. 按一下 [建立 VPC 網路]
  3. 輸入 my-network1 的「Name」(名稱)
  4. 將「Subnet creation mode」(子網路建立模式) 設為 Custom 後,指定 my-subnet1 的子網路「Name」(名稱)
  5. 指定「Region」(地區)
  6. 將「IP address range」(IP 位址範圍) 設為 172.16.1.0/24
  7. 按一下 [建立次要 IP 範圍]
  8. 將「Subnet range name」(子網路範圍名稱) 設為 range1
  9. 將「Secondary IP range」(次要 IP 範圍) 設為 10.1.0.0/16
  10. 按一下 [Done] (完成)
  11. 按一下 [Create] (建立)。

建立第二個網路和子網路:

  1. 前往 Google Cloud Platform 主控台的「VPC 網路」頁面。
    前往「VPC networks」(虛擬私人雲端網路) 頁面
  2. 按一下 [建立 VPC 網路]
  3. 輸入 my-network2 的「Name」(名稱)
  4. 將「Subnet creation mode」(子網路建立模式) 設為 Custom 後,指定 my-subnet2 的子網路「Name」(名稱)
  5. 按照您在第一個網路和子網路中所做的設定,指定相同的「Region」(地區)
  6. 將「IP address range」(IP 位址範圍) 設為 172.16.2.0/24
  7. 按一下 [建立次要 IP 範圍]
  8. 將「Subnet range name」(子網路範圍名稱) 設為 range2
  9. 將「Secondary IP range」(次要 IP 範圍) 設為 10.2.0.0/16
  10. 按一下 [Done] (完成)
  11. 按一下 [Create] (建立)。

建立在兩個網路中都具有介面的 VM:

  1. 前往 Google Cloud Platform 主控台的「VM 執行個體」頁面。
    前往 VM 執行個體頁面
  2. 按一下 [建立執行個體]
  3. 將區域設為您建立子網路的地區。
  4. 按一下 [管理、安全性、磁碟、網路、單獨租用]
  5. 按一下 [網路]
  6. 在第一個網路介面上按一下。
  7. 將「Network」(網路) 設為 my-network1
  8. 將「Subnetwork」(子網路) 設為 my-subnet1
  9. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  10. 按一下 [新增別名 IP 範圍]
  11. 將「Subnet range」(子網路範圍) 設為 Primary
  12. 將「Alias IP range」(別名 IP 範圍) 設為 /32
  13. 按一下 [新增 IP 範圍]
  14. 將「Subnet range」(子網路範圍) 設為 range1
  15. 將「Alias IP range」(別名 IP 範圍) 設為 /24
  16. 按一下 [Done] (完成)
  17. 按一下 [新增網路介面]
  18. 選取 my-network2
  19. 將「Subnetwork」(子網路) 設為 my-subnet2
  20. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  21. 按一下 [新增別名 IP 範圍]
  22. 將「Subnet range」(子網路範圍) 設為 Primary
  23. 將「Alias IP range」(別名 IP 範圍) 設為 /32
  24. 按一下 [新增 IP 範圍]
  25. 將「Subnet range」(子網路範圍) 設為 range2
  26. 輸入 /24 的「Alias IP range」(別名 IP 範圍)
  27. 按一下 [Done] (完成)
  28. 按一下 [Create] (建立)。

gcloud

  1. 建立第一個網路:

    gcloud compute networks create my-network1 --subnet-mode CUSTOM
    
  2. 新增子網路:

    gcloud compute networks subnets create my-subnet1 \
        --network my-network1 \
        --range 172.16.1.0/24 \
        --secondary-range range1=10.1.0.0/16
    
  3. 建立第二個網路:

    gcloud compute networks create my-network2 --subnet-mode CUSTOM
    
  4. 新增子網路:

    gcloud compute networks subnets create my-subnet2 \
        --network my-network2 \
        --range 172.16.2.0/24 \
        --secondary-range range2=10.2.0.0/16
    
  5. 建立在兩個網路中都具有介面的 VM。在 my-subnet1 中列出的第一個網路介面為主要介面:

    gcloud compute instances create multi-nic-alias-vm \
        --machine-type f1-micro \
        --network-interface "subnet=my-subnet1,aliases=/32;range1:/24" \
        --network-interface "subnet=my-subnet2,aliases=/32;range2:/24"
    
  6. 使用顯示指令查看介面及其位址:

    gcloud compute instances describe multi-nic-alias-vm
    
    ...
    networkInterfaces:
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.1.2/32
      - ipCidrRange: 10.1.0.0/24
        subnetworkRangeName: range1
      name: nic0
      network: .../networks/my-network1
      networkIP: 172.16.1.3
      subnetwork: .../subnetworks/my-subnet1
      ...
    - ...
      aliasIpRanges:
      - ipCidrRange: 172.16.2.2/32
      - ipCidrRange: 10.2.0.0/24
        subnetworkRangeName: range2
      name: nic1
      network: .../networks/my-network2
      networkIP: 172.16.2.3
      subnetwork: .../subnetworks/my-subnet2
      

將別名 IP 位址新增至具有多個介面的 VM

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往 VM 執行個體頁面
  2. 在現有執行個體的名稱上按一下。
  3. 按一下 [Edit] (編輯)
  4. 在網路介面「nic0」或您要新增別名 IP 範圍的網路介面上按一下。
  5. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  6. 按一下 [新增別名 IP 範圍]
  7. 指定「子網路範圍」
  8. 輸入別名 IP 範圍。
  9. 按一下 [Done] (完成)
  10. 按一下 [儲存]

gcloud

新增至主要介面:

gcloud compute instances network-interfaces update multi-nic-alias-vm \
    --aliases "range1:10.1.0.0/24;172.16.1.2/32;/32"

新增至次要介面:

gcloud compute instances network-interfaces update multi-nic-alias-vm \
    --aliases "range2:10.2.0.0/24;172.16.2.2/32;/32" \
    --network-interface nic1

從具有多個介面的 VM 中移除別名 IP 範圍

主控台

  1. 前往 Google Cloud Platform 主控台的「VM instances」(VM 執行個體) 頁面。
    前往 VM 執行個體頁面
  2. 在現有執行個體的名稱上按一下。
  3. 按一下 [Edit] (編輯)
  4. 在網路介面「nic0」或您要新增別名 IP 範圍的網路介面上按一下。
  5. 按一下 [Show alias IP ranges] (顯示別名 IP 範圍)
  6. 在您要移除的別名 IP 範圍旁,按一下 [X]
  7. 按一下 [Done] (完成)
  8. 按一下 [儲存]

gcloud

從主要介面移除:

gcloud compute instances network-interfaces update multi-nic-alias-vm \
    --aliases ""

從次要介面移除:

gcloud compute instances network-interfaces update multi-nic-alias-vm \
    --aliases "" \
    --network-interface nic1

疑難排解

無法建立具有別名 IP 的 VM 執行個體

  1. 確認網路是否為虛擬私人雲端網路,舊版網路並不支援別名 IP。

    gcloud compute networks list --filter="name=[NETWORK_NAME]"
    

    網路 MODE 應為「自動」或「自訂」。

  2. 如果已指定子網路範圍名稱,請確認下列事項:

    gcloud compute networks subnets describe [SUBNET_NAME] --region=[REGION]
    
    • 子網路具有包含對應名稱的次要範圍
    • 要求的別名 IP 範圍位在這個次要範圍內。如果是使用網路遮罩,則要求的別名 IP 範圍應小於主要範圍。
  3. 如果尚未指定子網路範圍名稱,請確認要求的別名 IP 範圍位在主要子網路範圍內。如果是使用網路遮罩,則要求的別名 IP 範圍應小於主要範圍。

無法連線至別名 IP

  1. 確認防火牆規則。

    1. 列出所有防火牆規則:

      gcloud compute firewall-rules list --format=json
      
    2. 確認允許進出別名 IP 的流量。

    3. 視情況需要,新增防火牆規則來允許對別名 IP 進行連線偵測 (ping):

      gcloud compute firewall-rules create [FIREWALL_NAME1] \
        --network [NETWORK_NAME] --priority 0 --source-ranges [ALIAS_IP] \
        --allow icmp
      
      gcloud compute firewall-rules create [FIREWALL_NAME2] \
        --network [NETWORK_NAME] --priority 0 --direction out \
        --destination-ranges [ALIAS_IP] --allow icmp
      
  2. 確保 VM 將 IP 別名範圍辨認為本機。在 Debian 等 Linux 發行版上,這通常可以按照下列做法完成。

    1. 連線至執行個體並執行這個指令:

      ip route show table local
      

      輸出應包含下列內容:

      local [ALIAS_IP_RANGE] dev eth0  proto 66  scope host
      
    2. 如果沒有本機路徑,請使用這個指令進行設定:

      ip route add to local [ALIAS_IP_RANGE] dev eth0 proto 66
      

系統未列出我的次要 IP 範圍

系統不會將次要 IP 範圍列為一般的子網路。如要顯示已建立的子網路次要 IP 範圍,請使用 gcloud compute networks subnets describe 指令。

  1. 建立子網路。

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. 列出您的子網路。

    gcloud compute networks subnets list
    
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  3. 取得子網路的相關詳細資料以查看次要範圍。

    gcloud compute networks subnets describe my-subnet --region us-central1
    
    ...
    ipCidrRange: 10.9.0.0/16
    ...
    secondaryIpRanges:
    - ipCidrRange: 172.16.0.0/12
      rangeName: secondaryrange1
    ...
    

指定的子網路次要範圍並不存在。

在建立 VM 時,如果您收到指出次要範圍並不存在的錯誤訊息,請確認下列事項:

  • 子網路具有包含指定名稱的次要範圍。
  • 您在具有次要範圍的子網路中建立 VM。

如要查看這個錯誤訊息,請執行下列指令:

  1. 建立具有次要範圍的子網路。

    gcloud compute networks subnets create my-subnet \
        --region us-central1 \
        --network my-network \
        --range 10.9.0.0/16 \
        --secondary-range secondaryrange1=172.16.0.0/12
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet].
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  2. 在其他網路 (例如預設網路) 中建立執行個體,而不要在新建立的子網路中建立。

    gcloud compute instances create instance-1 \
        --zone us-central1-a \
        --network default
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-1].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-1  us-central1-a  n1-standard-1               10.128.0.2     47.82.96.9  RUNNING
    
  3. 嘗試透過您在步驟 1 建立的子網路指派別名 IP 範圍。由於次要範圍位於與執行個體不同的子網路中,因此指令將會失敗。

    gcloud compute instances network-interfaces update instance-1 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    
    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges[0].subnetworkRangeName': 'secondaryrange'. The specified subnetwork secondary range does not exist.
    
  4. 建立另一個執行個體,這個執行個體的介面位於您在步驟 1 建立的子網路中。

    gcloud compute instances create instance-2 \
        --zone us-central1-a \
        --network-interface subnet=my-subnet
    
    Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-2].
    NAME        ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    instance-2  us-central1-a  n1-standard-1               10.9.0.2     38.74.204.89  RUNNING
    
  5. 將別名 IP 範圍新增至介面。由於介面和次要範圍位於同一個子網路中,因此這次指令會成功執行。

    gcloud compute instances network-interfaces update instance-2 \
        --zone us-central1-a \
        --aliases secondaryrange1:172.16.0.10/32
    
    Updating network interface [nic0] of instance [instance-2]...done.
    

無法在同一個要求中新增及移除次要 IP 範圍。

系統目前不支援在同一個指令中新增及移除子網路次要 IP 範圍。新增及移除次要範圍的 gcloud 指令將會保留未經修改的現有範圍。

如要新增及移除範圍,請個別執行兩個指令。

gcloud compute networks subnets update [SUBNET_NAME] \
    --add-secondary-ranges [RANGE_NAME]=[RANGE_CIDR],[[RANGE_NAME]=[RANGE_CIDR],...]
gcloud compute networks subnets update  [SUBNET_NAME] \
    --remove-secondary-ranges [RANGE_NAME],[[RANGE_NAME],...]

如要查看更多有關這個指令的詳細資料,請使用 gcloud compute networks subnets update --help

無法同時新增及移除別名 IP 範圍

系統目前不支援在同一個要求中新增及移除 VM 別名 IP 範圍。

更新別名 IP 範圍的 gcloud 指令「不會」保留現有的範圍,因此省略範圍會視為刪除該範圍的要求。

舉例來說,如果目前的 VM 具有 10.9.27.0/24 別名範圍且要求的新範圍為 /24,則執行要求 /24 的指令會遭到拒絕,因為系統會將指令解讀為移除 10.9.27.0/24 及新增 /24。您必須先明確移除現有的範圍,才能新增新的範圍。

範例:

  1. 建立別名 IP 範圍。

    gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
    
  2. 嘗試在不指定現有範圍的情況下新增 /24 會發生下列錯誤。

    gcloud compute instances network-interfaces update vm --aliases "/24"
    ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges': ''. Cannot simultaneously add and remove alias IP ranges.
    
  3. 將 VM 更新為不具有別名 IP 範圍。

    gcloud compute instances network-interfaces update vm --aliases ""
    Updating network interface [nic0] of instance [vm]...done.
    
  4. 新增新的別名 IP 範圍。

    gcloud compute instances network-interfaces update vm --aliases "/24"
    Updating network interface [nic0] of instance [vm]...done.
    

如要查看更多有關這個指令的詳細資料,請使用 gcloud compute instances network-interfaces update --help

防火牆規則來源標記和來源服務帳戶

防火牆來源服務帳戶和來源標記只能擴展到相符執行個體的主要網路 IP,並且不適用於相符執行個體的別名 IP。因此,以來源標記為基礎的防火牆規則不會影響來自執行個體別名 IP 位址的流量。您可以將別名 IP 位址新增到防火牆規則,做為來源或目的地範圍。

具有多個介面和別名 IP 範圍的 VM 相關問題

詳情請參閱多個介面的疑難排解

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
虛擬私人雲端