如何在Linux上夺回对/etc/Resolution v.conf的控制权(2018)

2020-09-06 22:14:51

几个DNS相关程序希望自动管理位于/etc/Resolution v.conf的DNS名称服务器和解析配置文件。在某些情况下,您可能希望自己管理此文件。下面介绍如何识别Linux发行版上自动管理该文件的程序,以及如何收回对该文件的手动控制。

有相当多不同的工具可以控制Linux系统的DNS解析配置文件/etc/Resolution v.conf,包括netconfig、NetworkManager、Resolution vconf、rdnssd和systemd-solved。

除了NetworkManager之外,这些工具中的大多数都忽略了彼此的存在,这可能会导致DNS解析问题。如果您只是尝试在不禁用管理程序的情况下对文件进行更改,它可能会在几分钟后覆盖您所做的更改,或者在您重新启动系统时将其恢复。

下面的命令将读取解析器.conf文件的前几行,该文件应该包含一个注释,用于标识自动接管该文件管理的所有程序。

有些实用程序不会在解决方案.conf文件中包含注释,但您可以通过使用以下命令检查符号链接来标识这些程序:

作为最后的手段,您可以检查您的init系统,以查看本文中提到的任何程序是否正在运行。如果您无法使用这些方法识别任何管理程序,则可能是您控制了Resolution v.conf文件和系统的DNS解析。

接下来的几节将教您如何禁用自动管理Resolution v.conf的各种程序。

NetworkManager是目前为止适用于整个网络堆栈(包括DNS解析)的最常用的自动配置工具。它负责许多流行的Linux发行版上的/etc/Resolution v.conf,包括Debian和Fedora。

在您禁用了所有其他试图管理解决方案的程序之后,您可能还会发现NetworkManager会像在Ubuntu16.10及更高版本中发生的那样来填补作业 - 。

将主配置部分中的DNS选项设置为None,以禁用NetworkManager中的DNS处理。以下命令在新的conf.d/no-dns.conf配置文件中设置此选项,重新启动NetworkManager服务,并删除NetworkManager生成的Resolution v.conf文件。

如果您发现NetworkManager仍在管理您的解决方案.conf,则可能存在配置冲突(通常由dnsmasq引起)。递归搜索您的NetworkManager配置以发现任何冲突。

有关使用手动配置重新创建/etc/Resolution v.conf文件的说明,请参阅本文的最后一节。

您可以通过将/etc/sysconfig/network/config中的NETCONFIG_DNS_POLICY选项禁用为空字符串来禁用netconfig对/etc/Resolution v.conf的处理,如下所示。

请参阅本文的最后一节,了解有关使用手动配置重新创建/etc/Resolution v.conf文件的说明。

如果您安装的Debian 8.0或Ubuntu 15.04具有活动的IPv6连接,并且已经升级了您的系统,那么您可能会最终导致Resolution vconf和rdnssd为争夺对Resolution v.conf的控制权而相互争斗。两个服务都希望控制该文件,这可能会导致间歇性DNS解析中断,因为这两个服务每隔几毫秒就会覆盖对方的更改。

您可以使用以下命令禁用这两项服务。您可以继续运行这两个命令,因为如果禁用已禁用的服务,不会出现意外情况。

您可能还需要按照NetworkManager一节中的说明进行操作,因为在您将其删除后,NetworkManager可能会自动介入以处理Resolution v.conf文件。

如果您运行的是Ubuntu 16.10或更高版本,您的DNS解析将由systemd解析服务管理。您可以使用以下命令禁用此服务,而不会产生任何进一步的麻烦。

您可能还需要按照NetworkManager一节中的说明进行操作,因为在您将其删除后,NetworkManager可能会自动介入以处理Resolution v.conf文件。

至此,您应该不再需要自动创建/etc/Resolution v.conf文件。如果您的系统上仍然存在该文件,请从本文顶部重新开始进行故障排除。现在您需要创建一个完全可读(权限644)的Resolution v.conf,并向其中添加一些名称服务器。

下面显示了设置IPv4和IPv6名称服务器的两个示例。第一个示例使用Quad9提供的免费安全强化公共DNS服务,第二个示例假设您的本地设备上运行着像Knot Resolver或dnsmasq这样的DNS服务器。这两个示例都针对双栈IPv4/6路由进行了设置,以提高可靠性和兼容性。

您通常不需要重新启动任何网络管理服务即可使更改生效。但是,在禁用DNS解析时,某些系统服务或程序可能已进入失败状态。快速重新启动以启动它们,除非您想要手动复查所有正在运行的服务和程序是否已恢复。

您可能需要为Resolution v.conf文件配置其他参数。有关其他域解析配置选项的详细信息,请参阅man 5 Resolution v.conf手册。

错误#740998:网络管理器和rdnssd不能很好地配合,,Debian Bug Report Logs,Debian