Debian 10下Windows和macOS登录StrongS

2021-08-09  本文已影响0人  Wilson_Li

Debian 10自带了StrongSwan 5.7.2,安装时注意将libstrongswan-extra-pluginslibcharon-extra-plugins插件包也安装上,否则缺少了eap-mschapv2等的认证方式,windows客户端无法连接。

apt install strongswan strongswan-pki libstrongswan-extra-plugins libcharon-extra-plugins

进入/etc/ipsec.d目录,生成系统CA私匙和CA证书:

pki --gen --outform pem > caKey.pem
pki --self --in caKey.pem --dn "C=CN, O=MyVPS, CN=Domain_or_IP" --ca --lifetime 3650 --outform pem >caCert.pem

生成VPN服务器用于认证客户端的私匙和证书,由于Windows操作系统ikev2认证时并不会交换整个DN而只发送CN,因此需要绑定--san参数与CN值一致,而且需要加上serverAuth的标志,ikeIntermediate标志则是为了兼容旧的osX系统:

pki --gen --outform pem > vpnKey.pem
pki --pub --in vpnKey.pem | pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CN, O=MyVPS, CN=Domain_or_IP" --san Domain_or_IP --flag serverAuth --flag ikeIntermediate --outform pem > vpnCert.pem

私匙和证书生成了之后,将caKey.pemvpnKey.pem放入/etc/ipsec.d/private目录,caCert.pem放入/etc/ipsec.d/cacerts目录,vpnCert.pem放入/etc/ipsec.d/certs目录,StrongSwan会在相应的目录中寻找需要的密匙和证书文件,因此不能搞错。

然后进入配置StrongSwan服务器的阶段。首先是/etc/strongswan.conf文件:

charon {
    load_modular = yes # 这个配置项会加载所有安装了的charon插件,若想只加载部分插件,用下面的load=配置项,空格分隔插件名
    #load = random nonce aes des sha1 sha2 md4 pem pkcs1 curve25519 gmp x509 curl revocation hmac stroke kernel-netlink socket-default fips-prf eap-mschapv2 eap-identity updown
    plugins {
        include strongswan.d/charon/*.conf
    }
    dns1 = 8.8.8.8
    dns2 = 8.8.4.4
    #nbns1 = 10.1.0.1
    #nbns2 = 10.1.1.1
}

/etc/strongswan.d目录下的配置文件是对插件和服务器其它行为的配置,一般不需要手工调整。

接下来是/etc/ipsec.conf的配置,这是配置VPN连接的,以下是配置macOS和iOS使用PSK(预共享密匙)连接和Windows的EAP-mschap2认证的:

config setup
    # strictcrlpolicy=yes
    uniqueids = no

conn %default
    #ikelifetime=60m
    #keylife=20m
    rekeymargin=3m
    keyingtries=1
    keyexchange=ikev2
    leftfirewall=yes   # 打开leftfirewall选项,strongswan服务器会在建立连接的时候自动生成数据转发的iptables条目

conn windows-eap
    ike=aes256-sha1-modp1024!
    esp=aes256-sha1!
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftsubnet=0.0.0.0/0
    leftid=这里是vpnCert.pem证书中CN(--san参数)的字符串
    leftcert=vpnCert.pem
    leftauth=pubkey
    right=%any
    rightsourceip=10.1.0.0/24
    rightauth=eap-mschapv2
    rightsendcert=never
    eap_identity=%any
    auto=add

conn macos-psk
    ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024
    esp=aes256-sha256,3des-sha1,aes256-sha1
    dpdaction=clear
    rekey=no
    compress=no
    type=tunnel
    fragmentation=yes
    left=%any
    leftsubnet=0.0.0.0/0
    leftid=这里是vpnCert.pem证书中的CN字符串
    right=%any
    rightsourceip=10.1.0.0/24
    rightid=%any
    authby=secret
    auto=add

然后在/etc/ipsec.secrets文件里配置各连接的认证用户名和密码:

# Windows EAP-MSCHAPv2认证方式,需要在客户端安装vpnCert.pem证书文件
: RSA vpnKey.pem
用户名 : EAP "密码"
#user@domain : EAP "password"

# 预共享密匙认证方式
: PSK "预共享密匙"

Debian 10默认使用firewalld作为防火墙的前端管理,需要打开ipsec服务的端口,另外,由于打开了ipsec.conf里的leftfirewall选项,StrongSwan服务器会在VPN连接建立的时候自动配置转发规则,因此需要打开防火墙的masquerade规则:

firewall-cmd --zone=public --add-service=ipsec --permanent
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload

配置完成。可以启动StrongSwan服务器,并查询其状态:

systemctl start strongswan
systemctl enable strongswan
ipsec statusall
上一篇下一篇

猜你喜欢

热点阅读