Я настроил избыточный site-to-site VPN между AWS и GCP с 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), AWS будет рекламировать все CIDR VPC вашему клиентскому шлюзу (CGW).
AWS объявляет VPC CIDR, а не маршруты из отдельной таблицы маршрутизации.
Если ваш VPC имеет CIDR 10.10.0.0/16, ваш CGW получит этот CIDR в качестве объявленного маршрута.
Поскольку на вашем VPC можно настроить до 5 CIDR, каждый раз при добавлении нового CIDR AWS также будет его рекламировать.