在众多VPN服务中,用户常常面临选择困难。许多服务需要每月订阅,有些则不够安全,或者速度很慢。幸运的是,用户仍然可以选择自建VPN。虽然这需要一些技术知识,但如果你想要完美的解决方案,自己动手是最好的选择。
开始之前
亚马逊网络服务(AWS)提供一年的免费虚拟服务器空间,只要你使用的带宽、时间和空间未超出预定限制。即使超出限制,运行服务器镜像的费用也通常低于VPN订阅的费用。
在本文中,我们将介绍两种通过AWS的弹性云服务(EC2)来转发连接的方法:SSH隧道和OpenVPN。每种方法都有其优缺点,因此可以根据自己的需求选择。无论选择哪种方式,你都需要以下工具:
- 一个AWS账户。注册时需要信用卡,但你只需为实际使用付费,如果谨慎操作,可能根本不需要花费。
- PuTTy(Windows用户)。如果在Linux或Mac上,SSH命令行界面已内置。
- WinSCP或等效的FTP客户端,用于在本地计算机和EC2实例之间传输文件。
- 基本的Unix命令知识和服务器与客户端的工作原理将会在故障排除时大有帮助。
- 安装在默认位置的OpenVPN GUI。
设置AWS
创建AWS账户后,按照以下步骤启动将用于VPN的服务器:
- 登录到你的AWS账户,进入EC2仪表板。
- 点击“编辑安全组”。
- 你应该已经有一条规则允许通过SSH连接到你的服务器。接下来需要添加一条规则以允许OpenVPN连接(默认使用1194端口)。在“入站”选项卡下,点击“添加规则”按钮,类型选择“自定义UDP”,端口范围设置为1194,源设置为“任何地方”。
- 点击“保存”。
现在,创建一个密钥对,类似于你连接虚拟服务器时使用的密码。从下拉菜单中选择“创建新的密钥对”,并命名。下载密钥对并妥善保存。
页面底部会提示实例正在启动,滚动到最底部并点击“查看实例”。如果这是你第一次使用EC2,你将看到一条实例信息。
使用PuTTy连接服务器
使用PuTTy连接EC2实例之前,我们需要一个合适的密钥文件。安装PuTTy时,你应该也安装了PuTTygen。现在运行PuTTygen:
- 打开PuTTygen,点击“加载”。
- 导航到之前下载的.pem密钥对文件并加载。选择“所有文件”以查看.pem文件。点击“保存私钥”,文件名必须与.pem密钥相同。
- 关闭PuTTygen,打开PuTTy。将实例的公共IP地址复制到PuTTy中,输入会话名称并保存。
- 在左侧面板中,导航到“SSH”下的“Auth”,点击浏览按钮,找到刚生成的私钥。
- 返回主会话页面,命名并保存会话配置,以便下次快速连接。然后点击“打开”。
- 提示你输入用户名,基于你设置的服务器类型,Amazon Linux AMI的用户名为“ec2-user”。
SSH隧道(可选)
我们可以通过SSH隧道和代理将网络流量重新路由到我们创建的实例。这是一种快速绕过防火墙或地理限制的方法。虽然这不是一个完整的VPN,但对于轻量级网页流量来说,它更易于设置。设置SSH隧道是可选的,可以选择跳过此部分。
- 打开PuTTy,导航到左侧的“隧道”选项。添加端口8080,选择“自动”和“动态”。
- 返回会话页面,再次点击“保存”,然后点击“打开”。
现在你已连接到服务器,但还需要将浏览器的流量通过它。如果使用Firefox,可以在浏览器设置中完成。如果使用Chrome,则需下载Proxy Switchy扩展。若想创建一个完整的VPN,而不仅仅是浏览器代理,请跳到下一部分。
在Firefox中设置
- 转到工具 > 选项 > 高级 > 网络 > 连接 > 设置 > 手动代理配置
- 将SOCKS主机设置为127.0.0.1,端口设置为8080(或PuTTy中设置的隧道端口)。
- 点击“确定”保存。
在Chrome中使用Proxy Switchy
- 安装扩展后,设置页面会自动弹出,或者点击右上角的图标,选择“选项”。
- 为配置文件命名。在手动配置下,将SOCKS主机设置为127.0.0.1,端口设置为8080(或PuTTy中设置的隧道端口),其他保持空白。
- 点击“保存”,然后再次点击图标选择你的代理配置文件。
这样,你的浏览器流量就被转发到EC2实例了。这适用于基本浏览,但某些网站可能会遇到问题,除了浏览器以外的应用仍将使用直接连接。若要创建一个完整的VPN以重新路由所有互联网流量,请继续阅读。
在服务器和客户端上设置OpenVPN
OpenVPN是一个免费的开源工具,可以通过Amazon EC2实例运行完整的VPN。这意味着所有互联网流量都将通过它,而不仅仅是浏览器流量。
使用PuTTy连接到你的EC2实例,运行以下命令:
bash
sudo yum install -y openvpn
sudo modprobe iptable_nat
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
请注意,某些Linux版本使用apt-get
命令,如果yum
不适用,请尝试以下命令:
bash
sudo apt-get install -y openvpn
安装过程中会在命令提示符中显示许多文本。其他命令则设置IP转发,这是VPN正常工作的必要条件。
方法一:使用easy-rsa设置PKI身份验证(推荐)
在本教程的原始版本中,我们将详细介绍如何使用easy-rsa来设置PKI身份验证,以确保你的VPN连接安全可靠。
通过以上步骤,你就可以在AWS上成功搭建VPN服务。无论是SSH隧道还是OpenVPN,你都能根据自己的需求选择最合适的方案。希望这篇文章对你有所帮助!