Skip to content

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服务的容器。

shell
# 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官网控制台查看。

shell
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

把上面的命令复制到终端,按下回车就自动下载安装了,静静的等待服务安装启动。

检测是否启动成功:

shell
[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?我们需要生成一个配置文件。命令如下:

shell
docker exec -it vpn-server generate-mobileconfig > ikev2-vpn.mobileconfig

命令执行完,在你的目录下就已经存在一个这样的文件

shell
[root@vultr ~]# ls
ikev2-vpn.mobileconfig

从服务器下载文件到你的Mac

这时需要做的就是把它下载到你的Mac上,可以使用scp命令传输文件:

shell
scp root@95.xx.xxx.xxx:~/ikev2-vpn.mobileconfig ./Downloads/

这一步是在你自己电脑上操作(不是在服务器上)具体操作如图,这样你就从远程服务器下载到了用于连接VPN服务的配置文件,放在了自己的“下载”文件夹中:

打开Mac 的访达,查看配置文件

安装配置文件

双击安装,电脑右上角会弹出提示:

打开系统偏好设置,打开描述文件:

开始安装,安装完成后,打开开关连接 deploy

配置完成后,连接到VPN服务,到浏览器测试一下 deploy

大功告成!

同样可以把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服务器了。

Released under the MIT License.