在 /etc/resolv.conf.d 中实现 /etc/resolv.conf 中的更改的“正确方法”是什么?

在 /etc/resolv.conf.d 中实现 /etc/resolv.conf 中的更改的“正确方法”是什么?

过去,我resolv.conf是静态的,你自己编辑它。

稍后,DHCP 客户端将使用一些静态条目以及从 DHCP 租约中获得的内容来重写它。

如今,一些发行版 - 比如我的(Linux Mint 18.1)有一个/etc/resolv.conf.d包含多个脚本子目录的机制,而且,我无法理解它。

那么,正确的方法是什么...

  • 表明我想要使用还是不使用在 DHCP 租约中获得的 DNS 服务器?
  • 始终向 resolv.conf 添加固定条目,还是在没有获得 DHCP 租用的名称服务器时作为后备?
  • 决定文件中的相对顺序?

如果有必要的话,我不介意自己写一些脚本,我只是不想“违背”现有机制或做重复的工作。

答案1

答案很简单,resolv.conf.d文件夹存在于 /etc/resolvconf/ 中,包含 head/base/original 和 tail 文件。如果编辑它们中的每一个,都会更新resolv.conf文件在/etc/中

假设您想在 /etc/ 的开头放置一些静态 DNS 地址resolv.conf(因为每次重新启动时它都会自动重置为其默认设置),您需要编辑head文件/etc/resolvconf/resolv.conf.d/ 并输入例如:

nameserver 1.1.1.1
nameserver 1.0.0.1

之后使用以下命令重新启动 resolvconf 服务:

sudo service resolvconf restart

现在猫resolv.conf在 /etc/ 中,您将看到新的更改。

如果你想把东西放在文件的底部,同样的事情也适用,你可以使用tail代替head在/etc/resolvconf/resolv.conf.d/

PS:这是 100% 经过测试并且可以在 Ubuntu 和 Debian 上运行的

编辑:我已经回答了您问题的最后两个要点,现在涉及第一个要点,其中讨论如何不使用 DHCP 提供的 DNS 地址。这实际上取决于您安装的 DNS 软件/软件包,因此我建议您检查一下邮政,并确保您也阅读了下面的内容(如果您有的话)dnsmasq

答案2

solve.conf 和类似的一些机制从过去几年一直存在到现在。有命令行dhclient可以resolvconf处理这个文件,但是近年来Linux引入了新的接口来配置NetworkManager,名称为纳米克利。这是管理每个持久网络配置(而不是运行时)的丰富命令。你可以使用类似的东西:

$ nmcli connection modify eth0 ipv4.dns 8.8.8.8

该命令将覆盖resolv.conf文件。在 RHCA 中,建议不要手动编辑 resolv.conf 并使用其命令。关于您提到的 resolvconf 目录,我可以说有些服务可能有自己的 DNS 配置,因此它们使用自己的配置,例如 OpenVpn 。您/etc/nsswitch还可以检查文件以获取有关解析 .

相关内容