指定和管理自定义已知路由
Cloud Router 路由器从其边界网关协议 (BGP) 对等方动态学习出站流量的路由。但是,您也可以手动创建此类路由并将其应用到 BGP 会话。这些手动创建的路由称为自定义已知路由。
您可以在创建 BGP 会话的同时创建自定义已知路由。或者,您也可以更新现有 BGP 会话以添加自定义已知路由。
如需简要了解自定义已知路由,请参阅已知路由。
如需了解 Cloud Router 路由器通常如何处理已知路由(包括动态学习的路由),请参阅已知路由。
准备工作
开始之前,请查看以下部分。
选择项目
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 如果您使用的是 Google Cloud CLI,请运行以下命令来设置项目 ID。此页面上的
gcloud
说明假定您已设置项目 ID。gcloud config set project PROJECT_ID
-
运行以下命令,确认已设置该 ID:
gcloud config list --format='text(core.project)'
IPv6 要求(可选)
如果您希望自定义已知路由包含 IPv6 前缀,则连接资源必须满足 IPv6 的底层条件。例如,如果您要为 VPN 隧道建立自定义已知路由,请确保满足 Cloud VPN 概览中的 IPv6 支持中所述的条件。
在创建会话时定义自定义已知路由
对于某些网络连接产品,您可以在创建资源时配置 BGP 对等方以包含自定义已知路由。对于其他资源,您需要创建 BGP 会话,然后再添加自定义已知路由。
如需详细了解如何在创建会话时添加自定义已知路由,请参阅以下内容:
如果要创建合作伙伴互连 VLAN 连接,请先创建连接,然后更新 BGP 对等方以添加自定义已知路由。
如果您要使用 Network Connectivity Center 安装第三方网络虚拟设备,并且想要使用自定义已知路由,请先安装该设备。然后,对于您要使用的每个自定义已知路由,登录设备并将路由器设备实例配置为使用自定义已知路由。在这之后,您可以更新 BGP 会话以使用自定义已知路由。如需了解详情,请参阅 Network Connectivity Center 文档中的使用自定义已知路由。
更新 Cloud Router 路由器会话时,Cloud Router 路由器会检查自定义已知路由和 VPC 子网之间的任何重叠情况。如果存在重叠,则 VPC 子网优先。这意味着流量通过 VPC 子网而不是自定义已知路由进行路由。Cloud Router 路由器会忽略具有比 VPC 子网更具体或相等的 BGP 和自定义已知路由。如需详细了解 Google Cloud 中的路由,请参阅路由。
如果 BGP 路由和自定义已知路由都与同一目标 IP 地址匹配,则 Google Cloud 会优先选择优先级值较小的路由。值越小,优先级越高。
如需了解如何在更新 BGP 会话时添加自定义已知路由,请参阅以下部分。
更新现有会话以使用自定义已知路由
如果您的现有 BGP 会话未定义自定义已知路由,则您可以选择更新该会话以使用自定义已知路由。
如果您已为会话配置自定义已知路由,但希望添加到之前指定的 IP 前缀,也可以使用此过程。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。展开通告的路由、自定义已知路由、双向转发检测 (BFD) 部分,然后在自定义已知路由部分中,执行以下操作:
在所有自定义已知路由的优先级部分中,如需配置路由优先级,请为此会话配置的所有自定义已知路由输入优先级值,该值介于
0
和65535
(含边界值)之间。Google Cloud 会优先考虑优先级值较小的路由。如果在多个自定义已知路由中配置了相同的 IP 地址范围,则系统会根据路由优先级选择最佳路径。
点击添加新的 IP 地址范围。
在 IP 地址范围字段中,输入 IPv4 或 IPv6 地址。如果您提供了不含子网掩码的 IP 地址,则会被解释为
/32
子网掩码(对于 IPv4)和/128
子网掩码(对于 IPv6)。
点击保存。
gcloud
使用 gcloud compute routers update-bgp-peer
命令:
gcloud compute routers update-bgp-peer ROUTER_NAME \ --peer-name=PEER_NAME \ --region=REGION \ --add-custom-learned-route-ranges=IP_PREFIXES \ --custom-learned-route-priority=ROUTE_PRIORITY
请替换以下内容:
ROUTER_NAME
:Cloud Router 路由器的名称PEER_NAME
:BGP 对等端的名称REGION
:Cloud Router 路由器所在的区域IP_PREFIXES
:IPv4 或 IPv6 地址前缀的逗号分隔列表,例如192.0.2.0/24,198.51.100.0/24,2001:db8:abcd:12::/64
如果您提供了不含子网掩码的 IP 地址前缀,则会被解释为
/32
子网掩码(对于 IPv4)和/128
子网掩码(对于 IPv6)。如需了解您可以拥有的自定义已知路由的数量上限,请参阅限制。ROUTE_PRIORITY
:为此会话配置的所有自定义已知路由的优先级值,该值介于0
和65535
(含)之间。Google Cloud 会优先考虑优先级值较小的路由。也就是说,优先级为
100
的路由的优先级高于优先级为200
的路由。如果您未提供值,则 Google Cloud 会在内部应用值100
。
API
使用 compute.routers.patch
方法并更新 bgpPeers
数组。
修补 bgpPeers
数组时,您必须为每一项的每个字段提供值(除非您想要移除一些 BGP 对等方或一些值)。
例如,假设 Cloud Router 路由器有两个 BGP 对等方。如需让第一个 BGP 对等方保持不变,并向第二个 BGP 对等方添加两个自定义已知路由,请使用如下请求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "bgpPeers": [ { "name": "PEER_NAME_1", "interfaceName": "INTERFACE_NAME_1", "ipAddress": "IP_ADDRESS_1", "peerIpAddress": "PEER_IP_ADDRESS_1", "peerAsn": "PEER_ASN_1" }, { "name": "PEER_NAME_2", "interfaceName": "INTERFACE_NAME_2", "ipAddress": "IP_ADDRESS_2", "peerIpAddress": "PEER_IP_ADDRESS_2", "peerAsn": "PEER_ASN_2", "customLearnedRoutePriority": "ROUTE_PRIORITY", "customLearnedIpRanges": [ { "range": "IP_PREFIX_1" }, { "range": "IP_PREFIX_2" } ] } ] }
按如下所示替换占位值。
提供 Cloud Router 路由器的相关值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 路由器所在的区域ROUTER_NAME
:Cloud Router 路由器的名称
提供不更改的 BGP 对等会话的相关值:
PEER_NAME_1
:BGP 会话的名称INTERFACE_NAME_1
:会话使用的接口的名称IP_ADDRESS_1
:BGP 会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_1
:BGP 对等方的 IP 地址PEER_ASN_1
:会话的自治系统编号 (ASN)
提供您要添加自定义已知路由的 BGP 对等会话的相关值:
PEER_NAME_2
:BGP 会话的名称INTERFACE_NAME_2
:会话使用的接口的名称IP_ADDRESS_2
:BGP 会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_2
:BGP 对等方的 IP 地址PEER_ASN_2
:会话的自治系统编号 (ASN)ROUTE_PRIORITY
:为此会话配置的所有自定义已知路由的优先级值,该值介于0
和65535
(含)之间。Google Cloud 会优先考虑优先级值较小的路由。也就是说,优先级为
100
的路由的优先级高于优先级为200
的路由。如果您未提供值,则 Google Cloud 会在内部应用值100
。IP_PREFIX_1
和IP_PREFIX_2
:对于每个字段,请输入 IPv4 或 IPv6 前缀如果您提供没有子网掩码的 IP 前缀,则对于 IPv4,它会被解释为
/32
子网掩码,对于 IPv6,它会被解释为/128
。如需了解您可以拥有的自定义已知路由的数量上限,请参阅限制。
覆盖现有的自定义已知路由
如果要替换为 BGP 会话定义的自定义已知路由,请遵循以下指导信息。使用此过程时,现有的自定义已知路由将被舍弃,取而代之的是您定义的新路由。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。展开通告的路由、自定义已知路由、双向转发检测 (BFD) 部分。
在 IP 地址范围字段中,修改 IPv4 或 IPv6 前缀。如果您提供了不含子网掩码的 IP 前缀,则会被解释为
/32
子网掩码(对于 IPv4)和/128
子网掩码(对于 IPv6)。点击保存。
gcloud
使用 gcloud compute routers update-bgp-peer
命令。
您可以使用 set-custom-learned-route-ranges
标志指定新的 IP 前缀或清除之前定义的前缀:
gcloud compute routers update-bgp-peer ROUTER_NAME \ --peer-name=PEER_NAME \ --region=REGION \ --set-custom-learned-route-ranges=IP_PREFIXES
请替换以下内容:
ROUTER_NAME
:Cloud Router 路由器的名称PEER_NAME
:BGP 对等端的名称REGION
:Cloud Router 路由器所在的区域IP_PREFIXES
:IPv4 或 IPv6 前缀的逗号分隔列表,例如1.2.3.4,6.7.0.0,2001:db8:abcd:12::/64
如果您提供没有子网掩码的 IP 前缀,则对于 IPv4,它会被解释为
/32
子网掩码,对于 IPv6,它会被解释为/128
。如需清除所有前缀,请使用该标志并且后面不带任何值。如需了解您可以拥有的自定义已知路由的数量上限,请参阅限制。
API
使用 compute.routers.patch
方法并更新 bgpPeers
数组。
修补 bgpPeers
数组时,您必须为每一项的每个字段提供值(除非您想要移除一些 BGP 对等方或一些值)。
例如,假设 Cloud Router 路由器有两个对等方。假设一个不使用自定义已知路由,而另一个使用自定义已知路由。如需保持第一个对等方不变,并覆盖为第二个对等方定义的路由,请使用如下请求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "bgpPeers": [ { "name": "PEER_NAME_1", "interfaceName": "INTERFACE_NAME_1", "ipAddress": "IP_ADDRESS_1", "peerIpAddress": "PEER_IP_ADDRESS_1", "peerAsn": "PEER_ASN_1" }, { "name": "PEER_NAME_2", "interfaceName": "INTERFACE_NAME_2", "ipAddress": "IP_ADDRESS_2", "peerIpAddress": "PEER_IP_ADDRESS_2", "peerAsn": "PEER_ASN_2", "customLearnedRoutePriority": "ROUTE_PRIORITY", "customLearnedIpRanges": [ { "range": "IP_PREFIX_1" }, { "range": "IP_PREFIX_2" } ] } ] }
按如下所示替换占位值。
提供 Cloud Router 路由器的相关值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 路由器所在的区域ROUTER_NAME
:Cloud Router 路由器的名称
提供不更改的 BGP 对等会话的相关值:
PEER_NAME_1
:BGP 会话的名称INTERFACE_NAME_1
:会话使用的接口的名称IP_ADDRESS_1
:会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_1
:BGP 对等方的 IP 地址PEER_ASN_1
:会话的自治系统编号 (ASN)
提供您要覆盖自定义已知路由的 BGP 对等会话的相关值:
PEER_NAME_2
:BGP 会话的名称INTERFACE_NAME_2
:会话使用的接口的名称IP_ADDRESS_2
:会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_2
:BGP 对等方的 IP 地址PEER_ASN_2
:会话的自治系统编号 (ASN)ROUTE_PRIORITY
:为此会话配置的所有自定义已知路由的优先级值,该值介于0
和65535
(含)之间。Google Cloud 会优先考虑优先级值较小的路由。也就是说,优先级为
100
的路由的优先级高于优先级为200
的路由。如果您未提供值,则 Google Cloud 会在内部应用值100
。IP_PREFIX_1
和IP_PREFIX_2
:对于每个字段,请输入 IPv4 或 IPv6 前缀如果您提供没有子网掩码的 IP 地址,则对于 IPv4,它会被解释为
/32
子网掩码,对于 IPv6,它会被解释为/128
。如需了解您可以拥有的自定义已知路由的数量上限,请参阅限制。
从 BGP 会话中移除自定义已知路由
如需从 BGP 会话中移除部分或全部自定义已知路由,请遵循以下指导信息。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。展开通告的路由、自定义已知路由、双向转发检测 (BFD) 部分。
在自定义已知路由部分中,点击要移除的 IP 地址范围旁边的
删除 IP 地址范围。点击保存。
gcloud
使用 gcloud compute routers update-bgp-peer
命令:
gcloud compute routers update-bgp-peer ROUTER_NAME \ --peer-name=PEER_NAME \ --region=REGION \ --remove-custom-learned-route-ranges=IP_PREFIXES
请替换以下内容:
ROUTER_NAME
:Cloud Router 路由器的名称PEER_NAME
:BGP 对等端的名称REGION
:Cloud Router 路由器所在的区域IP_PREFIXES
:要移除的 IP 前缀的逗号分隔列表
API
使用 compute.routers.patch
方法并更新 bgpPeers
数组。
修补 bgpPeers
数组时,您必须为每一项的每个字段提供值(除非您想要移除一些 BGP 对等方或一些值)。
例如,假设 Cloud Router 路由器有两个 BGP 对等方。假设一个不使用自定义已知路由,而另一个使用自定义已知路由。如需保持第一个对等方不变,并移除为第二个对等方定义的路由,请使用如下请求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "bgpPeers": [ { "name": "PEER_NAME_1", "interfaceName": "INTERFACE_NAME_1", "ipAddress": "IP_ADDRESS_1", "peerIpAddress": "PEER_IP_ADDRESS_1", "peerAsn": "PEER_ASN_1" }, { "name": "PEER_NAME_2", "interfaceName": "INTERFACE_NAME_2", "ipAddress": "IP_ADDRESS_2", "peerIpAddress": "PEER_IP_ADDRESS_2", "peerAsn": "PEER_ASN_2" } ] }
按如下所示替换占位值。
提供 Cloud Router 路由器的相关值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 路由器所在的区域ROUTER_NAME
:Cloud Router 路由器的名称
提供不更改的 BGP 对等会话的相关值:
PEER_NAME_1
:BGP 会话的名称INTERFACE_NAME_1
:会话使用的接口的名称IP_ADDRESS_1
:会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_1
:BGP 对等方的 IP 地址PEER_ASN_1
:会话的自治系统编号 (ASN)
提供要移除自定义已知路由的 BGP 对等会话的相关值:
PEER_NAME_2
:会话的名称INTERFACE_NAME_2
:会话使用的接口的名称IP_ADDRESS_2
:会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_2
:BGP 对等方的 IP 地址PEER_ASN_2
:会话的自治系统编号 (ASN)
更改 BGP 会话上所有自定义已知路由的优先级
如果要更新 BGP 会话,以为其自定义已知路由使用其他优先级,请遵循以下指导信息。请注意,优先级始终应用于为 BGP 对等方定义的所有自定义路由,您不能将不同的优先级应用于不同的 IP 前缀。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。展开通告的路由、自定义已知路由、双向转发检测 (BFD) 部分。
在所有自定义已知路由的优先级字段中,如需修改路由优先级,请为此会话配置的所有自定义已知路由输入新的优先级值,该值介于
0
和65535
(含边界值)之间。Google Cloud 会优先考虑优先级值较小的路由。如果在多个自定义已知路由中配置了相同的 IP 地址范围,则系统会根据路由优先级选择最佳路径。
点击保存。
gcloud
使用 gcloud compute routers update-bgp-peer
命令:
gcloud compute routers update-bgp-peer ROUTER_NAME \ --peer-name=PEER_NAME \ --region=REGION \ --custom-learned-route-priority=NEW_ROUTE_PRIORITY
请替换以下内容:
ROUTER_NAME
:Cloud Router 路由器的名称PEER_NAME
:BGP 对等端的名称REGION
:Cloud Router 路由器所在的区域NEW_ROUTE_PRIORITY
:为此会话配置的所有自定义已知路由的优先级值,该值介于0
和65535
(含)之间。Google Cloud 会优先考虑优先级值较小的路由。也就是说,优先级为
100
的路由的优先级高于优先级为200
的路由。
API
使用 compute.routers.patch
方法并更新 bgpPeers
数组。
修补 bgpPeers
数组时,您必须为每一项的每个字段提供值,除非您想要移除一些 BGP 对等方或一些值。
例如,假设 Cloud Router 路由器有两个 BGP 对等方。如果要保持第一个对等方不变,并更新为第二个对等方定义的两个自定义已知路由的优先级,请使用如下请求:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME { "bgpPeers": [ { "name": "PEER_NAME_1", "interfaceName": "INTERFACE_NAME_1", "ipAddress": "IP_ADDRESS_1", "peerIpAddress": "PEER_IP_ADDRESS_1", "peerAsn": "PEER_ASN_1" }, { "name": "PEER_NAME_2", "interfaceName": "INTERFACE_NAME_2", "ipAddress": "IP_ADDRESS_2", "peerIpAddress": "PEER_IP_ADDRESS_2", "peerAsn": "PEER_ASN_2", "customLearnedRoutePriority": "NEW_ROUTE_PRIORITY", "customLearnedIpRanges": [ { "range": "IP_PREFIX_1" }, { "range": "IP_PREFIX_2" } ] } ] }
按如下所示替换占位值。
提供 Cloud Router 路由器的相关值:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 路由器所在的区域ROUTER_NAME
:Cloud Router 路由器的名称
提供不更改的 BGP 对等会话的相关值:
PEER_NAME_1
:BGP 会话的名称INTERFACE_NAME_1
:会话使用的接口的名称IP_ADDRESS_1
:会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_1
:BGP 对等方的 IP 地址PEER_ASN_1
:会话的自治系统编号 (ASN)
提供要更改优先级的 BGP 对等会话的相关值:
PEER_NAME_2
:BGP 会话的名称INTERFACE_NAME_2
:会话使用的接口的名称IP_ADDRESS_2
:会话使用的 Cloud Router 路由器 IP 地址PEER_IP_ADDRESS_2
:BGP 对等方的 IP 地址PEER_ASN_2
:会话的自治系统编号 (ASN)NEW_ROUTE_PRIORITY
:为此会话配置的所有自定义已知路由的优先级值,该值介于0
和65535
(含)之间。Google Cloud 会优先考虑优先级值较小的路由。也就是说,优先级为
100
的路由的优先级高于优先级为200
的路由。IP_PREFIX_1
和IP_PREFIX_2
:已为 BGP 会话定义的 IP 前缀
检查自定义已知路由的状态
如需检查自定义已知路由的状态,请遵循以下指导信息。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
在名称字段中,点击相应 Cloud Router 路由器的名称。
在路由器详情页面上,点击要修改的 BGP 会话的名称。
在 BGP 会话详情页面中,点击
修改。展开通告的路由、自定义已知路由、双向转发检测 (BFD) 部分。
如需查看路由优先级,请参阅所有自定义已知路由的优先级字段。
Google Cloud 会优先考虑优先级值较小的路由。也就是说,优先级为
100
的路由的优先级高于优先级为200
的路由。如需查看 IP 地址范围,请参阅 IP 地址范围字段。
gcloud
如需检查 BGP 会话的配置,请使用
gcloud compute routers describe
命令。例如:gcloud compute routers describe ROUTER_NAME \ --region=REGION
请替换以下内容:
ROUTER_NAME
:Cloud Router 路由器的名称REGION
:Cloud Router 路由器所在的区域
该命令的输出包含为每个 BGP 会话配置的 IP 前缀和优先级。
如需查看是否有任何自定义已知路由被视为路由器的最佳路由,请使用
gcloud compute routers get-status
命令:gcloud compute routers get-status ROUTER_NAME \ --region=REGION
请替换以下内容:
ROUTER_NAME
:Cloud Router 路由器的名称REGION
:Google Cloud 区域
输出会列出 Cloud Router 路由器的最佳路由,并告诉您每个 BGP 会话的状态。
API
如需检索 BGP 会话配置详细信息,请使用
routers.get
方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME
请替换以下内容:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 路由器所在的区域ROUTER_NAME
:Cloud Router 路由器的名称
输出中的
bgpPeers
字段包含每个 BGP 会话的配置。使用
routers.getRouterStatus
方法:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/routers/ROUTER_NAME/getRouterStatus
请替换以下内容:
PROJECT_ID
:Cloud Router 路由器所属的项目REGION
:Cloud Router 路由器所在的区域ROUTER_NAME
:Cloud Router 路由器的名称
输出会列出 Cloud Router 路由器的最佳路由,并告诉您每个 BGP 会话的状态。