![在 /etc/resolv.conf.d 中实现 /etc/resolv.conf 中的更改的“正确方法”是什么?](https://linux22.com/image/107222/%E5%9C%A8%20%2Fetc%2Fresolv.conf.d%20%E4%B8%AD%E5%AE%9E%E7%8E%B0%20%2Fetc%2Fresolv.conf%20%E4%B8%AD%E7%9A%84%E6%9B%B4%E6%94%B9%E7%9A%84%E2%80%9C%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E2%80%9D%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
过去,我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
还可以检查文件以获取有关解析 .