一 背景
Google Cloud 的 VPC 是网络租户的单元,一个 VPC 代表一个网络租户,不同网络租户间默认不通。在多个 VPC 间互通的方式,可以采用 VPN 连接,或者 VPC Peering 等方式。
但在 VPC Peering 中,VPC Peering 的路由是不能传递的,比如下面的拓扑:
VPC1 和 VPC2 可以通讯,VPC2 和 VPC3 可以通讯,但 VPC1 和 VPC3 间是不能通讯的。
目前 Google Cloud 支持 Custom routes advertisement for VPC peering,支持动态路由在 VPC Peering 中传递,如下图:
VPC1 和 VPC2 通过 VPC Peering 实现互联,VPC2 和右边的网络(VPC3 或 On-Prem 的网络)通过VPN 或 Interconnect 实现互通,并通过 BGP 传递了路由。此时通过 Custom routes advertisement for VPC peering 的功能,可以实现把 VPC3/On-Prem 的路由传递给 VPC1。
用户多个 Project 的多个 VPC 需要共享一根 VPN/Interconnect 的线路时,可以采用这种方式实现。如下图:
本文将讨论本功能的具体实现方式。
二 实现
1 创建 VPC
手工创建三个 VPC,如下图:
2 创建 VPN
在 VPC2 和 VPC 间创建 VPN Tunnel:
此时可以看到通过 BGP,VPC2 和 VPC3 的路由已经互相学习到:
3 调整 BGP 广播路由
考虑到在创建 VPC Peering 后,VPC1 到路由需要传送到 VPC3,所以在 VPC2 和 VPC3 的 BGP 宣告中,需要增加 VPC1 的网段:
可以看到,除了 VPC2 Subnets 的网段,还增加了 VPC1 的网段到 Custom ranges 中。
在路由表中可以查看到 VPC3 接收到了这三条路由:
4 创建 VPC Peering
创建 vpc1 peering vpc2 的两个 peering:
其中 Import Customer Routes 这里选中,表示接受从 VPC2 传过来的动态路由。
同样的,VPC2 peering VPC1 的配置中,在 Export Customer Routes 的地方选中,表示这里学到的动态路由传递给 Peering 的对方。
可以看到创建好的 Peering:
5 查看路由并检测
查看路由:
VPC1 的路由中,可以看到 VPC Peering 的路由包含 VPC2 的路由,但并没有包含 VPC3 的路由
通过 gcloud 命令行可以看到 VPC3 的路由:
gcloud beta compute networks peerings list-routes vpc1peer2 --direction=incoming --network=vpc1 --region=asia-east1DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS10.2.1.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted10.2.2.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted10.2.3.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted10.3.1.0/24 DYNAMIC_PEERING_ROUTE 100 accepted10.3.2.0/24 DYNAMIC_PEERING_ROUTE 100 accepted10.3.3.0/24 DYNAMIC_PEERING_ROUTE 100 accepted
通过 VPC1 内的 VM,ping 在 VPC3 内的 VM:
可以 ping 通。说明两边的网络已经通了。
6 对静态路由的支持
Custom routes advertisement for VPC peering 同时也支持静态路由的 Peering 间路由广播。
在 VPC3 到 VPC2 的 BGP session 中,做路由控制,10.3.1.0/24网段不被 BGP 广播,参考下面的左图,同时在 VPC2 中创建静态路由,10.3.1.0/24指向 VPN Tunnel,参考下面的右图:
10.3.1.0/24的路由是静态路由了。检查 VPC1 收到的 Peering 路由:
gcloud beta compute networks peerings list-routes vpc1peer2 --direction=incoming --network=vpc1 --region=asia-east1DEST_RANGE TYPE NEXT_HOP_REGION PRIORITY STATUS10.2.1.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted10.2.2.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted10.2.3.0/24 SUBNET_PEERING_ROUTE asia-east1 1000 accepted10.3.1.0/24 STATIC_PEERING_ROUTE asia-east1 1000 accepted10.3.2.0/24 DYNAMIC_PEERING_ROUTE 100 accepted10.3.3.0/24 DYNAMIC_PEERING_ROUTE 100 accepted
可以看到是 STATIC_PEERING_ROUTE 的类型路由。
同样在10.1.1.2的 VM 上 ping 10.3.1.2,可以 ping 通。
三 总结
通过 VPC Peering 的 Custom routes advertisement for VPC peering 的功能,用户可以实现一根VPN/Interconnect 线路给多个 Project 的多个 VPC 共同使用。
文章版权归作者所有,未经许可不得转载。
文章信息
相关推荐
