You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法修改resolv.conf:重启或切换WiFi后配置重置求助

解决resolv.conf重启/WiFi开关后被重置的问题

你遇到的是典型的系统网络管理服务自动覆盖resolv.conf配置的问题——127.0.0.1一般是本地DNS缓存服务(比如systemd-resolved)的地址,但如果这个服务未正常运行,就会导致域名解析失败。之前修改base文件、dhclient.conf的操作没生效,大概率是因为你没针对实际管理网络的核心服务做配置,下面给你几个针对性的解决方案:

方案1:针对systemd-resolved服务(Ubuntu 18.04+/Debian 10+常见)

如果你的系统用systemd-resolved管理DNS,resolv.conf通常是指向该服务的符号链接,直接修改文件会被自动覆盖,正确操作如下:

  • 打开resolved的配置文件:
    sudo nano /etc/systemd/resolved.conf
    
  • 找到DNS=行,去掉注释并填入自定义DNS服务器:
    DNS=8.8.8.8 8.8.4.4
    
  • 确保DNSStubListener=保持默认的yes,然后重启服务:
    sudo systemctl restart systemd-resolved
    
  • 若resolv.conf的符号链接异常,重新建立链接:
    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    

方案2:针对NetworkManager服务(桌面版系统常用)

如果你的网络由NetworkManager管理,它会自动生成resolv.conf,需要修改它的配置规则:

  • 编辑NetworkManager主配置:
    sudo nano /etc/NetworkManager/NetworkManager.conf
    
  • [main]段落添加/修改以下内容,禁止自动覆盖resolv.conf:
    dns=none
    
  • 或者更友好的方式:通过图形界面设置自定义DNS
    1. 打开系统网络设置,找到当前WiFi连接,进入「IPv4设置」
    2. 将DNS方法改为「手动」,添加8.8.8.88.8.4.4
    3. 保存后重启NetworkManager:
      sudo systemctl restart NetworkManager
      

方案3:应急锁定resolv.conf(不推荐长期使用)

如果上面的方法暂时没生效,可以先锁定文件防止被覆盖:

  • 先写入正确的DNS配置:
    sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf
    
  • 设置文件为不可修改状态:
    sudo chattr +i /etc/resolv.conf
    
  • 后续需要修改时,先取消锁定:
    sudo chattr -i /etc/resolv.conf
    

验证配置生效

修改完成后,重启WiFi或网络服务,然后执行以下命令确认:

cat /etc/resolv.conf
nslookup google.com

如果能正常解析域名,说明配置生效。

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

火山引擎 最新活动