使用 resolvconf 重新启动后保留 resolv.conf 中的更改

使用 resolvconf 重新启动后保留 resolv.conf 中的更改

编辑的最佳方法是什么解析配置文件文件?

在配置服务器的任务出现之前,我对设置代理并不熟悉。我手动编辑了我的/etc/resolv.conf文件并包含以下输入:

nameserver 192.168.115.147,192.178.116.168

任何下载尝试都会遇到错误。经过多次谷歌搜索后,我发现了一篇文章,它引导我重新格式化文件 - 直接如下:

nameserver 192.168.115.147
nameserver 192.178.116.168

这很有效,文件下载不再因错误而中断。

然而,当我不得不重新启动服务器时,文件恢复为单行格式,这再次停止了我的下载。就在那时我注意到了DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN顶部的解析配置文件

那么,应该如何解析配置文件进行编辑以便更改在服务器重新启动后仍然存在?

答案1

您可以使用/etc/resolvconf/resolv.conf.d/namedheadbase中的条目tail(取决于resolv.conf您希望条目出现的位置)。从man resolvconf:

The dynamically generated resolver  configuration  file always  starts
with  the  contents of /etc/resolvconf/resolv.conf.d/head and ends with
the contents of /etc/resolvconf/resolv.conf.d/tail.  Between  head  and
tail  the  libc script inserts dynamic nameserver information compiled
from, first, information provided for  configured  interfaces;  second,
static  information  from /etc/resolvconf/resolv.conf.d/base.

只需将您的条目放入base并运行即可resolvconf -u

答案2

简答

我认为最可靠的方法是将您的设置resolv.conf为不可变。一旦你按照你想要的方式设置它,你只需运行

sudo chattr +i /etc/resolv.conf

要再次编辑它,您需要删除不可变标志:

sudo chattr -i /etc/resolv.conf

替代答案

放入该消息的应用程序/etc/resolv.conf称为resolvconf。您可以resolvconf使用以下命令删除您的软件包(我假设是 debian 或 ubuntu,但我认为resolvconf这是 debian 的事情):

sudo apt-get remove resolvconf

/etc/resolv.conf我在计算机上删除了它,因为我发现当我没有安装该软件包时,我更有可能在奇怪的情况下(特别是酒店或机场 wifi)以正确的设置进行连接resolvconfresolvconf它还可以做其他事情,比如 DNS 缓存,也许还有一些我觉得没有也能活下去的事情。在删除它之前,您可能会先了解它的作用。

重要笔记

删除并resolvconf不能保证您的内容/etc/resolv.conf保持不变。其他程序,例如dhclient将对/etc/resolv.conf.如果您运行网络管理器,它也可能会编辑/etc/resolv.conf.我对网络管理员没有太多经验。

chattr解决方案应该防止其他程序进行编辑,并且可能适合您的服务器情况。如果您在笔记本电脑上使用它,可能会出现对您的重要更改/etc/resolv.conf被阻止的情况。一个例子是在访问酒店 wifi 时,需要对您的 wifi 进行修改/etc/resolv.conf才能访问某个本地托管的 url,然后才能访问正确的互联网。如果您在这些情况下能够记住chattr -i /etc/resolv.conf并重新连接到 wifi,那么这应该不是问题。

答案3

除非您使用 Windows 服务器附带的网络管理器,否则设置持久 DNS 名称服务器的简单而正确的方法是在您的网络配置文件中:

对于 Debian(Ubuntu、Mint、Arch),编辑 /etc/network/interfaces :

auto eth0
iface eth0 inet dhcp

dns_nameserver 8.8.8.8

我相信 Red Hat、Fedora、CentOS 等对 resolve.conf 的更改在重启后仍然有效。

相关内容