在Ubuntu 20.04中,DNS(域名系统)不稳定的问题可能会导致互联网连接和域名解析出现间歇性失败。这种情况往往与 /etc/resolv.conf文件被系统服务,如 systemd-resolved或NetworkManager意外更改有关。为了解决这个问题,本文将提供一系列步骤,以确保DNS设置的稳定性,并防止 /etc/resolv.conf文件被意外修改。

了解 /etc/resolv.conf

在深入了解解决方案之前,首先需要理解 /etc/resolv.conf文件的作用。这个文件是Linux系统用来存储DNS服务器信息的关键配置文件。系统中的应用程序会查询此文件,以找到解析域名所需的DNS服务器。

方法一:使用静态 resolv.conf文件

  1. 禁用 systemd-resolved服务(如果已启用)

    systemd-resolved是一个系统服务,它管理DNS解析器的设置。如果它在不断地修改 /etc/resolv.conf文件,可以考虑禁用它。

    sudo systemctl disable --now systemd-resolved
  2. 创建静态的 resolv.conf文件

    首先,删除当前的 /etc/resolv.conf文件,然后创建一个新的静态文件。

    sudo rm /etc/resolv.conf
    echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
    echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf

    这里,我们使用了Google的公共DNS服务器(8.8.8.8和8.8.4.4)作为示例。你可以根据自己的需要更换为其他DNS服务器地址。

  3. 设置 /etc/resolv.conf为只读

    为了防止其他进程修改这个文件,可以将其设置为只读。

    sudo chattr +i /etc/resolv.conf

    使用 +i属性,使文件变为不可修改状态。如果未来需要更改此文件,需要先用 sudo chattr -i /etc/resolv.conf移除只读属性。

方法二:配置NetworkManager

如果你使用NetworkManager管理网络连接,可以通过配置NetworkManager来指定DNS服务器,而不是直接修改 /etc/resolv.conf文件。

  1. 编辑NetworkManager配置

    打开 /etc/NetworkManager/NetworkManager.conf文件,在 [main]部分添加或修改以下行:

    dns=none

    这会告诉NetworkManager不要自动管理DNS设置。

  2. 重启NetworkManager

    sudo systemctl restart NetworkManager
  3. 手动配置DNS服务器

    接下来,按照方法一中的步骤创建静态的 /etc/resolv.conf文件,并设置为只读。

总结

通过上述方法,你可以有效地解决Ubuntu 20.04中的DNS不稳定问题,并保护 /etc/resolv.conf文件不被意外修改。这不仅可以提升网络连接的稳定性,还可以避免因DNS问题导致的访问延迟或失败。记得在进行任何系统配置更改之前,备份相关文件,以便在需要时恢复原始设置。

云服务器/高防CDN推荐

蓝易云国内/海外高防云服务器推荐


海外免备案云服务器链接:www.tsyvps.com

蓝易云安全企业级高防CDN:www.tsycdn.com

持有增值电信营业许可证:B1-20222080【资质齐全】

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2024 年 02 月 26 日
如果觉得我的文章对你有用,请随意赞赏