首页 > 解决方案 > 当我尝试连接到 VPN 服务提供商 (NordVPN) 时,在 Google Compute Engine 中失去对 VM Instance Debian 9 的控制

问题描述

当我尝试连接到 VPN 服务提供商 (NordVPN) 时,在 Google Compute Engine 中失去对 VM Instance Debian 9 的控制。

我有一个 NordVPN 的有效订阅,并且我一直使用这个 VPN 没有问题,无论是从 Windows、Mobile 还是 Linux 本地虚拟机。现在我发现自己有一个项目可以在 Google Cloud 中的不同 VM Debian 9 机器上使用它。我安装了客户端(测试是使用供应商的自定义客户端和带有供应商服务器列表的 openVPN 完成的)但是当我在 VM 和 VPN 之间进行连接时,我失去了对机器的控制,终端挂起。如果我改用本地 VM,则不会出现此问题。我无法再从内部地址和外部地址 ping 它。前提是我不是网络高手。测试是在创建 VM 时启用和禁用 IP 转发的情况下完成的。

我只在网上找到在 GCP 中创建 VPN 服务器的材料,但这不是我的情况。我的情况是虚拟机是客户端,而 VPN 服务器是外部的。

毫无疑问,我相信这种情况是可能的,但我无法理解我必须针对本地 VM 输入更多设置。

谢谢你们。

标签: google-cloud-platformgoogle-compute-enginevpnopenvpn

解决方案


VPN客户端似乎正在从您的VPN提供商接收网络路由,因此VM正在通过VPN路由所有流量,因此所有入站连接都被丢弃。

正如您所描述的,一旦网络访问不可用,您最好的机会就是与串行控制台 [1] 交互。在 [1] 中,您可以逐步了解如何通过 Google Cloud Platform 面板使用串行控制台访问您的 VM。

现在,在 GCP(通常)中,所有虚拟机都只有 1 个 vNIC,并且所有流量都通过该 vNIC 进行路由。当您将 VM 连接到 NordVPN 时,会创建一个新的网络设备 (tun)。如果您的默认路由 [4] 设置为将所有默认流量发送到您的 tun(NordVPN)而不是 GCP 的 vNIC,那么当新的 SYNC [5] 请求到达您的 VM 时,您的 VM 将通过您的网卡 TUN (NordVPN) 而不是 ETH0 (Google VM)。由于连接不是通过 NordVPN 开始的,NordVPN 将断开连接。

我解释的行为完全在意料之中,因为您希望来自 VM 的所有流量都流向 NordVPN,这样您就可以匿名上网。缺点是您的虚拟机将无法接收传入流量。

[1] https://cloud.google.com/compute/docs/instances/interacting-with-serial-console

[2] https://help.ubuntu.com/community/OpenVPN

[3] https://nordvpn.com/es/tutorials/linux/openvpn/

[4] https://www.cyberciti.biz/faq/howto-debian-ubutnu-set-default-gateway-ipaddress/

[5] https://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml

[6] https://community.openvpn.net/openvpn/wiki/IgnoreRedirectGateway


推荐阅读