IPSec VPN Windows 10 客户端无法正常工作 - 已解决

IPSec VPN Windows 10 客户端无法正常工作 - 已解决

经过三天的苦思冥想,我终于找到了一个解决方案,可以让我的 Windows 10 Professional 内置 VPN 客户端使用 EAP 和 MSCHAPv2 连接到我的 Linux IPSec VPN 服务器。

我将尽力详细说明遇到的所有故障排除步骤和错误,希望能够为其他人节省一些时间和精力。

我确信这不是最佳的,甚至不是最安全的解决方案,但它确实可以连接。

客户端:Windows 10 Pro 22H2 19045.3208 服务器:带有 Linux Libreswan 4.6 (XFRM) 的 Ubuntu

我将 FQDN 指向路由器的 IP 地址,然后对 UDP IPSec 端口进行端口转发。在 Ubuntu 服务器上,我将 FQDN 设为机器的主机名,但在本地我将其解析为内部 IP 地址。

对于证书,我使用自签名证书,这需要在客户端执行一些额外步骤才能注册。

我也将 P.12 证书放在客户端上,尽管我不确定这是否有必要。

https://wiki.strongswan.org/issues/2613 https://docs.strongswan.org/docs/5.9/interop/windowsCaCert.html https://docs.strongswan.org/docs/5.9/interop/windowsMachineCert.html

pki --gen --type rsa --size 4096 --outform pem > caKey.pem

pki --self --ca --lifetime 3650 --in caKey.pem --type rsa --dn "C=CA, O=VPN Server 13801, CN=VPN Server Root CA 13801" --outform pem > caCert.pem

pki --gen --type rsa --size 4096 --outform pem > serverKey.pem

pki --pub --in serverKey.pem --type rsa | pki --issue --lifetime 3650 --cacert caCert.pem --cakey caKey.pem --dn "C=CA, O=VPN Server 13801, CN=fqdn.server.com" --san="fqdn.server.com" --flag serverAuth --flag ikeIntermediate --outform pem > serverCert.pem

pki --gen --outform pem > clientKey.pem

pki --pub --in clientKey.pem --type rsa | pki --issue --lifetime 3650 --cacert caCert.pem --cakey caKey.pem --dn "C=CA, O=VPN Server 13801, CN=fqdn.server.com" --san="fqdn.server.com" --outform pem > clientCert.pem

openssl pkcs12 -export -inkey clientKey.pem -in clientCert.pem -name "client" -certfile caCert.pem -caname "Server VPN Root CA 13801" -out clientCert.p12

cp serverCert.pem /etc/ipsec.d/certs/
cp caCert.pem /etc/ipsec.d/cacerts/
cp caKey.pem serverKey.pem /etc/ipsec.d/private/

ipsec配置文件

config setup
    charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"
    uniqueids=no

conn %default
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    reauth=no
    mobike=yes

conn ikev2-vpn
    auto=add
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    [email protected]
    leftcert=serverCert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.0.0.90
    rightdns=10.0.0.1
    rightsendcert=never
    eap_identity=%any
    leftauth=pubkey
    esp=aes256gcm16
    ike=aes256-sha256-modp2048!

我没有将其缩减,但它确实有效。因此,其中一个组合必须正确。请记住在文件中添加一行 serverKey.pem。

ipsec.secrets

vpnusername : EAP "password"
: RSA "serverKey.pem"
vpnusername %identity% : EAP "password"
vpnusername %any% : EAP "password"
vpnusername %any : EAP "password"
%any : EAP "password"

我还对在各个论坛中发现的 Windows 注册表做了一些更改,以忽略 IKE 名称、更新密钥交换算法等.....我无法确认它们是否对此配置有任何影响。

相关内容