我在 AWS 和 GCP 之间配置了冗余站点到站点 VPN,其中包含 2 个 VPN 连接、4 个隧道和 BGP 动态路由。一切正常,隧道两侧的服务器可以互相访问。
我使用 Terraform 做到了这一点,并且如果在 GCP 端我确实配置了所有子网的广告:
name = "gcp-to-aws-router"
project = google_project.aws_gcp_test.project_id
region = var.gcp_region
network = google_compute_network.gcp_aws_vpc.name
bgp {
asn = var.gcp_bgp_asn
advertise_mode = "CUSTOM"
advertised_groups = ["ALL_SUBNETS"]
}
然后在 AWS 上,我没有做任何特定的事情来宣传路由,我只在我的服务器所在的路由表上启用了路由传播。我没有明确添加任何路由,也没有宣布我的服务器在隧道两侧使用的子网。我只在 AWS 端启用了路由传播。
resource "aws_vpn_gateway_route_propagation" "this" {
vpn_gateway_id = aws_vpn_gateway.aws_vpg.id
route_table_id = aws_route.internet_gw_route.route_table_id
}
在这里
- https://docs.aws.amazon.com/vpn/latest/s2svpn/VPNRoutingTypes.html
- https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html#vpn-configure-route-tables
文档指出:
您可以为路由表启用路由传播,以自动将网络路由传播到路由表。没有关于将本地路由通告到 BGP 的内容。
我不明白 AWS 的路由最终是如何到达 GCP 端的?这是怎么回事?:)
多谢!
答案1
当您将虚拟专用网关 (VGW) 连接到您的 VPC 并且您拥有动态 VPN(使用 BGP 的 VPN)时,AWS 会将所有 VPC CIDR 通告给您的客户网关 (CGW)。
AWS 公布的是 VPC CIDR,而不是来自单个路由表的路由。
如果您的 VPC 具有 CIDR 10.10.0.0/16,则您的 CGW 将获取此 CIDR 作为通告路由。
由于您可以在 VPC 上配置最多 5 个 CIDR,因此每次添加新的 CIDR 时,AWS 也会对其进行宣传。