2022-09-28
过眼云烟
00
请注意,本文编写于 842 天前,最后修改于 6 天前,其中某些信息可能已经过时。

目录

搭建IKEv2类型代理
前言
优缺点总结
准备工作
部署
方式1:快速开始
注意
方式2:获取镜像并手动启动
拉取镜像
添加配置
启动容器
连接测试
导出证书
将证书从服务器导出
Android
安装证书
连接
Windows
安装证书
连接
拓展
赞助请求

搭建IKEv2类型代理

前言

本文为本人使用Github开源项目setup-ipsec-vpn搭建IKEv2类型VPN的流程总结。

提示:IKEv2类型代理已经有些不安全了,容易被封,网络代理本人现在(2023年10月6日)推荐Hysteria,可以阅读【Hysteria2 官方服务端及客户端搭建】了解最新版Hysteria2的基本使用。

本文教程需要你有一定的Linux和docker使用能力。

  • 搭建环境:Linux:CentOS 7.6
  • 部署方式:docker

官方文档:《Docker 上的 IPsec VPN 服务器

优缺点总结

  • 优点:无需安装客户端,windows、android等支持该协议的终端均可直接连接
  • 缺点:需要安装证书;不够安全(容易被封)

如果是要科学上网,老狗更推荐SSR(现在更推荐hysteria),网上有很多教程,且有安卓、windows、MAC多种终端的客户端,想要了解可以参考:搭建ShadowsocksR服务器

准备工作

本文介绍以docker方式部署,所以你需要满足以下条件:

  • 拥有一台服务器,服务器最好是linux环境
  • 服务器上安装Docker,安装方法不再赘述,可自行百度或参考我的文章:《Docker基础一文通

部署

方式1:快速开始

官方文档中提供快速开始命令,小白在安装完Docker后,可以直接运行以下命令一键部署

shell
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

分析一下这个命令干了什么事

--name ipsec-vpn-server:容器实例命名为ipsec-vpn-server

--restart=always:Docker启动时,自动启动该容器

-v ikev2-vpn-data:/etc/ipsec.d:建立当前文件夹下ikev2-vpn-data文件夹与容器内/etc/ipsec.d文件夹的数据映射,第二个-v同理,不再赘述。

-p 500:500/udp:建立容器内端口500与容器外(服务器)端口500的映射,协议为udp,第二个-p同理,不再赘述。

-d:后台启动

--privileged:赋权,防止当前用户权限不足,建立文件映射会报错的情况

hwdsl2/ipsec-vpn-server:使用镜像名称,没加版本号默认使用版本latest

注意

  • docker默认是从官方dockerhub获取镜像,如果你用的是大陆服务器,可能会导致镜像下载缓慢甚至失败,最简单的办法就是多等等、多尝试几次,较常见的方法是配置国内代理加速,比如阿里云加速,具体配置方式可自行学习,这里不做讲解。

  • 容器启动会自动生成帐号密码,密码较为复杂,这也是我没使用快速开始的一个原因。自动生成的帐号密码需要看系统启动日志才能拿到。查看日志命令:

shell
docker logs ipsec-vpn-server

方式2:获取镜像并手动启动

因为本人最近在学习docker,借此机会想要自己动手试试,所以我是手动拉取的镜像并启动的,步骤如下

拉取镜像

从官方dockerhub获取镜像

shell
docker pull hwdsl2/ipsec-vpn-server

添加配置

  • 创建本地文件夹
shell
mkdir /usr/local/ipsec-vpn
  • 创建配置文件
shell
cd /usr/local/ipsec-vpn touch vpn.env
  • 填入以下信息

VPN_IPSEC_PSK=your_ipsec_pre_shared_key

VPN_USER=your_vpn_username

VPN_PASSWORD=your_vpn_password

=后边的值更换成你想要的值,三个值分别是密钥、用户名、密码,会在连接VPN时使用到这三个值。

启动容器

shell
docker run --name ipsec-vpn-server --env-file ./vpn.env --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

其中和快速开始命令的区别只是多了一个启动参数 --env-file ./vpn.env,作用就是指定默认密钥、帐号、密码为自己的配置。

连接测试

客户端想要连接到IKEv2类型VPN,需要持有相应的证书,所以需要先从服务器上导出证书,并在客户端安装证书,安装后才可以使用证书连接到VPN。

导出证书

  • 从docker容器中拷贝到当前文件夹
shell
docker cp ipsec-vpn-server:/etc/ipsec.d/vpnclient.p12 ./

将证书从服务器导出

这一步自行学习,最终目的是从服务器上将vpnclient.p12导出到客户端上。提示:可以借助Xftp等工具。

PS:你想用手机连接vpn,那么你的手机就是客户端,你想用windows连接vpn,那么你的windows就是客户端。

将证书导出到客户端后,即可开始下一步。

Android

安装证书

直接运行打开vpnclient.p12文件,选择下图打开方式安装即可。

oldmoon.top

连接

如下图配置:

  • 服务器地址:部署setup-ipsec-vpn的服务器IP地址,域名应该也可以。
  • IPSec 标识符:上面部署时生效的VPN_IPSEC_PSK,从启动日志里可以找到。
  • IPSec 用户证书:选择你刚才安装的客户端证书
  • IPSec CA证书:选择你刚才安装的客户端证书
  • IPSec 服务器证书:选择来自服务器即可

oldmoon.top

Windows

安装证书

  • 下载自动配置脚本:ikev2_config_import.cmd,并保存到与你的证书相同的文件夹。
  • 右键单击保存的脚本,选择属性。单击对话框下方的解除锁定,然后单击确定
  • 右键单击保存的脚本,选择以管理员身份运行并按提示操作

注意:脚本运行后,会出来一个CMD黑窗口,其中需要你输入一些信息,如:

  • 证书名称(直接导出没改名的话,直接enter使用默认即可)
  • 类似上边Android的一堆配置,不再赘述,注意填写即可,不要填错了。

连接

上一步完成配置后,找到VPN配置这里,会自动出现一个VPN,名字也是在上一步填写的(我这里用了默认的,所以把服务器IP地址也显示了,码掉),若出现了,直接点击连接即可。

oldmoon.top

拓展

通过以上步骤,你可以将你的Windows和Android连接到VPN。

此种方式搭建的VPN服务,可以用系统自带的VPN连接,使用较为方便,但如果你用于科学上网,可能相比使用独立客户端的VPN更容易被封。

赞助请求

建站不易,以下是一个广告,还请动动您的小拇指,点击一次以示鼓励,谢谢!

就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本,如果看不到广告,可能是网络原因或被拦截了,那就算了吧。祝你生活愉快~~

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!