使用Centos7系统,yum安装strongSwan5.7版本的方式配置IKEv2 VPN,依旧使用iptables做转发(IKEv2和L2TP/IPsec不能共存,端口存在冲突)
参考文档:
在 CentOS 7 中使用 strongSwan 搭建 IKEv2 VPNBuilding IKEv1 and IKEv2 on CentOS 7
CentOS 7 配置 IPSec-IKEv2 VPN, 适用于 ios, mac os, windows, linux.
在-Centos-7-上搭建-strongSwan-VPN-IKEv2-整合-FreeRadius-用户认证系统
基础安装
yum -y install epel-release
yum -y install strongswan iptables-services
# 关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
# 关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
创建证书过程中的参数说明
--ca 创建ca
--lifetime 证书有效期,默认天
--type 类型
--size 长度
--dn 提取 X.509 证书的主题 DN
--gen 生成一个新的私钥
--issue 使用 CA 证书和密钥颁发证书
--pub 从私钥/证书中提取公钥
--self 创建自签名证书
#######
--cakey CA的秘钥
--cacert CA的证书
--san 包含在证书中ubjectAltName的扩展
--flag 添加extendedKeyUsage标志
--outform 生成的证书编码
使用strongswan创需要的证书文件(文件名自己定义就好)
# 先创建一个临时目录,放证书文件
mkdir cert && cd cert
# 创建ca秘钥
strongswan pki --gen --type rsa --size 4096 --outform pem > ca.ql-key.pem
# 创建ca证书("C=,O=,CN=",这里面内容自定义就好)
strongswan pki --self --ca --lifetime 3650 --in ca.ql-key.pem --type rsa --dn "C=CN,O=JC,CN=QL server" --outform pem > ca.ql.cer
# 创建服务端秘钥
strongswan pki --gen --type rsa --size 4096 --outform pem > server.ql-key.pem
# 创建服务端公钥
strongswan pki --pub --in server.ql-key.pem --outform pem > server.ql-pub.pem
# 创建服务端证书(注意:这里--dn参数内容要和上面的对应,--san 要修改为你的服务器域名或者公网ip,我这里使用域名)
strongswan pki --pub --in server.ql-key.pem | strongswan pki \
--issue \
--lifetime 3650 \
--cakey ca.ql-key.pem \
--cacert ca.ql.cer \
--dn "C=CN,O=JC,CN=QL server" \
--san="xxx.com" \
--flag serverAuth \
--flag ikeIntermediate \
--outform pem > server.ql-cert.pem
复制生成的证书文件到对应的目录中
cp ca.ql.cer /etc/strongswan/ipsec.d/cacerts/
cp ca.ql-key.pem /etc/strongswan/ipsec.d/private/
cp server.ql-key.pem /etc/strongswan/ipsec.d/private/
cp server.ql-cert.pem /etc/strongswan/ipsec.d/certs/
cp server.ql-pub.pem /etc/strongswan/ipsec.d/certs/
修改配置/etc/strongswan/ipsec.conf文件,经测试win10和ios系统都可以正常连接使用
配置中的文件名要和你创建的一致
协商协议可自定义
分配的客户端的虚拟ip网段可以自定义
dns看情况自定义)
config setup
# 是否严格执行证书吊销规则
#strictcrlpolicy=yes
# 如果同一个用户在不同的设备上重复登录,yes 断开旧连接,创建新连接;no 保持旧连接,并发送通知;never 同 no,但不发送通知。
uniqueids = no
######################
# 公用配置 #
######################
conn %default
# 是否启动压缩
compress = yes
# 密钥交换协议加密算法列表,可以包括多个算法和协议(这个我复制别人的)
esp = aes256-sha256,3des-sha1,aes256-sha1!
# 数据传输协议加密算法列表,对于IKEv2,可以在包含相同类型的多个算法(这个我复制别人的)
ike = aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024!
# 断开连接的操作,hold表示保持到重连直到超时,clear表示清除
dpdaction = clear
# 断开后重新连接时长
dpddelay = 30s
# 断开连接后超时时长,只对IKEv1有用
dpdtimeout = 60s
# 空闲时长,吵过后断开连接
inactivity = 300s
# 指定服务端与客户端的 DNS,多个用“,”分隔(看你服务器在哪,dns就修改为对应的)
leftdns = 114.114.114.114,8.8.8.8
rightdns = 114.114.114.114,8.8.8.8
conn IKE-BASE
# 服务器端根证书DN名称
leftca = "C=CN, O=JC, CN=QL server"
# 是否发送服务器证书到客户端
leftsendcert = always
# 客户端不发送证书
rightsendcert = never
# 服务器端证书
leftcert = server.ql-cert.pem
# 客户端分配的虚拟IP地址段
rightsourceip=192.168.88.0/24
######################################################
# win10可用 | 苹果手机使用IKEv2模式,需要安装证书 #
######################################################
conn IKEv2-EAP
also = IKE-BASE
# 使用ikev2
keyexchange = ikev2
# 服务端ip,可以是%any,表示从本地ip中取
left = %any
# 服务器端虚拟ip子网,0.0.0.0/0表示通配
leftsubnet = 0.0.0.0/0
# 客户端ip,%any表示任意
right = %any
# 服务端校验方式,使用证书
leftauth=pubkey
# 客户端认证使用 EAP 扩展认证, EAP(Username/Password)
rightauth=eap-mschapv2
# 服务端ID (和上面创建服务端证书时一致(--san指定的内容),这里使用域名)
leftid = xxx.com
# 客户端 id,任意
rightid = %any
# 不自动重置密钥
rekey = no
# 指定客户端eap id
eap_identity = %any
# 当服务启动时, 应该如何处理这个连接项,add 添加到连接表中
auto = add
# 开启 IKE 消息分片
fragmentation=yes
####################################
# 苹果|安卓 可用ipsec psk方式 #
###################################
conn IPSec-IKEv1-PSK
also=IKE-BASE
keyexchange=ikev1
fragmentation=yes
leftauth=psk
rightauth=psk
rightauth2=xauth
auto=add
修改/etc/strongswan/ipsec..secrets配置文件,配置认证秘钥和用户密码(这个配置我看别人的)
# ipsec.secrets - strongSwan IPsec secrets file
# 使用证书验证时的服务器端私钥
: RSA server.ql-key.pem
# 预设psk秘钥
: PSK "jc"
# XAUTH 方式, 只适用于 IKEv1
jc %any : XAUTH "1111"
# EAP 方式,用户和密码
jc %any : EAP "123456"
开启内核转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
配置iptables转发(连接后可以上网),云服务器记得安全组要放开相关的协议端口
# 放开upd 500,4500端口,和转发流量 (注意网段和上面配置文件中要一样)
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A FORWARD -s 192.168.88.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -o eth0 -j MASQUERADE
# 保存重启
service save iptables
systemctl restart iptables
启动strongswan服务
# 启动(如果参数配置有误,这里有提示的)
strongswan start
# 停止
strongswan start
# 重启
strongswan start
# 查看状态
strongswan status
使用win10系统连接
需要先把ca证书(ca.ql.cer证书文件)下载下来,安装到系统里面
新建一个vpn连接,选择IKEv2,写上用户和密码
有个注意的地方,下面图中的红框文字的说明
连接到服务器成功,查看出口ip(如果看到ip还是本地默认的,说明上图中的那个没勾选,勾选后看到的就是vpn的网络地址了)
本站文章除注明转载/出处外,均为本站原生内容,转载前请注明出处 | 文章链接地址:https://me.jinchuang.org/archives/1249.html