PHP Laravel NGINX html css Bootstrap Python Symfony Apache Windows linux jquery Django ASP vanilla Slim vagrant docker Homestead MySQL Redis Git SVN ssh Root vim PhpStorm Pycharm sass less PHP Laravel android html css Vue Angular React NGINX html css Javascript

使用Amazon EC2及OpenVPN搭建属于自己的VPN服务器

原创

原创不易 ~ 转载请注明出处哦

严正声明:本文旨在为技术爱好者提供基于AWS环境的OpenVPN搭建指南,只以技术交流为目的,请勿以任何方式转载或非法谋取利益。

注意:有朋友反映OpenVPN今年不太稳定,所以我另外测试了一下Shadowsocks,并讲解了以阿里云服务器为例搭建Shadowsocks的教程,链接如下:

阿里云服务器搭建Shadowsocks Server及使用SwitchyOmega切换代理设置实战教程

请大家根据个人需求进行选择。


今天我来给各位介绍一下如何使用Amazon云服务器来搭建属于自己的免费VPN服务器(免费期一年)。

文章原创,重要步骤全部干货,实践所得,google不到的

先给大家看一下完成效果图:

Successful connected to OpenVPN client

Youtube

Twitter

Facebook

速度不错,主要根据你部署的服务器位置和你与服务器连接的速度而定,另外资源也是可以用迅雷下载的。

有几点需要注意的:

  1. AmazonEC2云服务免费使用一年,但是需要信用卡信息才能开通。另外每月限制了15GB的向外流量(基本不用担心会用完),超过了第1GB免费,以后每G会按很低的价格收费。 开通界面是全英文的,另外由于使用了Google的CAPTCHA,视你所在地区,可能有时无法正常显示。

  2. OpenVPN是目前最安全的VPN连接方式(PPTP最不安全,L2TP/IPSec其次,另外速度较OpenVPN慢),具体协议的不同可以参考这篇文章:
    Which is the Best VPN Protocol? PPTP vs. OpenVPN vs. L2TP/IPsec vs. SSTP

  3. OpenVPN Access Server 免费许可允许2个用户同时在线。如果需要允许更多用户,可以购买相应的收费许可。

  4. OpenVPN现在出了一款叫Private Tunnel的VPN,是按数据流量收费的,免费试用200MB,有几种数据套餐,一年无限流量是29.9美金,测试速度很快,有多个节点可以切换。

我们需要做的准备如下:

  • 开通Amazon EC2云服务器t2.micro级别并安装了Ubuntu 16.04 (老版本也可以,本文以16.04为例)的 实例(instance)。
  • 连接上述服务器的私钥及公共ippublic address
  • OpenVPN Access Server Ubuntu 64位版(以下简称OpenVPN AS),链接我在后文中会给出

另外下文中我会用AWS指代Amazon Web Service,可以简单理解为指代Amazon

当然,只要是云服务器,操作都是类似的,如果你想使用阿里云,可以先在以下地址领取代金券再购买:

【阿里云通用代金券领取】

使用阿里云的朋友请购买香港或国外地理位置的ECS,国内机房不可用。


话不多说,马上开始。首先我们远程连接上我们的AWS主机:

$ ssh -i your-key.pem ubuntu@server-public-address

AWS主机麻烦之处在于你需要下载你的私钥(.pem后缀文件),然后在连接的时候使用。

注意:请将server-public-address替换成你服务器的公共ippublic address),这个地址可以在AWS后台找到。

连接成功进入Ubuntu系统后,输入:

ubuntu:~$ sudo wget http://swupdate.openvpn.org/as/openvpn-as-2.5-Ubuntu16.amd_64.deb

以上地址已于 2018-3-2 日更新至 2.5 版本
目前OpenVPN官网已经找不到直接下载链接,但是仍然可以通过地址进行下载, 或者通过AWS云服务器市场进行安装:AWS OpenVPN

如果下载不成功可以到以下百度网盘地址下载,手动上传至服务器(下载完解压出.deb格式的文件备用):
blog.sbot.io - ovpnas-2.5.tar
密码:4krz

