编辑的最佳方法是什么解析配置文件文件?
在配置服务器的任务出现之前,我对设置代理并不熟悉。我手动编辑了我的/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/
namedhead
或base
中的条目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)以正确的设置进行连接resolvconf
。resolvconf
它还可以做其他事情,比如 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 的更改在重启后仍然有效。