我在 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 也會對其進行通告。