我已经在其他 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
您需要检查几件事。
检查 /etc/sysctl.conf 中是否有以下指令
net.ipv4.ip_forward = 1
确保防火墙正在转发从 VPN 接口上的客户端收到的流量
#OpenVPN interface=tun0 iptables -A FORWARD -i tun0 -j ACCEPT
确保你伪装了传出的流量
#WAN Interface on OpenVPN server is eth1 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE