域名服务器的多种可能配置之间的关系

域名服务器的多种可能配置之间的关系

有很多(恕我直言,太多)地方可以配置所使用的 DNS 服务器,但我不确定它们之间的关系。有几个问题是:哪些配置只是有条件地查询(例如,如果我理解正确的话,如果相应的服务没有运行,则不会查询systemd配置)?哪些配置会覆盖哪些配置?配置 DNS 的推荐方法是什么?

举几个配置DNS服务器的地方(以及我所知道的一些其他信息,如果有任何误解,请纠正),

  1. 写入/etc/resolv.conf并使用chattr以强制其在重新启动后保持持久性(我认为不鼓励这样做)
  2. resolvconf。中的各个文件中进行配置/etc/resolvconf/resolv.conf.d。用于resolvconf -a添加 DNS 并resolvconf -u更新它
  3. systemd-resolve(d),一个单位systemd。配置在/etc/systemd/resolvd.conf.它使用该地址127.0.0.53作为 中的虚拟 DNS 解算器/etc/resolv.conf。真实的resolv.conf存在于/var/run/systemd/resolve/resolv.conf.在较新的版本中(从哪个版本开始?),systemd-resolve --status可用于查询当前的 DNS 状态。
  4. /etc/network/interfaces。这一个与/etc/systemd/system/network-online.target.wants/networking.service
  5. Network-Manager,一个在 GUI 中驱动网络配置上下文菜单的组件。如果在 中配置了接口/etc/network/interfaces,它将拒绝再次管理它(如not managedGUI 上下文菜单中所示)。

我正在Ubuntu 18.04 LTS使用 Unity 桌面环境运行。

答案1

配置 DNS 的推荐方法是什么?

...

我正在使用 Unity 桌面环境运行 Ubuntu 18.04 LTS。

在可能的情况,建议您使用这个:

5. Network-Manager,驱动 GUI 中网络配置上下文菜单的组件。

例如,官方 Ubuntu 桌面指南是这么说的。我尚未验证这是最新的,但我没有理由怀疑它。

https://help.ubuntu.com/lts/ubuntu-help/net-manual.html.en

如果您的网络不会自动将网络设置分配给您的计算机,您可能需要自己手动输入设置。本主题假设您已经知道要使用的正确设置。如果没有,您可能需要询问网络管理员或查看路由器或网络交换机的设置。

要手动设置网络设置:

...

7. 在 DNS 部分...


在大多数系统上,系统只会查看 的内容/etc/resolv.conf。 (但可能有各种不同的系统编辑此文件的内容)。

正如 Patrick 所指出的,在某些系统上,会出现更高优先级的插件grep '^hosts:' /etc/nsswitch.confdns是标准的 glibc 插件,读取/etc/resolv.conf.

特别是,如果您resolve之前有过dns,则 this 指的是systemd-resolved。它会systemd-resolved在使用 中的 DNS 服务器之前尝试访问/etc/resolv.conf

systemd-resolved正如您所指出的,可以通过运行来查看可能会查询的 DNS 服务器(如果有)systemd-resolve --status

正如您所指出的,NetworkManager 方法预计不会与手动编辑兼容/etc/resolv.conf(因为 NetworkManager 将编辑此文件本身)。当然,如果您阻止 NetworkManager 进行编辑/etc/resolv.conf,则 NetworkManager 方法将不起作用。

相关内容