通告特定的虛擬私有雲子網路

您可以建立自訂的通告路徑,限制 Cloud Router 在虛擬私人雲端 (VPC) 網路中通告的子網路。內部部署用戶端只能看到您通告的子網路,除非您將 Cloud Router 設為通告所有子網路,否則 Cloud Router 不會動態通告新的子網路。如果您選擇只通告特定子網路,且想通告新的子網路,則必須將這些子網路新增為自訂通告路徑。

針對啟用 IPv6 的 BGP 工作階段,您可以為特定內部 (ULA) 和外部 (GUA) IPv6 子網路範圍設定自訂通告路徑。如要瞭解 IPv6 子網路類型,請參閱「IPv6 子網路範圍」。

如要在建立 Cloud Router 或設定 BGP 工作階段時指定自訂廣告路徑,請參閱「建立 Cloud Router」或「建立 BGP 工作階段」。

事前準備

gcloud

如要使用本指南中的指令列範例,請完成下列事項:

  1. 安裝或更新至最新版 Google Cloud CLI
  2. 設定預設地區和區域

API

如要使用本指南提供的 API 範例,請設定 API 存取權

在 Cloud Router 上指定自訂通告路徑

如要在現有的 Cloud Router 上指定自訂公告路徑,請按照下列步驟操作。

主控台

  1. 前往 Google Cloud 控制台的「Cloud Routers」頁面。

    前往 Cloud Router

  2. 選取要更新的 Cloud Router。

  3. 在「路由器詳細資料」頁面中,按一下 「編輯」

  4. 在「公告路徑」部分,針對「路徑」選取「建立自訂路徑」

  5. 如果已選取「公告向 Cloud Router 公開的所有子網路」核取方塊,請取消選取。

  6. 選取「新增自訂路徑」,即可新增自訂通告路徑。

  7. 設定自訂廣告路徑:

    • 來源:選取預先定義的子網路清單。Cloud Router 會根據 VPC 網路的動態轉送模式,列出所有可用的子網路。
    • 「IP 位址範圍」:您可以修改通告的子網路 IP 範圍。例如,您可以指定較小的範圍,讓 Cloud Router 只通告子網路的一部分。您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,IPv6 自訂範圍只會在啟用 IPv6 的 BGP 工作階段中宣傳。

      如果您提供 IP 位址前置字元,但未提供子網路遮罩,系統會將其解讀為 IPv4 的 /32 子網路遮罩,以及 IPv6 的 /128。如要瞭解最多可擁有的自訂學習路徑數量,請參閱「限制」一文。

    • 「說明」:加上說明以識別這個自訂廣告路徑的目的,然後按一下「完成」

  8. 新增自訂通告路徑完畢後,請按一下「儲存」

gcloud

開始前,請記下要通告的子網路 IP 範圍。

