背景:
工作软件环境:
-
os:deepin20
-
vpn:公司vpn(采用的是l2tp/ipsec,申请的居家办公),方便查资料的vpn(懂得都懂)
2022年4月8日,晚上干完活,准备下班了,发现deepin有更新了,就随手点了更新,然后日常重启。
悲催的事情在重启之后发生了,公司的vpn无法连接了,而另一个vpn正常。
概念介绍:
简单说说自己对l2tp/ipsec的理解:l2tp建立了我和公司局域网之间的通道,但是这个通道还没有加密,ipsec就在这个通道上进行了加密操作。
排查原因:
在deepin更新之前,我看了下更新内容,内核有更新(当时忘记了deepin的内核需要自己更新,还以为系统更新了内核就更新了),还有其他的一些安全更新,和日常的软件更新,并没有针对vpn的一些协议更新。(为什么要看更新内容,主要是踩过windows的一次坑,windows11 2022年1月份左右的一次更新,对vpn中的某些协议内容进行了更新,然后导致vpn无法使用,幸好微软官方及时发布了补丁)
1、问题:难道是内核的更新导致vpn无法使用?
deepin目前的vpn管理是使用的开源的network-manager-l2tp 和 network-manager-l2tp-gnome进行管理vpn的,连接vpn的时候需要填写ipsec的相关信息。 image.png初步怀疑:难道是内核更新之后,导致密钥交换协议更新了,然后无法使用。(密钥的加密等级太低,会在后面的更新中慢慢淘汰掉)
先查看公司vpn支持的密钥交换协议,推荐这个脚本
image.png或者直接使用ike-scan :
1、安装:sudo apt install ike-scan
2、命令:ike-scan vpn地址
通过以上两种方式都可以得到公司服务器支持的vpn加密协议方式,通过第二种方式获取到的加密协议方式发现和我之前的不一样,开始了接下来的瞎折腾。
第一次连接vpn的时候,曾安装过:libreswan(sudo apt install libreswan),发现自己本地的3.27.1版本,官方最新的版本已经是4.6了,但是我本地的版本已经是Debian仓库最新的了。简单尝试编译了一下,失败了。太晚了,就休息了。
第二天,搜索的时候,发现libreswan、strongswan和openvpn这三个被并列说过,经过查询,这三个是ipsec最终的实现方式。一边通过sudo journalctl -u NetworkManager -f查看日志,一边卸载libreswan,安装strongswan尝试换个软件是否可以使用。(在这儿犯了一个错,没有看完整的日志,只看到了输出时加粗的那句:g_dbus_method_invocation_take_error:(又被误导了))
查了n多资料...基于l2tp/ipsec的大概实现方式自己已经知道了。开始最后的排查。
2、最后的排查
基于l2tp/ipsec的实现方式基本已经知道了,理理思路进行排查。
- 先查看公司vpn支持的协议
- 查看自己电脑支持的vpn协议:我自己是通过ipsec status进行查看的(看了个半懂)
- 最后重新创建一个新的vpn连接试试(在这儿终于发现问题了)
3、解决
在最后重新新建vpn的时候,发现通过域名解析的vpn地址和之前的不一样。
-----------------此处省略300字----------------
新建vpn终止,直接将原来的vpn地址换成现在新的vpn ip地址,连接成功..............
4、为什么会发生这样的问题
郁闷的找同事一吐槽,结果他告诉我,我们经理昨晚启动过路由器,因为公司的网被劫持了,所以重启了。。。就导致了deepin这种不能采用域名进行连接vpn的人的悲催。
5、总结
vpn无法连接,其实很简单。。。
网友评论