我正在尝试使用 Google Compute Engine 服务器作为我所有流量的 VPN 服务器(我住在俄罗斯,我们这里有一些审查问题)。
GCE 上有关于VPN的迷你教程,但它是关于 GCE 内的两台服务器之间的网络,而不是 OpenVPN。
我已经从另一个教程中完成了所有步骤,关于在 Debian 上使用 OpenVPN 设置 VPN,我可以从客户端连接到 VPN,但是我无法打开连接(甚至无法 ping google)。在服务器上,我可以像往常一样 ping 和下载所有内容。
我在 Linode 上安装了相同设置的 VPN,它运行良好。所以问题在于 GCE 网络路由或防火墙规则。
我尝试了很多变体,但没有任何效果。请查看设置并告诉我应该更改什么。
// 配置行已删除,因为问题已解决 //
您可以通过以下两种方式之一解决尽管能够 ping、traceroute... 却无法通过 VPN 浏览网页的问题:
首先,您可以使用 TCP 协议而不是 UDP,方法是在客户端和服务器 conf 文件中将“proto udp”更改为“proto tcp”。
其次,您可以通过在客户端和服务器 conf 文件中将“dev tun”更改为“dev tap”来使用 tap 设备而不是 tun。
不知道问题是什么,看来这是谷歌的问题。
首先,感谢@Shivox 的回答。
这是快速操作方法:
sudo su
apt-key update && apt-get update && apt-get -y upgrade && apt-get -y install python-software-properties && apt-get -y install software-properties-common && add-apt-repository -y ppa:pritunl && apt-get update && apt-get -y install pritunl
https://instance_ip:9700
pritunl
作用户名和密码我使用 OS X 的 Viscosity 和 iOS 的 OpenVPN 连接作为客户端。在粘度中,打开“网络”选项卡中的“通过 VPN 连接发送所有流量”选项。
请记住,Google VPC 会丢弃
source_ip
具有外部 IP 的 VM 的内部 IP 以外的数据包。该文档https://cloud.google.com/compute/docs/vpc/advanced-vpc指出:
因此,如果您的 openVPN 只是从其他网络转发数据包,那么到公共内部的数据包将被丢弃,因为
source_ip
与任何现有 VM 的内部 IP 不匹配。出于这个原因,您需要对离开本地网络的数据包进行 NAT,例如在您的 VPN 节点上。OZ_ 答案中提到的“Pritunl”有效,因为它会自动配置 NAT。
这不是真正的答案,但该网站不允许我将其添加为对您问题的评论。
尽管如此,我的配置几乎与您在上面详述的完全相同(我没有在服务器上配置 dnsmaq)
不幸的是,VPN 没有按预期工作。我可以解析地址,ping 一些 Internet 主机,甚至可以在连接到 VPN 时进行完整的跟踪。但是,当我打开浏览器并导航到某个站点时,连接速度真的很慢。我不知道什么会影响连接,但这确实是一个奇怪的问题。
也许谷歌的人可以帮助我们了解发生了什么。
PS 1.正如其他人之前建议的那样,您能否验证是否启用了ip转发?对我来说,确保net.ipv4.ip_forward的值在重启后正确恢复的唯一方法是在 /etc/sysctl.d 上使用自定义规则之后
例如,您可以使用以下命令添加规则:
PS 2. 如果转发对您有用,您可以在连接到 VPN 时测试到外部主机的跟踪路由吗?我这样做时得到的输出有点奇怪(为什么同一个 IP 上有多个跃点????):
PS 3. 唯一似乎可以正常工作的是 VPN 正在使用我主机的外部 IP 访问 Internet
/etc/sysctl.conf
通过取消注释进行编辑#net.ipv4.ip_forward=1
这应该允许 OpenVPN 引导您的流量。
您需要在谷歌云中为您的虚拟机实例启用 IP 转发,否则数据包将无法到达您的虚拟机。
net.ipv4.ip_forward = 1
请注意,这与您可以在 VM 中设置的内容是分开的。IP转发只能在创建虚拟机之前设置一次,之后不能修改。要为新 VM 启用它,请单击
Management, security, disks, networking, sole tenancy
:然后,在
Networking
选项卡中单击Network Interface
并将 IP 转发设置为ON
:您需要添加允许 OpenVPN 本身流量的规则:
关于网络。
1) 在控制台启用来自 OpenVPN 子网(例如 10.8.0.0/24)的所有流量
2) 我强烈建议您将 Masquerade 添加到您的网络
3)不要忘记在内核中启用数据包路由
a) 一次
b) 永远在 /etc/sysctl.conf 中: