CentOS 8 使用 Strongswan 搭梯(IPsec IKEv2 VPN)

本文介绍使用 StrongSwan 搭建 VPN 的过程,适合有一定 linux 基础的用户。

本文使用的服务器

  • 1CPU,1G,  优惠码
  • CentOS 8.3
  • StrongSwan 5.8.2

StrongSwan 简介

StrongSwan 是基于 OpenSource IPsec 的 VPN 解决方案,官方网站:https://www.strongswan.org/ ,如果无法访问请使用科学上网,原因你懂的。

本文描述从一个初始系统开始逐步完成搭梯的过程。

一,准备阶段

以 root 用户登录

安装 epel 源

更新系统

安装必备软件

二,申请 ssl 证书

StrongSwan IPsec IKEv2 连接需要用到服务器证书,用于验证服务器身份。由于自签发证书不受操作系统信任,我们需要申请 Let’s Encrypt 免费证书。
申请证书需要有域名,提前将域名解析到你的vps地址。

三,安装 strongswan

配置strongswan
在5.8版本之前,strongswan 默认使用 ipsec.conf 配置文件,之后改用 swanctl.conf 配置。网上充斥着大量老的配置方式,确很少能看到基于 swanctl 配置的。

编辑配置文件

写入以下配置

高亮部分中的 xx.xxx.com 替换为上面申请证书时用的域名, private-xxx 中的 xxx 随意,不要有符号,eap-user1 和 id = user1 中的 user1 替换为你想登录vpn使用的账号,secret = “123456” 改为你的密码。
如需添加多个用户,复制 eap-user1 { … } 段粘贴到下面,按上面规则设置新的用户名和密码即可。

ctrl + w 退出编辑,会询问你是否保存,按 y,再回车保存。

安装证书,创建证书软链接到 strongswan 的对应目录。

证书安装完成
重启服务

开启内核转发

用下面内容替换配置文件中同名的项,如果没有则新增。

重新加载配置

配置防火墙

在合适的位置添加以下规则。高亮标示部分的内容与顺序必需与下面一样。

ctrl + w 保存,按 y,回车确认。
重启防火墙,使规则生效。

由于 Let’s Encrypt 证书只有90天有效期,为避免过期,需要启用自动续期。自动续期由定时任务完成。
编辑定时任务配置

写入下面红色内容,这段的意思是每天3点运行 certbot renew 命令给证书续期,如果续期成功则重启 nginx 和 strongswan 服务。

ctrl + w 退出,按 y,回车确认。
加载定时任务配置,使之生效。

到此,服务端配置完成。下面设置各客户端。

四,配置客户端

Win10 客户端设置

开始 -> 设置 -> 网络和Internet -> VPN -> 添加vpn连接
供应商选 “windows 内置”
连接名称随意
服务器名称或地址填域名 “xx.xxx.com”
vpn类型选 “IKEv2”
登录信息的类型选 “用户名和密码”
用户名与密码填上面设置的
保存,点击 “连接”,如无意外,vpn已经连上了,并且可以访问外网。

win10 vpn 设置

 

IOS 客户端设置

设置 -> 通用 -> VPN -> 添加VPN配置
类型选 “IKEv2”
描述随意
服务器填 “xx.xxx.com”
远程id填 “xx.xxx.com”
用户鉴定选 “用户名”
用户名填 “user1”
密码填 “123456”
完成
点选刚添加的配置,打开vpn开关,如无意外可访问外网。

ios vpn 设置

 

 

 

Android 客户端设置

需下载安装客户端程序,前往官网下载 最新版 apk 程序
设置过程同上面大同小异。

 

