You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu重启后DNS无法解析主机,如何避免手动执行修复命令?

解决Ubuntu重启后DNS无法解析的持久化方案

我太懂每次重启都要手动敲命令修复DNS的烦躁了——咱们直接从根源解决这个问题,以后再也不用重复操作!以下是一步步的实操方案:

1. 确保resolvconf服务开机自启

问题的核心往往是resolvconf服务在重启后没自动启动,导致DNS配置无法正常生成。执行这条命令让它开机就运行:

sudo systemctl enable --now resolvconf.service

这条命令会同时启用并立即启动resolvconf服务,确保重启后它能自动接管DNS配置。

2. 修复resolv.conf符号链接并锁定配置

现在要确保/etc/resolv.conf的链接不会被系统其他服务覆盖:

  1. 先删除可能存在的无效文件或链接:
    sudo rm -f /etc/resolv.conf
    
  2. 创建正确的符号链接指向resolvconf生成的配置文件:
    sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
    
  3. 强制resolvconf更新DNS配置:
    sudo resolvconf -u
    

3. 阻止NetworkManager覆盖DNS配置

很多时候NetworkManager会自动生成自己的resolvconf文件,把我们设置的链接覆盖掉。我们需要让它把DNS管理交给resolvconf:

  1. 编辑NetworkManager的配置文件:
    sudo nano /etc/NetworkManager/NetworkManager.conf
    
  2. 在[main]部分添加或修改以下内容:
    dns=resolvconf
    
  3. 保存退出(按Ctrl+O回车,再按Ctrl+X),然后重启NetworkManager服务:
    sudo systemctl restart NetworkManager.service
    

4. 备选方案:改用systemd-resolved管理DNS(如果resolvconf方案无效)

如果你的系统更依赖systemd-resolved,也可以切换到这个服务来管理DNS:

  1. 启用并启动systemd-resolved服务:
    sudo systemctl enable --now systemd-resolved.service
    
  2. 创建正确的符号链接指向systemd-resolved的配置:
    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    
  3. 编辑/etc/systemd/resolved.conf,确保里面的DNS服务器配置正确(比如添加常用的公共DNS):
    [Resolve]
    DNS=8.8.8.8 114.114.114.114
    FallbackDNS=8.8.4.4
    
    保存后重启服务:
    sudo systemctl restart systemd-resolved.service
    

完成以上步骤后,重启你的Ubuntu系统测试一下——应该再也不用手动敲命令修复DNS了!

内容的提问来源于stack exchange,提问作者Vitalii Kravchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:13:53