Google Compute Engine 上的 OpenVPN - 我错过了哪条路线?

Google Compute Engine 上的 OpenVPN - 我错过了哪条路线?

我已经在其他 VPS 提供商上安装了 OpenVPN,并想尝试 Google 的。我喜欢 Google 的性价比,尤其是因为我可以从手机启动机器,而不必每次都登录。

我已经到了客户端可以连接但无法访问互联网的地步。

我已经打开防火墙以访问 OpenVPN 端口。
我已在虚拟机上启用 IP 转发。
客户端在连接时会获得 IP、网关、DNS - 所有正确的东西。

我怀疑我必须构建一个路由器和/或路由,以便数据包从 OpenVPN 实例到达世界各地。我已经仔细阅读了文档,但我陷入了困境——我还不是网络专家,仍在边学边做。通过阅读,我似乎可以将网络转变为他们所谓的“传统”结构,但我希望能够克服这一挑战并了解发生了什么。我认为这是因为网络被分成许多不同的子网;相比之下,防火墙后面只有一个网络(即传统网络)。

我在脑海中看着地图,我的 OpenVPN 正在将数据发送到其子网的网关,但我认为数据包从那里被丢弃了。我肯定需要从子网网关到互联网的路由?或者甚至是子网和互联网之间的完整路由器?

就像我说的,我以前用过 OpenVPN 虚拟机,没问题。所以我非常确定问题出在配置 Google Cloud 网络。

谢谢您的任何提示。

答案1

这修复了它:

iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

仍然不确定为什么我必须这样做,也许 Google 的 Debian 图像比标准 Diebian 实例更加锁定。

不需要对 Google Cloud 网络进行其他更改。

答案2

您需要检查几件事。

  1. 检查 /etc/sysctl.conf 中是否有以下指令

    net.ipv4.ip_forward = 1

  2. 确保防火墙正在转发从 VPN 接口上的客户端收到的流量

    #OpenVPN interface=tun0 iptables -A FORWARD -i tun0 -j ACCEPT

  3. 确保你伪装了传出的流量

#WAN Interface on OpenVPN server is eth1 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

相关内容