升级Kubuntu 17.10后断开内网无法访问somedomain.com站点求助
嘿,这个问题我之前在升级Ubuntu系发行版的时候也碰到过,简直一模一样!核心原因大概率是内网的DNS解析配置残留——当你连接到somedomain.com的内网时,系统会获取到针对该域名的专属DNS解析规则,断开内网后这些规则没有被自动清理,导致系统还死磕着内网DNS服务器去解析这个域名,自然连不上公网的站点了。下面是我亲测有效的排查和解决步骤:
1. 先确认DNS解析异常
断开内网后,先通过命令验证解析结果:
nslookup somedomain.com
如果输出里的DNS服务器是内网地址,或者解析出的IP是内网段的(比如192.168.x.x、10.x.x.x),那就实锤是DNS配置残留的问题了。
2. 快速清除DNS缓存(临时解决)
Kubuntu 17.10默认用systemd-resolved管理DNS,直接重启这个服务就能清空缓存:
sudo systemctl restart systemd-resolved
执行完后立刻试试ping somedomain.com或者访问站点,大概率能恢复正常。如果还是不行,可以手动删除缓存文件再重启:
sudo rm /var/cache/systemd/resolved/*.cache sudo systemctl restart systemd-resolved
3. 重置NetworkManager的DNS配置
有时候NetworkManager会“记住”内网的DNS设置,不会自动切换回公网DNS:
- 点击右上角的网络图标,打开「编辑连接」
- 选中当前正在使用的网络(WiFi/有线),点击「编辑」
- 切换到「IPv4设置」标签,把DNS服务器改成公网DNS(比如
8.8.8.8,1.1.1.1),或者选择「自动(DHCP)但忽略DNS」 - 保存设置后,断开再重新连接网络
4. 检查hosts文件是否被篡改
部分内网环境会自动修改/etc/hosts文件,添加somedomain.com的内网IP映射,断开后不会自动删除:
cat /etc/hosts
如果看到类似192.168.1.100 somedomain.com的行,直接删除这一行,保存后就能生效。
5. 配置长期解决方案(避免再复发)
如果每次断开内网都出问题,可以让系统优先用公网DNS解析所有域名:
编辑/etc/systemd/resolved.conf文件:
sudo nano /etc/systemd/resolved.conf
修改成以下内容:
[Resolve] DNS=8.8.8.8 1.1.1.1 FallbackDNS= Domains=~.
Domains=~.表示所有域名都优先使用这里配置的DNS,不会被内网的DNS规则覆盖。保存后重启服务:
sudo systemctl restart systemd-resolved
如果以上步骤都没解决问题,可以查看NetworkManager的日志找线索:
journalctl -u NetworkManager --since "10 minutes ago"
看看断开内网时有没有报错信息。
内容的提问来源于stack exchange,提问作者fifaltra

