网站搜索

如何在 Ubuntu 和 Debian 中设置永久 DNS 名称服务器


/etc/resolv.confDNS 名称解析器库的主要配置文件。解析器是 C 库中的一组函数,提供对互联网域名系统 (DNS) 的访问。这些功能配置为检查 /etc/hosts 文件或多个 DNS 名称服务器中的条目,或者使用网络信息服务NIS )。

在使用 systemd(系统和服务管理器)的现代 Linux 系统上,DNS名称解析服务通过 >systemd-resolved 服务。默认情况下,该服务有四种不同的模式来处理域名解析,并在默认操作模式下使用 systemd DNS 存根文件 (/run/systemd/resolve/stub-resolv.conf)。

DNS 存根文件包含本地 存根 127.0.0.53 作为唯一的 DNS 服务器,并且它被重定向到用于添加 DNS 服务器的 /etc/resolv.conf 文件。系统使用的名称服务器。

如果您在 /etc/resolv.conf 上运行以下 ls 命令,您将看到该文件是到 /run/systemd/resolve/stub-resolv.conf 的符号链接 文件。

ls -l /etc/resolv.conf

lrwxrwxrwx 1 root root 39 Feb 15  2019 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

不幸的是,因为 /etc/resolv.conf 是由 systemd-resolved 服务间接管理的,并且在某些情况下由网络服务(通过使用 initscripts<NetworkManager),用户手动所做的任何更改都无法永久保存或只能保存一段时间。

在本文中,我们将展示如何安装和使用 resolvconf 程序在 Debian/etc/resolv.conf 文件中设置永久 DNS 名称服务器strong> 和 Ubuntu Linux 发行版。

为什么要编辑 /etc/resolv.conf 文件?

主要原因可能是系统的 DNS 设置配置错误,或者您更喜欢使用特定的名称服务器或您自己的名称服务器。以下 cat 命令显示了我的 Ubuntu 系统上 /etc/resolv.conf 文件中的默认名称服务器。

cat /etc/resolv.conf

在这种情况下,当 APT 包管理器等本地应用程序尝试访问本地网络上的 FQDN完全限定域名)时,结果是“名称解析暂时失败”错误,如下一个屏幕截图所示。

当您运行 ping 命令时也会发生同样的情况。

ping google.com

因此,当用户尝试手动设置名称服务器时,所做的更改不会持续很长时间,或者在重新启动后会被撤销。要解决此问题,您可以安装并使用 reolvconf 实用程序以使更改永久生效。

要按下一节所示安装 resolvconf 软件包,您需要首先在 /etc/resolv.conf 文件中手动设置以下名称服务器,以便您访问互联网上 Ubuntu 存储库服务器的 FQDM。

nameserver 8.8.4.4
nameserver 8.8.8.8

另请阅读:如何在 Linux 中使用 /etc/hosts 文件设置本地 DNS

在 Ubuntu 和 Debian 中安装 resolvconf

首先,更新系统软件包,然后通过运行以下命令从官方存储库安装 resolvconf

sudo apt update
sudo apt install resolvconf

一旦resolvconf安装完成,systemd将触发resolvconf.service自动启动并启用。要检查它是否已启动并正在运行,请发出以下命令。

sudo systemctl status resolvconf.service

如果由于某种原因该服务没有自动启动并启用,您可以按如下方式启动并启用它。

sudo systemctl start resolvconf.service
sudo systemctl enable resolvconf.service
sudo systemctl status resolvconf.service

在 Ubuntu 和 Debian 中设置永久 DNS 名称服务器

接下来,打开/etc/resolvconf/resolv.conf.d/head配置文件。

sudo nano /etc/resolvconf/resolv.conf.d/head

并在其中添加以下行:

nameserver 8.8.8.8 
nameserver 8.8.4.4

保存更改并重新启动 resolvconf.servicesystemd-resolved 或重新启动系统。

sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service

现在,当您检查 /etc/resolv.conf 文件时,名称服务器条目应该永久存储在那里。从此以后,您将不会在系统上遇到任何有关名称解析的问题。

我希望这篇简短的文章能够帮助您在 Ubuntu 和 Debian 系统中设置永久 DNS 名称服务器。如果您有任何疑问或建议,请在下面的评论部分与我们分享。