如何在 Ubuntu 12.04 上编辑 /etc/resolv.conf

如何在 Ubuntu 12.04 上编辑 /etc/resolv.conf

我有两个通过 DHCP 配置的网络接口。因此,/etc/resolv.conf会填充来自 DHCP 服务器的信息。

我如何编辑此文件?

我知道如果我添加prepend domain-name-servers 127.0.0.1/etc/dhcp/dhclient.conf我可以获得的nameserver 127.0.0.1第一行(也是唯一一行)/etc/resolv.conf

如果我想要 127.0.0.1 以及仅通过 DHCP 提供的两个名称服务器地址中的一个,该怎么办?

答案1

在 Ubuntu 12.04 及更高版本中,/etc/resolv.conf由 resolvconf 实用程序动态生成。(实际上,resolvconf 生成/run/resolvconf/resolv.conf/etc/resolv.conf指向该符号链接。这是默认配置;也可以使用静态文件运行,但这不是标准配置。)名称服务器信息(名称服务器地址/etc/resolv.conf和搜索域名)由接口配置程序(、、等)向 resolvconf 注册ifup。根据已注册的内容,resolvconf 生成最新文件。NetworkManagerdhclientresolv.conf

因此,您无法直接编辑该resolv.conf文件。如果您想控制最终结果,resolv.conf则必须配置 resolvconf 实用程序。请参阅 resolvconf 文档了解更多信息。

对于“如果我想要 127.0.0.1 并且只想要通过 DHCP 提供的两个名称服务器地址中的一个怎么办?”这一具体问题,答案是:

  • 首先,不是添加prepend domain-name-servers 127.0.0.1/etc/dhcp/dhclient.conf。正确的协议是,当本地名称服务器准备好提供本地名称服务时,它们会向 resolvconf 注册其本地监听地址;当它们这样做时,DHCP 客户端无需这样做。默认情况下,Dnsmasq 会做正确的事情。对于 BIND 9,您必须进行设置RESOLVCONF=yes以使其向 resolvconf/etc/default/bind9注册地址。127.0.0.1
  • 其次,resolvconf 默认会截断任何环回地址(如)之后的名称服务器列表127.0.0.1。要禁用此行为,请创建一个/etc/default/resolvconf包含以下行的文件TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no
  • 第三,resolvconf 默认在三个项目后截断名称服务器列表。包含更多地址毫无意义,因为 glibc 解析器会忽略前三个地址之后的任何地址。要使 resolvconf 在两个地址后截断列表,您必须编辑脚本/etc/resolvconf/update.d/libc以替换此行

    [ "$N" = 3 ] && return 0
    

通过以下一个。

    [ "$N" = 2 ] && return 0

答案2

它对我祖父有用,对我父亲有用,对我也有用。

rm /etc/resolv.conf
vi /etc/resolv.conf

search yourdomain.com
nameserver 8.8.8.8
nameserver 8.8.4.4

编辑:

rm删除标准符号链接。

vi在其位置创建一个实际文件。

答案3

当我安装 12.04 时,这段文字对我帮助很大:http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

答案4

作为记录,官方的 resolvconf 文档在这里http://anonscm.debian.org/gitweb/?p=resolvconf/resolvconf.git;a=blob;f=README;hb=HEAD

“编辑”就像使用 resolvconf 命令行一样简单,就像使用 api 一样。

例如

echo nameserver 8.8.8.8 | resolvconf -a eth0.goog

这里的 . 是分隔符,接口后的部分是该接口的配置名称。

如果要删除此名称服务器,只需命名接口和配置,然后使用 -d 删除

resolvconf -d eth0.goog

在服务器/云场景中,这就是您所需要的。对于移动设备,您需要参考文档。

相关内容