請執行 update 指令。如要指定要通告的子網路 IP 範圍,請使用 --set-advertisement-ranges 標記。如要將 IP 範圍附加到現有廣告,請使用 --add-advertisement-ranges 標記。

  1. 使用 --set-advertisement-ranges 標記,即可取代現有的所有自訂廣告路徑:

    gcloud compute routers update ROUTER_NAME \
       --advertisement-mode custom \
       --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    更改下列內容:

    • ROUTER_NAME:Cloud Router 的名稱

    • ADVERTISED_IP_RANGES:新 IP 位址範圍陣列的內容。您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,IPv6 自訂範圍只會在啟用 IPv6 的 BGP 工作階段中宣傳。

      如果您提供 IP 位址前置字元,但未提供子網路遮罩,系統會將其解讀為 IPv4 的 /32 子網路遮罩,以及 IPv6 的 /128。如要瞭解最多可擁有的自訂學習路徑數量,請參閱「限制」一文。

    以下示範如何更新 my-router Cloud Router,使其通告 192.0.2.0/24198.51.100.0/24 子網路;現有的自訂通告路徑會遭到取代:

    gcloud compute routers update my-router \
       --advertisement-mode=custom \
       --set-advertisement-ranges='192.0.2.0/24,198.51.100.0/24'
    

    以下示範如何更新 my-router Cloud Router,以通告 192.0.2.0/24198.51.100.0/24 IPv4 子網路,以及 2001:db8:abcd:12::/64 IPv6 子網路:

    gcloud compute routers update my-router \
       --advertisement-mode=custom \
       --set-advertisement-ranges='192.0.2.0/24,198.51.100.0/24,2001:db8:abcd:12::/64'
    

    Cloud Router 只會在已啟用 IPv6 的 BGP 工作階段中宣傳 IPv6 範圍。

  2. 以下範例使用 --add-advertisement-ranges 標記,將 IP 範圍附加到現有廣告:

    gcloud compute routers update my-router \
       --add-advertisement-ranges='203.0.113.0/24'
    

    以下範例會將 2001:db8:abcd:12::/64 自訂 IPv6 範圍新增至 Cloud Router 的廣告:

    gcloud compute routers update my-router \
       --add-advertisement-ranges='2001:db8:abcd:12::/64'
    

    Cloud Router 只會在已啟用 IPv6 的 BGP 工作階段中宣告 IPv6 範圍。

如果 Cloud Router 的通告群組包括所有子網路,請將這個群組移除,以防止 Cloud Router 通告其他子網路。通告群組是 Cloud Router 動態通告的 Google 定義 IP 範圍。如需所有通告群組的清單,請參閱 Google SDK 說明文件中的 set-advertisement-groups 標記。

  1. 以下範例使用 describe 指令檢查 Cloud Router 的通告路徑:

    gcloud compute routers describe my-router
    
  2. 如果輸出內容包含的 advertisedGroups 欄位顯示 all_subnets 值,請移除。以下範例使用 update 指令,並加上 --remove-advertisement-groups 旗標:

    gcloud compute routers update my-router \
       --remove-advertisement-groups all_subnets
    

API

請使用 routers.patch 方法更新 bgp.advertisedIpRanges[] 欄位。如果 bgp.advertisedGroups[] 欄位的值目前為 ALL_SUBNETS,您可能也需要更新該欄位。

bgp.advertisedGroups[]bgp.advertisedIpRanges[] 欄位可接受宣傳群組和宣傳 IP 位址範圍的陣列。PATCH 這些欄位時,您會在要求中將現有的陣列覆寫為新的陣列。

  1. 傳送 GET 要求,取得路由器上目前的廣告群組陣列和廣告 IP 範圍。詳情請參閱「查看 Cloud Router 狀態和路徑」。

  2. 傳送 PATCH 要求,其中包含新的廣告群組和廣告 IP 位址範圍陣列:

    • 將路由器上所需的任何子網路 IP 位址範圍新增至 bgp.advertisedIpRanges[] 欄位。
    • 如果 advertisedGroups[] 欄位目前指定 ALL_SUBNETS 值,請傳送空陣列來移除該值,如以下範例所示。這樣 Cloud Router 就不會通告其他子網路。
    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgp": {
        "advertisedGroups": [],
        "advertisedIpRanges": [
        ADVERTISED_IP_RANGES
       ]
     }
    }
    

    更改下列內容:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION:Cloud Router 所在的區域
    • ROUTER_NAME:Cloud Router 的名稱
    • ADVERTISED_IP_RANGES:新 IP 位址範圍陣列的內容。除了 IPv4 位址範圍外,您也可以指定 IPv6 自訂 IP 位址範圍。不過,只有在您為此 BGP 工作階段啟用 IPv6 交換功能時,才會宣傳 IPv6 範圍。

    如果您提供 IP 位址前置字元,但未提供子網路遮罩,系統會將其解讀為 IPv4 的 /32 子網路遮罩,以及 IPv6 的 /128。如要瞭解最多可擁有的自訂已知路徑數量,請參閱「限制」一節。

    以下範例包含兩個子網路 IPv4 位址範圍和一個 IPv6 位址範圍:

        {
          "range": "192.0.2.0/24",
          "description": "First example range"
        },
        {
          "range": "198.51.100.0/24",
          "description": "Second example range"
        },
        {
          "range": "2001:db8:abcd:12::/64",
          "description: "Third example range"
        }
    

