network---阿里云HongKongESC配置strongswan5.7.2 for Google...

时间:2024-03-11 11:52:36

第一季 概念

为什么选择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

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