CentOS 8 使用 Strongswan 搭梯(IPsec IKEv2 VPN)》上有16个想法

  1. 大哥你好啊,用你的方法我认证一直出错
    Waiting for verification…
    Challenge failed for domain oye86.co
    http-01 challenge for oye86.co
    Cleaning up challenges
    Some challenges have failed.

    IMPORTANT NOTES:
    – The following errors were reported by the server:

    Domain: oye86.co
    Type: unauthorized

    我Nginx 和申请证书都用 宝塔弄好了,就是后面 “安装证书,创建证书软链接到 strongswan 的对应目录。”这个目录对应不上。宝塔的在
    /etc/letsencrypt/csr
    /etc/letsencrypt/keys 这两文件夹里。
    我应该怎么弄呢?

  2. 用的阿里云香港服务器,按照文章的配置,vpn 能轻松连上,但打开不了任何网页, 然后日志一直在心跳。Apr 3 23:20:17 13[NET] sending packet: from 172.19.255.95[4500] to 183.229.32.196[5964] (128 bytes)
    Apr 3 23:20:37 14[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:20:37 14[KNL] querying SAD entry with SPI 0192523f
    Apr 3 23:20:38 15[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:20:38 15[KNL] querying SAD entry with SPI 0192523f
    Apr 3 23:20:38 15[IKE] sending keep alive to 183.229.32.196[5964]
    Apr 3 23:20:58 16[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:20:58 16[KNL] querying SAD entry with SPI 0192523f
    Apr 3 23:20:58 16[IKE] sending keep alive to 183.229.32.196[5964]
    Apr 3 23:20:59 06[KNL] querying policy 10.10.1.1/32 === 0.0.0.0/0 in
    Apr 3 23:20:59 06[KNL] querying policy 10.10.1.1/32 === 0.0.0.0/0 fwd
    Apr 3 23:21:18 08[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:21:18 08[KNL] querying SAD entry with SPI 0192523f
    Apr 3 23:21:18 08[IKE] sending keep alive to 183.229.32.196[5964]
    Apr 3 23:21:18 09[KNL] querying policy 10.10.1.1/32 === 0.0.0.0/0 in
    Apr 3 23:21:18 09[KNL] querying policy 10.10.1.1/32 === 0.0.0.0/0 fwd
    Apr 3 23:21:18 09[IKE] sending DPD request
    Apr 3 23:21:18 09[IKE] queueing IKE_DPD task
    Apr 3 23:21:18 09[IKE] activating new tasks
    Apr 3 23:21:18 09[IKE] activating IKE_DPD task
    Apr 3 23:21:18 09[ENC] generating INFORMATIONAL request 0 [ ]
    Apr 3 23:21:18 09[NET] sending packet: from 172.19.255.95[4500] to 183.229.32.196[5964] (80 bytes)
    Apr 3 23:21:22 10[IKE] retransmit 1 of request with message ID 0
    Apr 3 23:21:22 10[NET] sending packet: from 172.19.255.95[4500] to 183.229.32.196[5964] (80 bytes)
    Apr 3 23:21:29 11[IKE] retransmit 2 of request with message ID 0
    Apr 3 23:21:29 11[NET] sending packet: from 172.19.255.95[4500] to 183.229.32.196[5964] (80 bytes)
    Apr 3 23:21:38 12[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:21:38 12[KNL] querying SAD entry with SPI 0192523f
    Apr 3 23:21:42 13[IKE] retransmit 3 of request with message ID 0
    Apr 3 23:21:42 13[NET] sending packet: from 172.19.255.95[4500] to 183.229.32.196[5964] (80 bytes)
    Apr 3 23:21:49 15[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:21:49 15[KNL] querying SAD entry with SPI 0192523f
    Apr 3 23:22:02 05[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:22:02 05[KNL] querying SAD entry with SPI 0192523f
    Apr 3 23:22:02 05[IKE] sending keep alive to 183.229.32.196[5964]
    Apr 3 23:22:05 16[IKE] retransmit 4 of request with message ID 0
    Apr 3 23:22:05 16[NET] sending packet: from 172.19.255.95[4500] to 183.229.32.196[5964] (80 bytes)
    Apr 3 23:22:22 08[KNL] querying policy 0.0.0.0/0 === 10.10.1.1/32 out
    Apr 3 23:22:22 08[KNL] querying SAD entry with SPI 0192523f

    • 看看加密算法是否支持,证书是否有效,证书路径和名称是否对,防火墙设置,转发是否打开。

  3. 您好,感谢分享。

    本地机器通过StrongSwan已经成功链接服务器,请问怎么设置使得本地流量通过服务器转发?

    • 默认应该已经转发所有流量了,如果没有的话,可以添加路由规则.

  4. 您好,之前按您的教程《CentOS 7 使用 Strongswan 配置 IKEv2 VPN》使用了一年,最近证书突然到期没有自动续上,连接时候“IKE 身份验证凭证不可接受”。我收到续了证书可是还是不行,请问怎么解决呢?

回复 jgh004 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

验证码