很多Ubuntu桌面用户在使用系统自带的VPN客户端或者第三方VPN工具时,经常会遇到VPN异常断开后,本地普通网络也无法访问的问题,明明WiFi或者有线连接显示正常,却打不开网页、连不上本地局域网设备,这类问题大多是VPN路由规则没有自动清理导致的,下面我们就从现象排查到逐项操作,一步步帮你快速恢复正常网络连接,同时避免后续同类问题频繁出现。
先确认故障现象排除基础网络本身的问题
首先不要上来就修改VPN相关配置,先做最基础的网络校验,你可以先点击Ubuntu桌面右上角的网络图标,查看当前有线或者WiFi的连接状态,确认没有出现已断开的红色提示。
接下来尝试访问局域网内的共享打印机、NAS设备,或者用手机连接同一个路由器的热点测试外网连通性,如果这一步都无法连通,说明故障根源不是VPN残留配置,而是物理连接或者本地网卡本身的问题,先排查网线松动、WiFi密码过期这类基础问题,不要直接动系统路由规则。
清理VPN残留的路由转发规则
如果前面确认基础物理网络是正常的,绝大多数情况都是VPN异常退出时,没有自动把之前添加的全局路由规则删掉,系统还是把所有网络流量往已经不存在的VPN虚拟网卡上转发,自然就没法连通外网。
你可以先打开Ubuntu桌面的终端窗口,输入ip route show命令查看当前所有路由表,正常情况下VPN断开后,默认路由的下一跳应该是你家路由器或者上级网关的地址,要是看到默认路由指向了一个陌生的虚拟网卡地址,那就是残留规则在作祟。
这时候你可以直接输入sudo ip route flush table main命令清空主路由表,之后系统会自动重新生成符合当前物理网络的路由规则,执行完之后稍等几秒,再尝试打开普通网页,大部分情况下网络就能直接恢复。
重置VPN虚拟网卡状态
如果清理完路由表之后网络还是不通,大概率是VPN创建的tun或者tap虚拟网卡没有正常释放,一直处于占用状态,干扰了真实物理网卡的流量转发。
你可以在终端输入ip addr show命令,查看列表里有没有名称带tun、tap或者vpn字样的虚拟网卡,如果存在这类没有被正常回收的网卡,就输入sudo ip link delete 对应的网卡名命令把它手动删掉。
操作完成之后你可以再重启一下NetworkManager服务,输入sudo systemctl restart NetworkManager,系统会自动重新加载所有物理网卡的配置,这时候你再查看网络状态,之前被占用的网络端口就会全部归还给普通网络使用。
检查DNS配置残留的VPN服务器地址
很多用户容易忽略DNS配置的问题,VPN连接时会自动把系统DNS改成VPN服务商提供的地址,VPN异常断开之后这个DNS地址没有被改回本地运营商的DNS,就会出现能ping通公网IP却打不开域名网页的情况。
Ubuntu桌面现在默认用systemd-resolved服务管理DNS,你可以点击桌面的设置面板,进入网络选项,找到当前在用的物理连接,点开IPv4设置页,把DNS选项改成自动(DHCP),或者手动填入公共的合法DNS地址,保存之后重启网络连接就可以覆盖之前残留的VPN DNS配置。
这里要注意一个常见误区,不要随便去修改/etc/resolv.conf文件,现在Ubuntu的这个文件是软链接自动生成的,手动修改的内容重启之后就会失效,反而会带来更多配置冲突。
全部操作完成之后,你可以尝试重新手动断开一次正常连接的VPN,确认系统可以自动清理所有相关规则,后续如果再遇到VPN异常崩溃的情况,就可以按照这个流程快速定位故障点,不用重启整个系统就能快速恢复Ubuntu桌面的普通网络访问。


