通告自訂地址範圍

在 Cloud Router 或 Cloud Router 的邊界閘道通訊協定 (BGP) 工作階段中,使用自訂通告模式,通告虛擬私有雲 (VPC) 網路子網路 IP 位址範圍以外的 IP 位址範圍。舉例來說,您可以發布外部 IP 位址範圍、任意內部 IP 位址範圍,或是與您虛擬私有雲網路連線的其他虛擬私有雲網路的 IP 位址範圍中的內部 IP 位址。您的虛擬私有雲網路可能透過虛擬私有雲網路對等互連或 Network Connectivity Center 中的虛擬私有雲輪輻連線。

如果 Cloud Router 設為使用預設通告模式,只會通告與 Cloud Router 屬於相同虛擬私有雲端網路的子網路路徑。在這個模式中,Cloud Router 會排除任何靜態路徑,以及從其他虛擬私有雲網路動態取得的路徑,例如透過虛擬私有雲網路對等互連或 NCC 中的虛擬私有雲網路節點取得的路徑。

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

事前準備

gcloud

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

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

API

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

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

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

控制台

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

    前往 Cloud Router

  2. 選取要更新的 Cloud Router。

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

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

  5. 選取「公告向 Cloud Router 公開的所有子網路」核取方塊,繼續公告 Cloud Router 可用的子網路。啟用這個選項後,即可模擬預設通告模式中 Cloud Router 的行為。

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

  7. 設定自訂 advertise 路由:

    • 來源:選取「Custom IP range」(自訂 IP 範圍)

    • 「IP 位址範圍」:使用 CIDR 標記法指定自訂 IP 範圍。

      您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。 不過,只有在啟用 IPv6 的 BGP 工作階段中,才會宣傳 IPv6 自訂範圍。

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

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

  8. 新增自訂 advertise 路由後,請按一下「Save」(儲存)

gcloud

請執行 update 指令。如要指定自訂 IP 範圍,請使用 --set-advertisement-ranges 標記或 --add-advertisement-ranges 標記。

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

    gcloud compute routers update ROUTER_NAME \
       --project=PROJECT_ID \
       --advertisement-mode custom \
       --set-advertisement-groups=ADVERTISED_GROUPS \
       --set-advertisement-ranges=ADVERTISED_IP_RANGES
    

    更改下列內容:

    • ROUTER_NAME:Cloud Router 的名稱
    • PROJECT_ID:包含 Cloud Router 的專案
    • ADVERTISED_GROUPS:Cloud Router 動態通告的 Google 定義群組

      唯一有效值為 all_subnets,這會根據 VPC 網路的動態轉送模式 (類似預設通告模式) 通告子網路。

    • ADVERTISED_IP_RANGES:新的 IP 位址範圍陣列內容

      您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,只有在啟用 IPv6 的 BGP 工作階段中,才會通告 IPv6 自訂範圍。

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

    以下範例會更新 my-router Cloud Router,以通告所有子網路和自訂 IP 範圍 192.0.2.0/24198.51.100.0/24

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

    以下範例會更新 my-router Cloud Router,以 advertise 所有子網路和預設 IPv6 範圍:

    gcloud compute routers update my-router \
       --advertisement-mode custom \
       --set-advertisement-groups=all_subnets \
       --set-advertisement-ranges='2001:db8:abcd:12::/64'
    

    只有在啟用 IPv6 的 BGP 工作階段中,Cloud Router 才會通告 IPv6 範圍。

    --set-advertisement-groups 標記接受 Cloud Router 動態通告的 Google 定義群組。您可以移除 --set-advertisement-groups 標記以排除子網路通告。如需所有通告群組的清單,請參閱 Google SDK 說明文件中的 set-advertisement-groups 標記。

  2. 使用 --add-advertisement-ranges 標記,Cloud Router 的通告模式必須先設為 custom

    gcloud compute routers update ROUTER_NAME \
       --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    更改下列內容:

    • ROUTER_NAME:Cloud Router 的名稱
    • ADVERTISED_IP_RANGES:新的 IP 位址範圍陣列內容

    下列範例會將 203.0.113.1 自訂 IP 位址新增至 Cloud Router 的通告:

    gcloud compute routers update my-router \
       --add-advertisement-ranges='203.0.113.1'
    

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

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

    只有在啟用 IPv6 的 BGP 工作階段中,Cloud Router 才會通告 IPv6 範圍。

API

使用 routers.patch 方法更新 bgp.advertisedGroups[]bgp.advertisedIpRanges[] 欄位。

