在Linux下面可以通过配置 strongswan 等支持IKEv2的程序连接微软的 IKEv2 VPN,也可以使用 sstp-client 连接微软的 SSTP VPN 。
这两个方式也都可以配置为证书方式认证,server段属于Windows的部分相关资料文档也很多,没有什么特别的,这里简单介绍下client部分。
IKEv2 类型
可以安装 network-manager-strongswan,这样直接在图形界面就可以配置,有几点需要特别注意下:
- 连接时提示 “ connection failed because there were no VPN secrets ”
这个可能是个bug,当我配置为直接使用 pfx 格式的证书时,连接时会提示我输入证书key加密的密码,但是它仍然报错,好像是不知道如何读取pfx里面的private key。我只好用openssl命令将pfx文件转为certificate和key两个文件,key仍然可以用加密的文件,然后设置时分别选择对应的文件,连接时再输入key文件的密码即可。 - 连接时提示失败,log中看到类似这样的信息 “localhost charon-nm: 15[IKE] EAP_IDENTITY not supported, sending EAP_NAK”
我们的场景是需要 EAP_IDENTITY的,提示不支持,其实是支持此功能的插件默认未安装,可以安装对应的包,比如:libcharon-extra-plugins - 连接时提示失败,log中看到类似这样的错误:
localhost charon-nm: 12[ENC] parsed IKE_SA_INIT response 0 [ N(NO_PROP) ]
localhost charon-nm: 12[IKE] received NO_PROPOSAL_CHOSEN notify error
可以设置自定义IKEv2加密算法为 aes-sha-modp1024 试试看。
SSTP 类型
这个和PPTP client 相关配置类似,具体也可以参考 sstp-client 相关的文档。