使用 OpenVPN 在 Google Compute Engine 上建立 VPN 服务器

使用 OpenVPN 在 Google Compute Engine 上建立 VPN 服务器

我正在尝试使用 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:1761917619这里是变量 - 将其更改为您喜欢的任何端口(范围是 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 引导您的流量。

相关内容