如何使名称服务器地址永久保存在 /etc/resolv.conf 中?

Ash*_*ldr 19 linux nameserver

我无法保留我通过/etc/resolv.conf. 每次我设置该值时,网络管理器都会在重新启动时使用默认网关覆盖它。

如何正确设置?

除了在路由器中更改名称服务器之外,我更喜欢一种方法。

Mar*_*iae 17

这取决于。请阅读到最后。

如果你没有安装resolvconf 包,那么很简单:按照你喜欢的方式改变它后,发出命令

 sudo chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

该命令更改文件属性,使其成为immutable(+i 选项)。

但是,如果您安装了 resolvconf 包,则文件 /etc/resolv.conf 可能会转换为符号链接,

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'
Run Code Online (Sandbox Code Playgroud)

它是虚拟文件系统上的文件,是非永久性版本的缩影。有趣的是你可能不知道你已经安装了 resolvconf,因为最近版本的类似 Debian 的操作系统已经预装了它。您可以通过发出以下命令来确定您的发行版是否为您安装了它:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz
Run Code Online (Sandbox Code Playgroud)

更重要的是,您可以/etc/resolv.conf通过上面的命令(文件/etc/resolv.conf)确定您是否已转换为链接。如果回复是ASCII text,则使用chattr,否则...

如果您使用静态IP,最简单的方法是添加以下行(或一些类似的东西)

 dns-nameservers 8.8.4.4 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

到定义 /etc/network/interfaces 中静态接口属性的节。

如果您使用的是一直连接到不同网络的笔记本电脑,您可以遵循LawrenceC的极好建议。但是,如果您的系统上有resolvconf,那么提供一组固定 DNS 的正确(也是最简单的)方法是使用/etc/resolvconf/resolv.conf.d 中的文件。特别是,使用了以下文件(请参阅Stephane Graber 的页面):

base : 当找不到其他数据时使用

head : 用于 resolv.conf 的头部,可用于确保 DNS 服务器始终是列表中的第一个

tailtail 中的任何条目都附加在结果 resolv.conf 的末尾。

因此,将您最喜欢的名称服务器放在head 中,如下所示

  nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

你就完成了。

  • @dhiller Ultrasawblade 将他的名字改成了“LawrenceC”,就是下面那个。 (2认同)

Law*_*ceC 10

添加类似的行以/etc/dhcp/dhclient.conf使用根终端:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

这会导致dhclient发出 DHCP 请求并根据响应告诉它的内容进行更改的程序在进行更改之前将其从 DHCP 服务器获取的信息替换为上述信息。

以上是两个 OpenNIC DNS 服务器。根据需要替换您要使用的任何服务器。

由于每当您从 DHCP 获取配置信息时都会发生这种情况,因此请使用dhclient -v eth0或 任何界面来刷新它并查看更改。