bgp.advertisedGroups[]bgp.advertisedIpRanges[] 欄位會儲存廣告群組和廣告 IP 位址範圍的陣列。PATCH這些欄位時,系統會以要求中的新陣列覆寫現有陣列。

  1. 傳送 GET 要求,取得路由器上目前放送廣告的群組和 IP 位址範圍陣列。 詳情請參閱「查看 BGP 工作階段設定」。

  2. 傳送 PATCH 要求,其中包含新的廣告群組和廣告 IP 位址範圍陣列。使用上一步 GET 要求中的陣列,並在路由器上新增所需的任何群組或 IP 位址範圍。

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
    {
      "bgp": {
        "advertisedGroups": [
        "ADVERTISED_GROUPS"
       ],
        "advertisedIpRanges": [
        ADVERTISED_IP_RANGES
       ]
     }
    }
    

    更改下列內容:

    • PROJECT_ID:包含 Cloud Router 的專案
    • REGION:Cloud Router 所在的區域
    • ROUTER_NAME:Cloud Router 的名稱
    • ADVERTISED_GROUPS:Cloud Router 動態通告的 Google 定義群組

    唯一有效值為 ALL_SUBNETS,這會根據 VPC 網路的動態轉送模式 (類似預設通告) 通告子網路。

    • ADVERTISED_IP_RANGES:新的 IP 位址範圍陣列內容

    您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,只有在啟用 IPv6 的 BGP 工作階段中,才會 advertise 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 Router」頁面。

    前往 Cloud Router

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

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

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

  5. 在「Routes」(路由) 欄位,選取「Create custom routes」(建立自訂路由)

  6. 選取「公告向 Cloud Router 公開的所有子網路」核取方塊,繼續公告 Cloud Router 可用的子網路。啟用這個選項後即可模擬 Cloud Router 的預設行為。

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

  8. 設定路徑通告:

    • 來源:選取「Custom IP range」(自訂 IP 範圍)

    • 「IP 位址範圍」:使用 CIDR 標記法指定自訂 IP 範圍。您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,只有在啟用 IPv6 的 BGP 工作階段中,才會通告 IPv6 自訂範圍。

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

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

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

gcloud

請執行 update-bgp-peer 指令。如要指定自訂 IP 範圍,請使用 --set-advertisement-ranges 標記或 --add-advertisement-ranges 標記。

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

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

    更改下列內容:

    • ROUTER_NAME:Cloud Router 的名稱
    • PEER_NAME:BGP 對等互連名稱
    • 如要新增自訂 IPv6 範圍,可以選擇新增 --enable-ipv6 旗標。
    • ADVERTISED_GROUPS:Cloud Router 動態通告的 Google 定義群組

      唯一有效值為 all_subnets,這會根據 VPC 網路的動態轉送模式 (類似預設通告) 通告子網路。

    • ADVERTISED_IP_RANGES:新的 IP 位址範圍陣列內容

      您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,只有在啟用 IPv6 的 BGP 工作階段中,才會通告 IPv6 自訂範圍。

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

    以下範例會更新 my-router Cloud Router 上的 my-bgp-session BGP 工作階段,以通告所有子網路和自訂 IP 範圍 192.0.2.1198.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-groups=all_subnets \
        --set-advertisement-ranges='192.0.2.1,198.51.100.0/24,2001:db8:abcd:12::/64'
    

    --set-advertisement-groups 標記接受 BGP 工作階段動態通告的 Google 定義群組。您可以移除 --add-advertisement-groups 標記以排除子網路通告。如需所有通告群組的清單,請參閱 Google SDK 說明文件中的 set-advertisement-groups 標記。

  2. 使用 --add-advertisement-ranges 標記,Cloud Router 的通告模式必須先設為 custom

    gcloud compute routers update-bgp-peer ROUTER_NAME \
        --peer-name=PEER_NAME \
        --add-advertisement-ranges=ADVERTISED_IP_RANGES
    

    更改下列內容:

    • ROUTER_NAME:Cloud Router 的名稱
    • PEER_NAME:BGP 對等互連名稱
    • ADVERTISED_IP_RANGES:新的 IP 位址範圍陣列內容

      您可以同時指定 IPv4 和 IPv6 自訂 IP 範圍。不過,只有在啟用 IPv6 的 BGP 工作階段中,才會通告 IPv6 自訂範圍。

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

    下列範例會將 198.51.100.1 自訂 IP 位址新增至 Cloud Router 的通告:

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

    下列範例會將 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'
    

API

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

bgpPeers[] 欄位接受 BGP 對等互連陣列。PATCH 這個欄位時,系統會將現有的 BGP 對等互連陣列,覆寫為要求中包含的新陣列。

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

  2. 傳送含有新 BGP 對等互連陣列的 PATCH 要求。針對要新增廣告的每個 BGP 對等互連,請執行下列操作:

    • bgpPeers[].advertisedIpRanges[] 欄位中新增所需的任何 IP 位址範圍廣告。
    • bgpPeers[].advertisedGroups[] 欄位中加入所需群組廣告。

      唯一有效值為 ALL_SUBNETS,這會根據 VPC 網路的動態轉送模式 (類似預設通告模式) 通告子網路。

      如要進一步瞭解這些值,請參閱 API 說明文件中的 routers.patch

    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": ["ALL_SUBNETS"],
          "advertisedIpRanges": [
            {
              "range": "1.2.3.4",
              "description": "First example range"
            },
            {
              "range": "6.7.0.0/16",
              "description": "Second example range"
            },
            {
              "range": "2001:db8:abcd:12::/64",
              "description: "Third example range"
            }
          ]
        },
        {
          "name": "peer-2",
          "interfaceName": "if-peer-2",
          "ipAddress": "169.254.20.1",
          "peerIpAddress": "169.254.20.2",
          "peerAsn": 64513,
          "advertisedRoutePriority": 100,
          "advertiseMode": "CUSTOM",
          "advertisedIpRanges": [
            {
              "range": "192.168.10.0/24",
              "description": "Fourth example range"
            }
          ]
        }
    

後續步驟