不用每次重启 Ubuntu,通常重启网络管理服务 / 重新连接网卡 / 重置 DNS 就能恢复。你这个现象很像关闭虚拟网卡、TUN、VPN、代理后,路由或 DNS 没恢复。
桌面版 Ubuntu 一般先用这组:
sudo systemctl restart NetworkManager
sudo systemctl restart systemd-resolved
然后再开关一下网络:
nmcli networking off
sleep 2
nmcli networking on
如果你用的是 Wi-Fi:
nmcli radio wifi off
sleep 2
nmcli radio wifi on
查看当前连接名:
nmcli connection show --active
假设连接名叫 Wired connection 1 或你的 Wi-Fi 名称,可以重连它:
nmcli connection down "连接名"
nmcli connection up "连接名"
例如:
nmcli connection down "Wired connection 1"
nmcli connection up "Wired connection 1"
如果还是不行,清一下 DNS:
resolvectl flush-caches
sudo systemctl restart systemd-resolved
然后测试一下是 DNS 问题还是网络问题:
ping -c 4 223.5.5.5
ping -c 4 baidu.com
如果 223.5.5.5 能通,但 baidu.com 不通,基本就是 DNS 没恢复。
如果你是服务器版 Ubuntu,或者用 netplan,可以执行:
sudo netplan apply
sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-resolved
建议你以后关闭"虚拟网卡模式 / TUN 模式 / VPN 模式"前,先在软件里关掉代理或 TUN,再关闭程序。很多代理软件直接退出会留下错误的默认路由或 DNS,导致系统看起来"断网"。