iOS系统其实提供VPN功能,支持IKEv2、IPsec、L2TP这三种类型的VPN。所以想自己搭建一个支持这几种类型其中之一的VPN服务器,这样就不需要下载安装额外的APP了。因为在iOS手机上想下载安装一些app并不容易,得注册个海外的appId,得找个海外手机号,总之很是麻烦。
我在GitHub上找到了个开源项目:setup-ipsec-vpn,这个项目封装了一些脚本,方便我们这些门外汉快速搭建一个vpn服务器。
我参考了这个方案:IPsec VPN 服务器一键安装脚本。并且由于我已经注册过AWS的账号,可以快速创建实例使用,所以我选择使用AWS的ec2免费实例。
只需要四个步骤,就能用上自己的VPN。
一、安装真的很简单。
根据教程文档,只需要执行这一条命令,等待个几分钟,就能自己安装完成。
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh
注意,需要root权限。
后续的重启(重启IPSec):
service ipsec restart
二、获取IPsec的账号信息。
安装完成后,会在控制台输出IPsec和IKEv2的账号信息。
推荐使用最简单的方式,这里我使用IPsec类型的VPN,从控制台输出找到IPsec VPN的配置信息,如下图所示。
也可以在启动时自己指定用户名密码
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='xdymLFNxm5usyghZrj2y' VPN_USER='vpnuser' VPN_PASSWORD='ZoJZY3Z8vkpmxvnZ' VPN_SKIP_IKEV2=yes sh vpn.sh
三、不要忘记配置安全组。
根据文档,我们还需要给ec2实例使用的安全组添加入站规则。创建一条UDP类型的端口为500的入站规则,以及创建一条UDP类型的端口为4500的入站规则。
四、在iOS设备上使用。
现在,在iOS上配置vpn就可以使用了。
手机操作:设置->通用->VPN与设备管理->VPN->添加VPN配置,如下图所示。
如何填写?
- VPN类型选择IPsec。
- 描述自己随便取个方便记忆的名字。
- 服务器就是控制台输出的Server IP,也是你ec2实例的外网IP地址。
- 账号填写控制台输出的Username。
- 密码填写控制台输出的Password。
- 使用证书保持关闭,不要点!
- 群组名称不用填。
- 密钥就是控制台输出的IPsec RSK。
后记
发现iOS首次连接上vpn用几分钟后就断开了,并且再想连就连不上了,重启IPSec服务也没用。
解决: iOS上删除之前的vpn配置,重新配置一个新的,类型选择L2TP。
填的配置与之前选择IPSec是一样的。
如果发现无法连接,直接删除虚拟机,换个新的虚拟机,重启安装vpn服务,iOS修改配置信息再连接。这样就能连接上了。
换了L2TP后发现,iOS锁屏一会后,VPN就会断开,但是重新连接能连上!比之前的IPSec稳定了。
如果还是出现用了一段时间后断开后连不上的情况,直接重启虚拟机,重启后IPSec服务会自动启动,然后检查虚拟机的IP,如果变了,记得先改iOS端的vpn配置,然后就能连上了。所以建议执行sh vpn.sh
命令时自己指定账号密码的配置,这样不必每次重启虚拟机都更新这些配置,而只需要修改IP地址。
sudo VPN_IPSEC_PSK='xdymLFNxm5usyghZrj2y' VPN_USER='vpnuser' VPN_PASSWORD='ZoJZY3Z8vkpmxvnZ' VPN_SKIP_IKEV2=yes sh vpn.sh
本文经「原本」原创认证,作者吴就业,访问yuanben.io查询【3DZ0TX34】获取授权信息。