输入以上命令后,系统会自动下载Ubuntu环境下的OpenVPN AS 2.5 64位版本。接着我们输入

ubuntu:~$ sudo dpkg -i openvpn-as-2.5-Ubuntu16.amd_64.deb

进行安装。如果你看到以下信息,说明安装成功:

Selecting previously unselected package openvpn-as-2.5-Ubuntu16.amd_64.deb                      
(Reading database ... 140897 files and directories currently installed.)                      
Preparing to unpack openvpn-as-2.5-Ubuntu16.amd_64.deb                      
Unpacking openvpn-as (2.5-Ubuntu16) ...                      
Setting up openvpn-as (2.5-Ubuntu16) ...                      
The Access Server has been successfully installed in /usr/local/openvpn_as                      
Configuration log file has been written to /usr/local/openvpn_as/init.log                      
Please enter "passwd openvpn" to set the initial                      
administrative password, then login as "openvpn" to continue                      
configuration here: https://your-ip-address:943/admin                    
   
Access Server web UIs are available here:                      
Admin UI: https://your-ip-address:943/admin                      
Client UI: https://your-ip-address:943/

但是实际上我们还需要手动再重新配置一遍:

ubuntu:~$ sudo /usr/local/openvpn_as/bin/ovpn-init --force

一开始显示的条款我们需要手动输入yes,其他的选项除了以下这项,其他全部直接点击回车,保留默认值:

Please specify the network interface and IP address to be               
used by the Admin Web UI:              
(1) all interfaces: 0.0.0.0              
(2) eth0: 192.168.1.112                
Please enter the option number from the list above (1-3).               
> Press Enter for default [2]:

注意,一定要输入1(阿拉伯数字1)并按回车确定以选择all interfaces: 0.0.0.0
这个步骤非常重要,否则你将不能连接上你的VPN服务器。

如果你全部按照我所说的步骤来做的话,那么完成后,我们就可以设置Admin UI的密码了:

ubuntu:~$ sudo passwd openvpn

该命令是linux系统下用于更改用户密码的。这里我们的用户名是openvpn,按照提示更改密码即可。输入完密码,我们还有一项重要工作,那就是设置服务器的Security Group来保证能通过TCP连接443943端口以及UDP连接1194端口。
我们在AWS服务器管理后台左侧面板中,选择Security Groups,然后点击右侧的Edit按钮,加入以下几条规则:

AWS security groups

点击保存就可以了。


好了,现在我们可以开始连接我们的Admin UI了。首先在Amazon后台查询一下你服务器的公共IP,然后在浏览器中输入:

https://server-public-ip-address:943/admin

注意,请用你的服务器的public ip替换上面的server-public-ip-address。回车后我们会看到显示ssl连接不安全的提示,没关系,仔细看浏览器提示中间偏下,选择继续,然后会跳转到Admin UI的界面:

OpenVPN AS Admin UI

在这里我们输入之前配置的用户名和密码(用户名为openvpn)即可进入后台管理界面。

这个时候我们点击左侧界面的Server Network Settings,然后在Hostname or IP Address一栏,填写上我们服务器的public ip注意,这步非常非常非常重要(必须说三遍,否则连接不上服务器)。

OpenVPN AS Server Network Settings

注意保存一下刚才的设置。然后页面顶部会出现一个按钮,请点击Update Running Server来更新服务器状态:

Openvpn AS Update Running Server


完成之后,我们就可以去下载客户端了。

Windows用户操作步骤(Linux用户请跳过此步先往后看)

1> 点击以下链接下载客户端(版本2.4.6-I602):

blog.sbot.io - ovpn-install.tar
密码668t
openvpn-install-2.4.6-I602

以上地址于2018-5-22更新最新版本百度网盘地址,第二个链接是官方下载地址。百度网盘地址下载后请解压出.exe文件。官网链接由于众所周知的原因,请使用迅雷等下载工具下载。下载好之后安装,然后打开客户端,发现客户端提示我们还没有导入配置文件。没关系,接着看下一步。

