我有一个新的 Google Cloud Platform 设置。它由一个虚拟机(将添加更多虚拟机)和一个连接到另一个网络的 VPN 组成,该网络有 3 个小型子网(两个 /24 和一个 /32)。
当我第一次设置 VPN 时,我只使用了 /32,一切都很好 - Google VPN 连接将建立连接,从我的 VM 我可以 ping /32 IP,一切都很顺利。
本周我们尝试将 /24 引入连接。我返回 Google VPN 连接,在远程网络 IP 范围中添加了 /24,这时一切都开始出错了。
Google 日志显示链接正在尝试建立,但我可以建立隧道的唯一方法是让对等网络中的某个人 ping 我的 VM,VPN 连接显示 ESTABLISHED,并且对于该对等盒的子网,可从我的 VM 中使用 - 但其他子网仍然不可用。
有时我注意到,如果我从其他子网之一中的对等网络进行 ping 操作,则该子网将变得可用,而第一个子网将丢失(这并不总是发生,有时对等到 VM 的 ping 仍然会失败)。
今晚,我已从虚拟机设置了两个 ping,指向不同 /24 对等子网中的 IP。我可以看到 /24 之间的连接性在不断变化。它切换得并不快(我看到子网 A 在 ping seq 240 之前一直正常工作,停滞直到 seq 3370,并且一直工作到 seq 3660)。我没有设置 iTerm 以允许无限回滚,所以我看不到子网 B 的稳定性,但从子网 B 已超过 1000 行这一事实来看,我认为它比子网 A 运行的时间更长。
VPN 的两端都重建了几次,每次都出现相同的问题。我是不是漏掉了某些步骤,还是确实存在需要解决的问题?
如果我重建 VPN 并仅允许其中一个 /24,问题就会消失并且一切重新开始正常工作。
答案1
看起来你遇到了vpn 文档:
安全关联和多个子网
Cloud VPN 会创建一个子安全关联 (SA),以通告与隧道关联的所有 CIDR 块。部分 IKEv2 对等设备支持此行为,部分设备仅支持为每个 CIDR 块创建一个唯一的子 SA。对于后一种设备,具有多个 CIDR 块的隧道可能无法建立。
有几种可解决此问题的方法:
- 使用 Cloud Router 创建 BGP 协商路由。使用此配置,IKE 协议中不会协商 CIDR。
- 将对等设备配置为在同一个子 SA 中拥有多个 CIDR。只有部分设备支持此功能,并且仅在 IKEv2 中可用。
- 如果可能的话,将 CIDR 聚合为一个更大的 CIDR。
- 为每个 CIDR 块创建单独的隧道。如有必要,您可以为此创建多个 VPN 网关。
我最近遇到了同样的问题,尝试使用远程网络的 2 个单个 /32 IP 地址连接到对等方。我能够将 2 个 IP 合并为一个 /31 CIDR 块,并且成功了。
话虽如此,但我不知道将两个 /24 和一个 /32 合并为一个 CIDR 块是否现实。您已经将选项 4 作为解决方法。如果您使用的是 IKEv1,除非使用 Cloud Router(最近刚从 Alpha 升级到 Beta),否则这可能是您目前能做的最好的事情。