Windows与Linux建立IKEv2 S2S.note
一、Windows与Linux建立IKEv2 证书 S2S:
·申请 IKE 证书:
# 最好是在windows端颁发该证书,带有 Server Auth属性、IKE属性,具体可以参照Windows的IKEv2证书配置证书最好是大写域名,否则windows可能会有点问题
两端都要能够信任根证书
1、Linux 端配置:
1)拆分证书和私钥:
## 将从windows拷过来的 .pfx文件拆分为证书和私钥:
scp c:\kr-edge.pfx root@210.103.5.1:~
# 导出证书:
openssl pkcs12 -in kr-edge.pfx -clcerts -nokeys -out vpn.crt
# 导出私钥:
openssl pkcs12 -in kr-edge.pfx -nocerts -out vpn.key2)将 根证书、证书、私钥,放到指定位置:
根证书、证书、私钥 必须被放到指定位置
cp vpn.crt /etc/swanctl/x509 //将证书放到 x509目录下
cp vpn.crt /etc/swanctl/private //将私钥放到 private目录下
cp ca.crt /etc/swanctl/x509ca //将根证书放到 x509ca目录下3)配置S2S:
Linux需要定义一个 pools 地址池给隧道分配地址,地址池范围与 windows 地址池范围一致
apt install -y strongswan
# 配置对端FQDN公网地址的hosts解析:
echo "210.103.5.65 fr-edge.wsc2024.fr" >> /etc/hosts //对端地址
echo "210.103.5.1 kr-edge.wsc2022.kr" >> /etc/hosts //本端地址
cd /etc/swanctl
vim swanctl.conf
调用pools地址池(地址池名为 ikev2,这个地址池在后面定义):



remote 使用默认的 %any 即可,认证方式为 证书



四个括号结尾,取消注释即可(默认就有4个括号)

定义 secrets 调用私钥:


定义 pools 地址池(这里地址池名为 ikev2):

·如果要跳过 证书吊销列表检查(默认就是跳过的):

取消注释即可
·配置重启自动连接:
在 children 下修改三个参数:


当 start_action = trap 时,就仅会在有流量时才建立连接(但是当restart
strongswan之后,就会删除上一次的会话)
2、Windows 端配置:
最好写一个 hosts,将域名指定为对端公网地址

确保 LAN and demand-dial routing 是被勾选的:

选择证书:

允许IKEv2认证:

·创建 S2S 接口:
接口名称指定对端 FQDN,连接地址也要是对端FQDN
其他的配置没有什么特殊,就不赘述了


·必须配置一个地址池:
范围与linux 地址池范围一致

3、建立连接、测试:
建议在Linux端发起连接,在Windows端可能会出现一些奇奇怪怪的问题
swanctl --load-all //读取配置文件
swanctl --initiate -c net //发起连接,net 是前面配置文件中children下定义的名称
# 关闭连接:
swanctl --terminate -c net可以看到这边读取了 根CA、证书、私钥


可以看到,已经连接成功
# 查看 sa状态:
swanctl --list-sas
swanctl --stats