2> 在浏览器输入

https://server-public-ip-address:943

请用自己的公共ip替换上面的server-public-ip-address。回车后,然后我们会进入到Client UI中:

OpenVPN AS Client UI

右下角下拉菜单里,选择login,然后输入我们之前设置的用户名和密码(用户名openvpn),登录,然后会跳转至以下界面:

OpenVPN Client Profile

点击最底下的Yourself (user-locked profile)链接,会下载一个名为client.ovpn的文件,将其保存在桌面。在桌面找到这个文件,将这个文件放入刚才安装的客户端的config文件夹中(注意,需要管理员权限):

C:\Program Files\OpenVPN\config

感谢kehanpan@outlook.com提供的信息参考,我们可以在client.ovpn中添加google的DNS,具体操作如下:

打开client.ovpn,添加

dhcp-option DNS 8.8.8.8

3> 切回到我们的客户端,发现弹出了输入用户名和密码的选项了:

OpenVPN Client

输入我们的用户名和密码(用户名openvpn),然后等待连接成功。
现在我们就可以上网了!


Windows用户在这里就已经完成操作了,现在我们讲一下Linux用户如何操作(这里以Ubuntu 16.04 LTS为例)。

1> 请输入命令安装OpenVPN

$ sudo apt-get install openvpn

2> 按照Windows用户步骤中提到的第2步,将client.ovpn下载至本地(文件夹无所谓,请记录好保存路径即可)。

接着我们需要在client.ovpn中添加以下两行:

up /etc/openvpn/update-resolv-conf                                
down /etc/openvpn/update-resolv-conf

3> 输入以下命令来打开并连接openvpn

$ sudo openvpn --script-security 2 --config client.ovpn

注意以上client.ovpn请使用你刚才下载的路径进行替换。
这样Linux用户的配置步骤也完成了。


最后,我们看到在之前下载client.ovpn文件的页面,我们可以看到OpenVPN支持安卓到苹果一系列系统。Android亲测表现相当出色,连接方便而且速度很快,不过没带google play的手机需要到网上自己寻找apk下载,就不多说了。IOS客户端需要美国区域的app store账户才能下载到。
这样一来再也不用烦恼敏感信息被盗,或者连不上,网速慢的情况了。
一年,两个用户,对于个人使用绰绰有余。

注意:如果出现连接不上的情况,请检查每一步是否完全按照给出的步骤操作,操作是否正确,另外可以用文本编辑器打开client.ovpn查看在Admin UI里对于Hostname or IP Address的设置是否正确。
另外连接时候的错误代码也可以提供一些有用的参考信息。


正在加载验证码......
请先完成验证
2019-06-24 17:45:37 xu.cai@qq.com
到了ubuntu:~$ sudo passwd openvpn 这一步之后,出现 Enter new UNIX password:
但是就是输入不了任何东西,不输入直接按enter的话,出现下面的提示:
Retype new UNIX password:
Sorry, passwords do not match

请问博主应该如何解决呢?谢谢大神!
2019-07-02 16:16:11 eagle.luo@foxmail.com 回复 xu.cai@qq.com
linux输入密码你是看不到的,输入完回车再输一遍一样的就可以了
2019-06-06 16:38:20 1183651012@qq.com
OpenVPN客户端连接成功,但是国外网站打不开,如何排查原因呢?谢谢!
2019-06-12 08:54:49 eagle.luo@foxmail.com 回复 1183651012@qq.com
这个情况不好说,如果你确定步骤都正确,也有可能是封锁的比较厉害,用我另一篇文章里写的ss搭一下测试看看
2019-04-16 12:16:34 384790758@qq.com
按照相同的步骤同样是在Oregon地区,https://server-public-ip-address:943/admin 页面就是出不来怎么回事,访问不到呀,博主怎么破?!
2019-04-20 11:34:10 eagle.luo@foxmail.com 回复 384790758@qq.com
参考文中手动配置命令
sudo /usr/local/openvpn_as/bin/ovpn-init --force
另外你需要使用你服务器的public ip