通告特定的 VPC 子网
您可以创建自定义通告路由来限制 Cloud Router 路由器通告的 Virtual Private Cloud (VPC) 网络中的子网。只有您通告的子网对本地客户端可见。除非您将 Cloud Router 路由器配置为通告所有子网,否则 Cloud Router 路由器不会动态通告新子网。如果您选择仅通告特定子网,并且要通告新子网,则必须将其作为自定义通告路由添加。
对于启用 IPv6 的 BGP 会话,您可以为特定内部 (ULA) 和外部 (GUA) IPv6 子网范围配置自定义通告路由。如需了解 IPv6 子网类型,请参阅 IPv6 子网范围。
如需在创建 Cloud Router 路由器或配置 BGP 会话时指定自定义通告路由,请参阅创建 Cloud Router 路由器或建立 BGP 会话。
准备工作
gcloud
如果您要使用本指南中的命令行示例,请执行以下操作:
- 安装或更新到 Google Cloud CLI 的最新版本。
- 设置默认区域和可用区。
API
如果希望使用本指南中的 API 示例,请设置 API 访问权限。
在 Cloud Router 路由器上指定自定义通告路由
如需在现有 Cloud Router 路由器上指定自定义通告路由,请按以下步骤操作。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
选择要更新的 Cloud Router 路由器。
在路由器详情页面上,点击
修改。在通告的路由部分,对于路由,选择创建自定义路由。
如果选中通告向 Cloud Router 公开的所有子网复选框,请将其清除。
选择添加自定义路由以添加自定义通告路由。
配置自定义通告路由:
- 来源:选择预定义的子网列表。Cloud Router 会根据 VPC 网络的动态路由模式列出所有可用的子网。
- IP 地址范围:您可以修改通告的子网 IP 范围。例如,您可以缩小指定的范围,使 Cloud Router 仅通告部分子网。 您可以同时指定 IPv4 和 IPv6 自定义 IP 范围。但是,IPv6 自定义范围仅在启用了 IPv6 的 BGP 会话中通告。
- 说明:添加说明以帮助标识此自定义通告路由的用途,然后点击完成。
添加完自定义通告路由后,点击保存。
gcloud
在开始之前,请记录要通告的子网 IP 范围。
运行 update
命令。如需指定要通告的子网 IP 范围,请使用 --set-advertisement-ranges
标志。如需将 IP 范围附加到现有通告,请使用 --add-advertisement-ranges
标志。
使用
--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 会话中通告。
以下示例更新
my-router
Cloud Router 路由器,以通告10.0.0.0/24
和10.0.10.0/24
子网;现有的自定义通告路由将被替换:gcloud compute routers update my-router \ --advertisement-mode custom \ --set-advertisement-ranges 10.0.0.0/24,10.0.10.0/24
以下示例更新
my-router
Cloud Router 路由器,以通告10.0.0.0/24
和10.0.10.0/24
IPv4 子网以及2001:db8:abcd:12::/64
IPv6 子网:gcloud compute routers update my-router \ --advertisement-mode custom \ --set-advertisement-ranges 10.0.0.0/24,10.0.10.0/24,2001:db8:abcd:12::/64
Cloud Router 路由器仅在启用了 IPv6 的 BGP 会话中通告 IPv6 范围。
以下示例使用
--add-advertisement-ranges
标志将 IP 范围附加到现有通告:gcloud compute routers update my-router \ --add-advertisement-ranges 10.0.20.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 路由器动态通告的 IP 范围,由 Google 定义。如需查看完整的通告组列表,请参阅 Google SDK 文档中的 set-advertisement-groups
标志。
以下示例使用
describe
命令检查 Cloud Router 路由器的通告路由:gcloud compute routers describe my-router
如果输出包含值为
all_subnets
的advertisedGroups
字段,请将其移除。以下示例使用带有--remove-advertisement-groups
标志的update
命令: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
这些字段时,您将使用请求中的新数组覆盖现有数组。
发送
GET
请求以获取路由器上的当前通告组和通告 IP 地址范围的数组。如需了解详情,请参阅查看 Cloud Router 路由器状态和路由。发送
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 范围。
以下示例包含两个子网 IPv4 地址范围和一个 IPv6 地址范围:
{ "range": "10.0.0.0/24", "description": "First example range" }, { "range": "10.0.10.0/24", "description": "Second example range" }, { "range": "2001:db8:abcd:12::/64", "description: "Third example range" }
- 将您要在路由器上使用的任何子网 IP 地址范围添加到
为 BGP 会话指定自定义通告路由
如需为现有 BGP 会话指定自定义通告路由,请按照以下步骤操作。
控制台
在 Google Cloud 控制台中,前往 Cloud Router 路由器页面。
选择待更新 BGP 会话所属的 Cloud Router 路由器。
在路由器详细信息页面上,选择要更新的 BGP 会话。
在 BGP 会话详情页面中,点击
修改。对于路由,选择创建自定义路由。
如果选中通告向 Cloud Router 公开的所有子网复选框,请将其清除。
选择添加自定义路由以添加通告路由。
配置自定义通告路由:
- 来源:选择预定义的子网列表。Cloud Router 会根据 VPC 网络的动态路由模式列出所有可用的子网。
- IP 地址范围:您可以修改通告的子网 IP 范围。例如,您可以缩小指定的范围,使 Cloud Router 仅通告部分子网。 除了 IPv4 地址范围之外,您还可以指定 IPv6 自定义 IP 地址范围。但是,仅当您为此 BGP 会话启用 IPv6 交换时,才会通告 IPv6 范围。
- 说明:添加说明以帮助标识此自定义通告路由的用途,然后点击完成。
添加完自定义路由后,点击保存。
gcloud
在开始之前,请记录要通告的子网 IP 范围。
运行 update-bgp-peer
命令。如需指定要通告的子网 IP 范围,请使用 --set-advertisement-ranges
标志。如需将 IP 范围附加到现有通告,请使用 --add-advertisement-ranges
标志。
使用
--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 会话中通告。
以下示例更新
my-router
Cloud Router 路由器上的my-bgp-session
BGP 会话,以通告10.0.0.0/24
、10.0.10.0/24
和2001: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 10.0.0.0/24,10.0.10.0/24
以下示例使用
--add-advertisement-ranges
标志将 IP 范围附加到现有通告:gcloud compute routers update-bgp-peer my-router \ --peer-name my-bgp-session \ --add-advertisement-ranges 10.0.20.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 路由器动态通告的 IP 范围,由 Google 定义。如需查看完整的通告组列表,请参阅 Google SDK 文档中的 set-advertisement-groups
标志。
以下示例使用
describe
命令检查 Cloud Router 路由器的通告路由:gcloud compute routers describe my-router
如果相关 BGP 会话包含值为
all_subnets
的advertisedGroups
字段,请将其移除。以下示例使用带有--remove-advertisement-groups
标志的update
命令: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 对等方数组。
发送
GET
请求以获取路由器的当前 BGP 对等方数组。如需了解详情,请参阅查看 BGP 会话配置。发送带有新 BGP 对等端数组的
PATCH
请求。对要添加自定义通告路由的每个 BGP 对等端,执行以下操作:- 将所需的任何子网 IP 地址范围通告添加到
bgpPeers[].advertisedIpRanges[]
字段中。 - 如果
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": "10.0.0.0/24", "description": "First example subnet" }, { "range": "10.0.10.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": "10.0.20.0/24", "description": "Fourth example subnet" } ] }
- 将所需的任何子网 IP 地址范围通告添加到
后续步骤
如需查看 Cloud Router 路由器的配置、其 BGP 会话以及 Cloud Router 路由器要通告的路由,请参阅查看 Cloud Router 路由器详细信息。
如需排查自定义通告路由的问题,请参阅问题排查。