第一季 概念
为什么选择StrongSwan
1 Streisand 不支持 IKEv2
2 OpenV和WireGuard需要客户端pass(本人对客户端有抵触)
3 SoftEther 日本?
StrongSwan是基于OpenSource IPsec的V解决方案,使用IKEv2协议和IPSec。官网:https://www.strongswan.org/, 现在生产的大多数新设备都支持 IKEv2,包括Windows、MacOS、iOS和Android。
访问控制可以基于使用X.509属性证书的组成员身份,这是strongSwan独有的功能。它支持用于集成到其他环境(如 Windows Active Directory)中的EAP身份验证方法。strongSwan可以穿透NAT网络防火墙。
IPSec是虚拟私密网络(***)的一种,用于在服务器和客户端之间建立加密隧道并传输敏感数据之用。它由两个阶段组成,第一阶段(Phrase 1, ph1),交换密钥建立连接,使用互联网密钥交换(ike)协议; 第二阶段(Phrase 2, ph2),连接建立后对数据进行加密传输,使用封装安全载荷(esp)协议。
其中,第一阶段和第二阶段可以使用不同的加密方法(cipher suites)。甚至,第一阶段ike协议的第一版(ikev1)有两种模式,主力模式(main mode)和积极模式(aggressive mode),主力模式进行六次加密握手,而积极模式并不加密,以实现快速建立连接的目的。
第二季 行动
1、当前版本
[root@hk ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@hk ~]# uname -r
3.10.0-1160.25.1.el7.x86_64
操作前的环境优化就不多提了,没做的去看我的优化文档,优化完再过来。
https://www.cnblogs.com/ordinaryRoadX/p/14905904.html
自从上次被内核源码编译坑了之后,再也不想碰源码了,用yum。
2、安装strongswan
yum install strongswan
3、生成IKEv2用证书
yum install openssl openssl-devel
strongswan pki --gen --outform pem > ca.key.pem
strongswan pki --self --in ca.key.pem --dn "C=CN, O=x, CN=CA" --ca --lifetime 365 --outform pem > ca.cert.pem
strongswan pki --gen --outform pem > server.key.pem
strongswan pki --pub --in server.key.pem --outform pem > server.pub.pem
strongswan pki --pub --in server.key.pem | strongswan pki --issue --lifetime 365 --cacert ca.cert.pem --cakey ca.key.pem --dn "C=CN, O=x, CN=公网ip" --san="公网ip" --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pe
strongswan pki --gen --outform pem > client.key.pem
strongswan pki --pub --in client.key.pem --outform pem > client.pub.pem
strongswan pki --pub --in client.pem | strongswan pki --issue --cacert ca.cert.pem --cakey ca.pem --dn "C=CN, O=x, CN=Client" --outform pem > client.cert.pem
openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "client" -certfile ca.cert.pem -caname "CA" -out client.cert.p12
#把证书复制到strongswan目录下
cp -r ca.key.pem /etc/strongswan/ipsec.d/private/
cp -r server.key.pem /etc/strongswan/ipsec.d/private/
cp -r client.key.pem /etc/strongswan/ipsec.d/private/
cp -r ca.cert.pem /etc/strongswan/ipsec.d/cacerts/
cp -r server.cert.pem /etc/strongswan/ipsec.d/certs/
cp -r client.cert.pem /etc/strongswan/ipsec.d/certs/
cp -r server.pub.pem /etc/strongswan/ipsec.d/certs/
cp -r client.pub.pem /etc/strongswan/ipsec.d/certs/
4、最最重要的配置Strongswan
vi /etc/strongswan/ipsec.conf
config setup
cachecrls = yes
strictcrlpolicy=yes
uniqueids=no
conn %default
compress = yes
dpdaction = hold
dpddelay = 30s
inactivity = 300s
esp = aes256-sha256,aes256-sha1,3des-sha1!
ike = aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
keyexchange = ike
leftdns = 8.8.8.8,8.8.4.4
rightdns = 8.8.8.8,8.8.4.4
leftikeport = 500
#rightsubnet = [[]][,...]
#authby=psk
#lifetime=86400s
conn android_xauth_psk
keyexchange=ikev1
left=%defaultroute
leftauth=psk
leftsubnet=0.0.0.0/0
right=%any
rightauth=psk
rightauth2=xauth
rightsourceip=10.13.0.0/24
dpdtimeout = 60s
auto=add
conn ikev2
ike=aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024!
esp=aes256-sha256,aes256-sha1,3des-sha1!
dpdaction=clear
dpddelay=300s
rekey=no
fragmentation=yes
eap_identity=%identity
left=%defaultroute
leftid=公网ip
leftsubnet=0.0.0.0/0
leftauth=pubkey
leftcert=fullchain.pem server.cert.pem
leftsendcert=always
leftfirewall=yes
right=%any
rightauth=pubkey
rightsourceip=10.13.0.0/24
rightcert=client.crt
auto=add
auto=add
5、配置文件dns应该在这里设置
vi /etc/strongswan/strongswan.conf
charon {
load_modular = yes
i_dont_care_about_security_and_use_aggressive_mode_psk = yes
compress = yes
plugins {
duplicheck{
enable=no
}
include strongswan.d/charon/*.conf
}
dns1 = 10.13.0.47
nbns1 = 10.13.0.47
}
include strongswan.d/*.conf
6、存放密码等配置信息
vi /etc/strongswan/ipsec.secrets
# ipsec.secrets - strongSwan IPsec secrets file
: PSK sHAXKJB123cm/5e323ku232DS024234
: RSA server.key.pem
#EAP 方式, 格式同 psk 相同 (用户名/密码 例:oneAA/oneTT)
#XAUTH 方式, 只适用于 IKEv1
test %any : XAUTH "123456"
test %any : EAP "123456"
7、修改charon.conf, 配置日志输出文件。
vi /etc/strongswan/strongswan.d/charon.conf
日志为debug使用,配置正常后可注释掉filelog部分。
charon {
filelog {
charon-debug-log {
path = /var/log/charon_debug.log
time_format = %b %e %T
default = 2
mgr = 0
net = 1
enc = 1
asn = 1
job = 1
ike_name = yes
append = no
flush_line = yes
}
}
#这里是其它设置......
}
7、开启内核转发
echo '#' >>/etc/sysctl.conf
echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding=1' >>/etc/sysctl.conf
sysctl -p
8、启用NAT防火墙
iptables -t nat -A POSTROUTING -s 10.13.0.0/24 -o eth0 -j MASQUERADE
9、阿里云安全组需要开放UDP500及4500端口
登录阿里云管理控制台-->云服务器ECS-->网络和安全-->安全组-->添加安全组规则:
授权策略:允许
协议类型:自定义UDP
端口范围:500
授权类型:地址段访问
授权对象:0.0.0.0/0
优先级:2
授权策略:允许
协议类型:自定义UDP
端口范围:4500
授权类型:地址段访问
授权对象:0.0.0.0/0
优先级:2
10、启动服务进行测试
systemctl start strongswan
XauthPSK 连接:
Android 使用XAUTH账户密码及psk连接
Mac 和 Ios 使用EAP账户密码及psk连接
电脑使用ikev2证书链接
第二季 善后
systemctl enable strongswan