GCP VPC IPv6 路由到 OpenVPN 实例

GCP VPC IPv6 路由到 OpenVPN 实例

之前,我在本地成功设置了一个 OpenVPN 服务器(在 Ubuntu 上),该服务器为 VPN 客户端分配了全局可路由的 IPv6 地址(这是项目要求)。一个宽大的 /48 IPv6 前缀在本地路由到 OpenVPN 服务器,然后该服务器可以将其细分并随意分配给 VPN 客户端。

现在我想将该 OpenVPN 服务器移至 GCP,并希望使用 GCP 分配的 IPv6 前缀。我启动了一个 GCP Compute Engine VM 实例,并在 Ubuntu 上运行 OpenVPN 服务器。VM 实例本身的一切似乎都很好,但我正在努力让 GCP VPC 将合适的 IPv6 前缀路由到 VM 实例。

我尝试了几种场景,其中虚拟机实例带有一个或两个 NIC、一个或两个具有对等连接的 VPC 以及几个全局可路由的 /64 子网(由 GCP 分配),但在每种场景中,我在尝试创建 VPC 时都会遇到错误“路线”(路由表条目),将子网范围(例如 /64)路由到我的 OpenVPN VM 实例。例如,在其中一个场景中,我收到以下错误消息:

$ gcloud beta compute routes create <route-name> \

  --project=<project-name> --network=<vpc-name> --priority=1000 \
  --destination-range=<dest-prefix>/64 \

  --next-hop-instance=<instance-name> \

  --next-hop-instance-zone=<zone-name>

Creating route "<route-name>" failed. Error: Operation type [insert] failed with message
"<dest-prefix>/64 hides the address space of the network (<dest-prefix>/64).
Cannot change the routing of packets destined for the network."

GCP 已将 IPv6 前缀(例如 2600:xxxx:xxxx:xxxx::/64)分配给 VPC 子网,我希望“借用”OpenVPN 以分配给 VPN 客户端,那么它在哪里呢<dest-prefix>/64?上述错误也会发生在较长的前缀(例如 /96)上,这使我无法细分 /64 前缀。对于较短的前缀(例如 /63),不会发生此错误,但我实际上无法使用较短的前缀,因为它会包含未分配给我的 VPC 的范围(即,我会错误地路由其他人的网络)。

VM 实例具有 可以转发属性设置为“true”,因此缺少此属性不会成为错误的原因。

上面的错误消息实际上有些道理。我认为,如果 VPC 具有全局可路由的 /48 前缀,甚至分配有 /63 前缀(两个连续的 /64 前缀),可以路由到子网,那么我的问题就很容易解决了。但是,从文档,看来 GCP 只为 VPC 子网分配全局可路由的 /64 IPv6 前缀。还有 /48 选项联合航空联盟前缀,但它不是全局可路由的,因此不符合项目要求。

这是否意味着目前根本无法使用 GCP Compute Engine 来托管为 VPN 客户端分配全局可路由 IPv6 地址的 OpenVPN VM 实例?(GCP 分配全局可路由的 IPv6 地址,不包括将本地子网连接到 VPC 的混合子网等。)

相关内容