為 BGP 工作階段指定自訂通告路徑

如要為現有 BGP 工作階段指定自訂通告路徑,請按照下列步驟操作。

主控台

  1. 前往 Google Cloud 控制台的「Cloud Routers」頁面。

    前往 Cloud Router

  2. 選取您要更新的 BGP 工作階段所屬的 Cloud Router。

  3. 在「路由器詳細資料」頁面中,選取要更新的 BGP 工作階段。

  4. 在「BGP 工作階段詳細資料」頁面中,按一下 「編輯」

  5. 在「路徑」部分,選取「建立自訂路徑」

  6. 如果已選取「公告向 Cloud Router 公開的所有子網路」核取方塊,請取消選取。

  7. 選取 [新增自訂路徑] 以新增通告路徑。

  8. 設定自訂廣告路徑:

    • 來源:選取預先定義的子網路清單。Cloud Router 會根據 VPC 網路的動態轉送模式,列出所有可用的子網路。

    • 「IP 位址範圍」:您可以修改通告的子網路 IP 範圍。例如,您可以指定較小的範圍,讓 Cloud Router 只通告子網路的一部分。除了 IPv4 位址範圍外,您也可以指定 IPv6 自訂 IP 位址範圍。不過,只有在您為此 BGP 工作階段啟用 IPv6 交換功能時,才會宣傳 IPv6 範圍。

      如果您提供 IP 位址前置字元,但未提供子網路遮罩,系統會將其解讀為 IPv4 的 /32 子網路遮罩,以及 IPv6 的 /128。如要瞭解最多可擁有的自訂已知路徑數量,請參閱「限制」一節。

    • 「說明」:加上說明以識別這個自訂廣告路徑的目的,然後按一下「完成」

  9. 新增自訂路徑後,按一下「儲存」

gcloud

開始前,請記下要通告的子網路 IP 範圍。

請執行 update-bgp-peer 指令。如要指定要通告的子網路 IP 範圍,請使用 --set-advertisement-ranges 標記。如要將 IP 範圍附加到現有廣告,請使用 --add-advertisement-ranges 標記。

  1. 使用 --set-advertisement-ranges 標記;即可取代現有的所有自訂通告:

    gcloud compute routers update-bgp-peer ROUTER_NAME \
       --peer-name=PEER_NAME \
       --advertisement-mode=custom \
       --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    更改下列內容:

    • ROUTER_NAME:Cloud Router 的名稱
    • PEER_NAME:BGP 對等點名稱
    • 如果您要新增自訂 IPv6 範圍,可以選擇新增 --enable-ipv6 旗標。
    • ADVERTISED_IP_RANGES:新 IP 位址範圍陣列的內容。您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,IPv6 自訂範圍只會在啟用 IPv6 的 BGP 工作階段中宣傳。

      如果您提供 IP 位址前置字元,但未提供子網路遮罩,系統會將其解讀為 IPv4 的 /32 子網路遮罩,以及 IPv6 的 /128。如要瞭解最多可擁有的自訂已知路徑數量,請參閱「限制」一節。

    以下示範如何更新 my-router Cloud Router 上的 my-bgp-session BGP 工作階段,以通告 192.0.2.0/24198.51.100.0/242001:db8:abcd:12::/64 子網路;現有的自訂通告路徑會遭到取代:

    gcloud compute routers update-bgp-peer my-router \
       --peer-name my-bgp-session \
       --enable-ipv6 \
       --advertisement-mode=custom \
       --set-advertisement-ranges='192.0.2.0/24,198.51.100.0/24,2001:db8:abcd:12::/64'
    
  2. 以下範例使用 --add-advertisement-ranges 標記,將 IP 範圍附加到現有廣告:

    gcloud compute routers update-bgp-peer my-router \
       --peer-name my-bgp-session \
       --add-advertisement-ranges='203.0.113.0/24'
    

    以下範例會將 2001:db8:abcd:12::/64 自訂 IPv6 位址新增至 Cloud Router 的廣告路徑:

    gcloud compute routers update-bgp-peer my-router \
        --peer-name my-bgp-session \
        --enable-ipv6 \
        --add-advertisement-ranges='2001:db8:abcd:12::/64'
    

