我正在尝试使用 Google Compute Engine 服务器作为我所有流量的 VPN 服务器(我住在俄罗斯,我们这里遇到了一些审查问题)。
有关于GCE 上的 VPN,但这是关于 GCE 内部 2 个服务器之间的网络,而不是 OpenVPN。
我已经完成了另一个教程中的所有步骤,关于在 Debian 上使用 OpenVPN 设置 VPN,我可以从客户端连接到 VPN,但无法打开连接(甚至无法 ping google)。在服务器上,我可以像往常一样 ping 和下载所有内容。
我在 Linode 上安装了 VPN,设置相同,运行正常。所以问题出在 GCE 网络路由或防火墙规则上。
我尝试了很多方法,但都没有用。请查看设置并告诉我应该更改什么。
// 配置行已删除,因为问题已解决 //
答案1
您可以通过以下两种方式之一解决无法通过 VPN 浏览网页的问题,尽管可以 ping、traceroute……
首先,您可以使用 TCP 协议代替 UDP,方法是在客户端和服务器配置文件中将“proto udp”更改为“proto tcp”。
其次,您可以使用 tap 设备代替 tun,方法是在客户端和服务器配置文件中将“dev tun”更改为“dev tap”。
但不确定问题是什么,看起来这是谷歌方面的问题。
答案2
首先,感谢@Shivox回答。
以下是快速操作方法:
- 我建议您创建其他网络(参见“网络”选项卡)。在网络偏好设置中,添加允许规则:tcp:22(如果不存在)、tcp:9700、tcp:17619。17619这里是变量 - 将其更改为您喜欢的任何端口(范围是 9075-65534)。您只需要 3 条规则和 2 条默认路由,无需其他。
- 转到“创建 Compute Engine 实例”,点击“显示高级选项”,允许端口转发,选择服务器的位置。
- 现在(当您选择了位置时),将静态 IP 添加到服务器。
- 选择Ubuntu 14.04镜像(就是这个版本)。
- 创建实例
- 通过 SSH 连接(最简单的方法 - 使用 GCE 面板中的浏览器内工具)
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
用户名和密码 - 现在更改管理员用户的用户名和密码
- 添加组织,然后添加 2 个用户(适用于桌面和移动设备)
- 在“服务器”选项卡中点击“添加服务器”
- 使用第一步中的端口号(17619(例如)和 tcp 协议。
- 将组织附加到服务器
- 启动服务器
- 在“用户”选项卡中下载两个用户的密钥(包含 ovpn 文件的 tar 档案)。
我使用 Viscosity 作为 OS X 客户端,使用 OpenVPN connect 作为 iOS 客户端。在 Viscosity 中,打开“网络”选项卡中的“通过 VPN 连接发送所有流量”选项。
答案3
请记住,Google VPC 会丢弃具有source_ip
外部 IP 的虚拟机的内部 IP 以外的数据包。
本文档https://cloud.google.com/compute/docs/vpc/advanced-vpc状态:
VPC 网络会重写 IP 标头,以声明实例的外部 IP 地址为源。如果实例没有外部 IP 地址,则不允许调用,并且 VPC 网络会丢弃数据包而不通知发送方。
因此,如果您的 openVPN 只是从其他网络转发数据包,那么发往公共内部的数据包将被丢弃,因为与source_ip
任何现有 VM 的内部 IP 都不匹配。因此,您需要对离开本地网络的数据包进行 NAT,例如在您的 VPN 节点上。
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.0.0/16 !192.168.0.0/16
OZ_ 答案中提到的“Pritunl”有效,因为它会自动配置 NAT。
答案4
/etc/sysctl.conf
通过取消注释进行编辑#net.ipv4.ip_forward=1
这应该允许 OpenVPN 引导您的流量。