很多Linux Mint用户使用系统集成的NetworkManager配置VPN连接办公内网或者其他专用网络时,经常会遇到VPN异常断开之后,本地网络没法正常访问公网,甚至连局域网内的共享打印机、NAS文件夹都打不开的情况。不少新手遇到这类故障第一反应是重启系统,反而耽误了手头的工作进度,下面就从实际故障定位出发,整理覆盖绝大多数场景的分步解决方法,不需要复杂的第三方工具就能快速恢复正常网络。
先排查VPN残留路由规则的问题
Linux Mint的NetworkManager默认在VPN启动时会生成优先级更高的全局路由,把所有流量都导向VPN隧道,要是VPN进程异常崩溃、远程服务器主动终止连接,系统来不及自动删除这些临时生成的路由规则,就会导致普通物理网卡的流量找不到正确的出口,表现为所有网络请求都超时。
排查的时候先打开终端,输入ip route show命令查看当前的主路由表,要是看到还有以VPN网关地址为下一跳的默认路由条目,就可以确定是残留路由规则导致的故障。
这时候不需要急着重连VPN,直接输入sudo ip route flush table main清空主路由表,之后重启本地网卡服务,输入sudo systemctl restart NetworkManager,系统就会自动重新加载本地宽带或者WiFi的正常路由规则,恢复基础网络连通性。
处理VPN修改过的DNS配置残留
很多VPN客户端为了避免本地DNS查询泄露真实位置,会自动把系统的DNS服务器改成VPN服务商提供的专用地址,VPN断开之后如果没有自动改回原有配置,就会出现能ping通公网IP但是打不开任何网页的情况,这也是很多用户误以为网络没恢复的最常见原因。
Linux Mint 21及以上版本用的是systemd-resolved服务管理全局DNS,你可以点击桌面右下角的网络图标,进入当前在用的物理网络连接设置页,找到IPv4标签下的DNS栏目,把之前被VPN改成陌生地址的DNS服务器,改回你本地运营商提供的DNS地址或者公共通用DNS地址。
修改完成之后打开终端输入sudo systemctl restart systemd-resolved,之后可以尝试ping常用的公网域名,要是能正常返回对应IP就说明DNS配置已经恢复正常。很多新手的误区是直接手动修改/etc/resolv.conf文件,这个文件在新版Linux Mint里是动态生成的软链接,手动修改之后重启网络服务就会被自动覆盖,完全没必要做这类无用功。
重置VPN客户端留下的防火墙规则
部分带流量隧道封装功能的VPN客户端,会自动在系统默认的ufw防火墙里添加转发和NAT规则,VPN异常断开之后这些规则没有及时回收,就会拦截本地网卡的普通出站流量,甚至会阻断同局域网下的设备互访。
操作的时候先打开终端输入sudo ufw status查看当前的防火墙规则,要是看到有大量带tun前缀或者VPN虚拟接口名的允许转发规则,就可以输入sudo ufw reset重置防火墙到默认配置,之后再输入sudo ufw enable重新启用桌面端默认的防火墙规则。
这时候你可以尝试访问本地局域网的共享设备,比如同网段的办公共享文件夹,要是之前因为VPN防火墙规则拦截没法访问,现在就可以正常加载内容。
极端场景下的完整恢复操作
要是前面几步操作之后网络还是异常,大概率是VPN的内核模块出现了残留占用,这时候可以先完全关闭所有VPN相关的进程,输入sudo killall -9 openvpn或者对应你所用VPN协议的进程名,清理掉后台残留的僵死进程。
之后重启系统的网络栈相关服务,不需要重启整台设备,操作完成之后你可以用浏览器随便打开一个常用的公网网站,验证网络访问是否正常。日常使用的时候建议不要直接强制关闭VPN客户端,优先用系统网络面板里的断开按钮手动终止连接,能大幅降低这类残留故障出现的概率。
蓝快加速器 