如果 BGP 工作階段的通告群組包括所有子網路,請將這個群組移除,以防止 Cloud Router 通告其他子網路。通告群組是 Cloud Router 動態通告的 Google 定義 IP 範圍。如需所有通告群組的清單,請參閱 Google SDK 說明文件中的 set-advertisement-groups 標記。

  1. 以下範例使用 describe 指令檢查 Cloud Router 的通告路徑:

    gcloud compute routers describe my-router
    
  2. 如果相關 BGP 工作階段包含的 advertisedGroups 欄位顯示 all_subnets 值,請移除。以下範例使用 update 指令並加上 --remove-advertisement-groups 標記:

    gcloud compute routers update-bgp-peer my-router \
       --peer-name my-bgp-session \
       --remove-advertisement-groups=all_subnets
    

API

使用 routers.patch 方法更新 bgpPeers[] 欄位。

bgpPeers[] 欄位可接受 BGP 對等端陣列。當您 PATCH 這個欄位時,您會將要求中包含的新陣列覆寫現有的 BGP 同端陣列。

  1. 傳送 GET 要求,取得路由器目前的 BGP 對等互連陣列。詳情請參閱「查看 BGP 工作階段設定」。

  2. 傳送 PATCH 要求,並附上新的 BGP 對等點陣列。針對您要新增自訂通告路徑的每個 BGP 對等點,請執行下列操作:

    • 將您要的任何子網路 IP 位址範圍廣告新增至 bgpPeers[].advertisedIpRanges[] 欄位。

      如果您提供 IP 位址前置字元,但未提供子網路遮罩,系統會將其解讀為 IPv4 的 /32 子網路遮罩,以及 IPv6 的 /128。如要瞭解最多可擁有的自訂已知路徑數量,請參閱「限制」一節。

    • 如果 bgpPeers[].advertisedGroups[] 欄位目前指定 ALL_SUBNETS 值,請將其移除,以防止 BGP 工作階段宣傳其他子網路。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgpPeers": [
        BGP_PEERS
      ]
    }
    

    更改下列內容:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION:Cloud Router 所在的區域
    • ROUTER_NAME:Cloud Router 的名稱
    • BGP_PEERS:BGP 同級節點的新陣列內容

    以下範例包含兩個 BGP 同級節點,其中包含自訂的廣告路徑:

        {
          "name": "peer-1",
          "interfaceName": "if-peer-1",
          "ipAddress": "169.254.10.1",
          "peerIpAddress": "169.254.10.2",
          "peerAsn": 64512,
          "enableIpv6": true,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedGroups": [],
          "advertisedIpRanges": [
            {
              "range": "192.0.2.0/24",
              "description": "First example subnet"
            },
            {
              "range": "198.51.100.0/24",
              "description": "Second example subnet"
            },
            {
              "range": "2001:db8:abcd:12::/64",
              "description: "Third example subnet"
            }
          ]
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedGroups": [],
          "advertisedIpRanges": [
            {
              "range": "203.0.113.0/24",
              "description": "Fourth example subnet"
            }
          ]
        }
    

後續步驟