WARNING
最近IKEv2已经很容易被防火墙识别了,建议使用另一种VPN协议搭建。详情请查看 脚本一键搭建OpenVPN
IKEv2(Internet Key Exchange version 2)是一种用于建立安全连接的协议,通常用于VPN(虚拟专用网络)中。它提供了相互认证和安全参数协商的框架,如加密算法和密钥,以建立安全的通信渠道。IKEv2广泛用于安全的远程访问和站点之间的VPN连接,它设计成能够抵抗各种类型的攻击。IKEv2协议的设计旨在提供高度安全性和可靠性,因此在许多商业和企业环境中被广泛采用。
回顾
首先有一个确定的事情就是没有哪一种协议是可以永久使用的。你曾经也许和我一样使用过下面的方法搭建梯子:
- SS / SSR VPN
- V2RAY的搭建
但是这些方法终将成为历史,现在几乎不能使用。所以迫切需要一种新的协议来让我们搭建应用,还真被我发现了,确实很好用,它就是strongSwan,在此分享一下。
可能之前你看到过这样的文章Ubuntu、CentOS搭建IPSec/IKEv2 VPN服务器全攻略用到的就是Strongswan,但是这种方式操作步骤繁琐,配置过程复杂,不适合新手,本文介绍的方法要简洁很多,只要你跟着操作就可以了,都是经过我自己验证的。废话不多说,下面进入正题。
购买国外的服务器
这是个前提条件,有一台可以访问国外资源的服务器作为流量转发的中转,可以选择国外的vps服务商,如:vultr、Digital Ocean 等。
没有服务器的朋友可以点击上边的链接进入官网注册一个账号(点击上边的图片进入官网可以参与活动,购买服务器后可以获得官方赠送的$100体验金),买个最低配置的虚拟主机1CPU512内存500G带宽就够用了。每个月$3.5,不是很贵,支持支付宝扫码支付很方便。而且你还可以用它搭建自己的博客,或者其他服务,国外服务器有个好处就是不需要给域名备案。
详细的注册和部署实例教程可以参考我的另一篇文章 《优质的VPS搭建代理推荐》 直到你可以使用ssh远程登录到服务器就可以往下进行了。
注意,下面会分别介绍适用于 苹果本(OS X (macOS))和 Windows 的VPN服务搭建方法,会先介绍适用于macOS。
服务器安装Docker
当你通过终端登录到了远程服务器,按下面步骤进行,安装Docker,它是运行VPN服务的容器。
# 1. 安装yum-utils
sudo yum install -y yum-utils
# 2. 配置docker仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 3. 安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
# 4. 启动docker
sudo systemctl start docker
第4步执行完,docker服务已经启动,接下来安装并启动IKEv2
IKEv2 VPN (mac OS 和 ios)
启动IKEv2服务
注意你需要把下面代码中的"HOST=95.xx.xxx.xxx",95.xx.xxx.xxx这个替换成自己部署的vultr实例的ip,可以登录到vultr官网控制台查看。
docker run --cap-add=NET_ADMIN -d --name vpn-server --restart=always \
-p 500:500/udp -p 4500:4500/udp \
-e "HOST=95.xx.xxx.xxx" -e "HOSTNAME=vultr.guest" \
-e "EXCLUDE_SSID=myHomeWifi" \
billimek/ikev2-vpn-server
把上面的命令复制到终端,按下回车就自动下载安装了,静静的等待服务安装启动。
检测是否启动成功:
[root@vultr ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9d39ffa9fe7 billimek/ikev2-vpn-server "/bin/sh -c /usr/bin…" 6 weeks ago Up 5 weeks 0.0.0.0:500->500/udp, 0.0.0.0:4500->4500/udp vpn-server
上边的结果表明你的vpn server已经启动成功。
生成配置文件
如何让你的iOS/macOS设备 或者 苹果手机连接到搭建好的VPN Server?我们需要生成一个配置文件。命令如下:
docker exec -it vpn-server generate-mobileconfig > ikev2-vpn.mobileconfig
命令执行完,在你的目录下就已经存在一个这样的文件
[root@vultr ~]# ls
ikev2-vpn.mobileconfig
从服务器下载文件到你的Mac
这时需要做的就是把它下载到你的Mac上,可以使用scp命令传输文件:
scp root@95.xx.xxx.xxx:~/ikev2-vpn.mobileconfig ./Downloads/
这一步是在你自己电脑上操作(不是在服务器上)具体操作如图,这样你就从远程服务器下载到了用于连接VPN服务的配置文件,放在了自己的“下载”文件夹中:
打开Mac 的访达,查看配置文件
安装配置文件
双击安装,电脑右上角会弹出提示:
打开系统偏好设置,打开描述文件:
开始安装,安装完成后,打开开关连接
配置完成后,连接到VPN服务,到浏览器测试一下
大功告成!
同样可以把ikev2-vpn.mobileconfig这个文件传到你的IPhone,安装之后手机也可以使用这个VPN服务了。
Windows VPN 服务
上面的方式VPN服务搭建完成还需要生成配置文件,并且需要下载安装到你的电脑,Windows这里建议搭建 IPsec/L2TP 这种协议的VPN服务,只需要在你的电脑配置账户名、密码、共享秘钥即可Server IP、IPsec PSK、Username、Password。
IPsec/L2TP
使用下面命令搭建一个 IPsec/L2TP 服务:
docker run \
--name ipsec-vpn-server \
--restart=always \
-v ikev2-vpn-data:/etc/ipsec.d \
-v /lib/modules:/lib/modules:ro \
-p 500:500/udp \
-p 4500:4500/udp \
-d --privileged \
hwdsl2/ipsec-vpn-server
命令执行后,会自动启动服务,使用命令 docker logs ipsec-vpn-server 查看账户名,密码等信息:
...
================================================
IPsec VPN server is now ready for use!
Connect to your new VPN with these details:
Server IP: 140.xx.11.2xx
IPsec PSK: M3GzJFoV5xEbw12twA74
Username: vpnuser
Password: Hqv4bHx22gKzV25n
Write these down. You'll need them to connect!
Important notes: https://git.io/vpnnotes2
Setup VPN clients: https://git.io/vpnclients
================================================
客户端配置
回到你自己的Windows电脑配置VPN 客户端连接:
新增之后完成下面配置:
注意,选择【使用预共享密钥的L2TP/IPsec】
按下面步骤设置:
- 右键单击新创建的 VPN 连接,并选择 属性。
- 单击 安全 选项卡,从 VPN 类型 下拉菜单中选择 "使用 IPsec 的第 2 层隧道协议 (L2TP/IPSec)"。
- 单击 允许使用这些协议。选中 "质询握手身份验证协议 (CHAP)" 和 "Microsoft CHAP 版本 2 (MS-CHAP v2)" 复选框。
- 单击 高级设置 按钮。
- 单击 使用预共享密钥作身份验证 并在 密钥 字段中输入你的 VPN IPsec PSK。
- 单击 确定 关闭 高级设置。
- 单击 确定 保存 VPN 连接的详细信息。
设置完成去连接vpn,会出现下面错误:
错误 809:无法建立计算机与 VPN 服务器之间的网络连接,因为远程服务器未响应。这可能是因为未将计算机与远程服务器之间的某种网络设备(如防火墙、NAT、路由器等)配置为允许 VPN 连接。请与管理员或服务提供商联系以确定哪种设备可能产生此问题。
要解决此错误,在首次连接之前需要修改一次注册表,以解决 VPN 服务器 和/或 客户端与 NAT (比如家用路由器)的兼容问题。请下载并导入下面的 .reg 文件,或者打开 提升权限命令提示符 并运行以下命令。完成后必须重启计算机。
可以以管理员身份打开cmd执行:
REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f
详情可查看 这里
当你修改完注册表,重启电脑,应该就可以连接到VPN服务器了。