![GCP:无需 BGP 即可通过 IKEv1 VPN 路由到 IP 别名](https://linux22.com/image/733462/GCP%EF%BC%9A%E6%97%A0%E9%9C%80%20BGP%20%E5%8D%B3%E5%8F%AF%E9%80%9A%E8%BF%87%20IKEv1%20VPN%20%E8%B7%AF%E7%94%B1%E5%88%B0%20IP%20%E5%88%AB%E5%90%8D.png)
我有一个在单个子网和区域中运行的私有 GKE 集群。集群中的节点利用子网的 CIDR 10.60.0.0/16
。集群有两个用于其 pod 和服务的辅助 CIDR 范围(分别为172.24.0.0/19
和172.24.32.0/20
)。
在本地,我有一个 Meraki 路由器,它已建立到单个子网的 IKEv1 VPN 隧道。路由器不支持 IKEv2,我目前无法配置 BGP(但我认为这可能是一种可能性,我正在联系我们的代表)。我相信 Meraki 希望通过指定多个流量选择器来处理这种情况,但是 GCP 不支持静态路由,因为它违反了标准。我能够使用子网中的内部 IP 连接到节点,但我无法从本地连接到在辅助 CIDR 中运行的任何 pod 或服务。
我对此领域非常缺乏经验,因此对于任何不一致之处我深表歉意,但这是我迄今为止尝试过的方法以及我认为可能有效的方法:
我尝试了第二个 VPN 连接,专门用于 GKE 服务 CIDR。我可以连接隧道,但仍然无法连接到服务。我使用 terraform 模块[1] 创建了此连接,我也将其用于我的其他 VPN。不确定是否需要添加一些防火墙规则?
如果我的路由器支持 BGP,那么根据我在 Google 指南[2] 中看到的方法,这种方法可能会奏效。你甚至可以使用 BGP over IKEv1 吗?
使用单个 VPN,创建在子网中运行的内部负载均衡器。但是我认为这会有一些缺点,并且会增加复杂性。
如果我无法让路由器支持 BGP,而这是唯一可行的方法,那么我可以在本地启动一个单独的 VPN 服务器。不过我宁愿不这样做。
参考:
答案1
您使用的是哪种 VPN 隧道选项?您尝试过基于路由的 VPN 吗?
GCP 仅支持以下多个流量选择器:IKEv2.由于您使用的是 IKEv1,我建议您配置基于路由的 VPN。请注意,可能缺少防火墙规则以允许从本地到 GCP 的通信,您可以添加防火墙规则在 GCP 中允许来自本地的入口流量到达 GKE 的主要和次要 CIDR 范围。
如果您创建了基于策略或基于路由的 VPN,并且想要在创建后编辑任何流量选择器。您需要删除 VPN 隧道,然后重新创建它,请检查下一个链接关于流量选择器的考虑。
关于您在使用 IKEv1 的 VPN 隧道中使用 BGP 的问题。GCP 支持使用 IKEv1 的 BGP,但 IKEv2 更受欢迎。
如果您仍然无法访问 Pod,我建议您检查 VPN 隧道中的 BGP 选项。如您所说,Cloud Router 可以将别名 IP(主要和次要 CIDR 范围)地址发布到通过 VPN 连接的本地网络。如果 Cloud Router 配置了 Cloud VPN,它将自动将次要子网范围 172.24.0.0/19 和 172.24.32.0/20 发布到您的本地 VPN 设备。