如何在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提供的两个名称服务器地址中的一个怎么办?

在Ubuntu 12.04及更高版本中,/ /etc/resolv.conf由resolvconf实用程序动态生成。 (实际上,resolvconf生成/run/resolvconf/resolv.conf/etc/resolv.conf是一个符号链接。这是默认配置;它也可以在/etc/resolv.conf使用静态文件运行但是这是非标准的。)名称服务器信息(名称服务器地址和搜索域名)由接口配置器( ifupNetworkManagerdhclient等)通过resolvconf注册。 根据已注册的内容,resolvconf会生成最新的resolv.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,您必须在/etc/default/bind9设置RESOLVCONF=yes ,以使其使用resolvconf注册地址127.0.0.1
  • 其次,resolvconf默认在任何环回地址(如127.0.0.1之后截断名称服务器列表。 要禁用此行为,请创建包含TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no行的文件/etc/default/resolvconf
  • 第三,默认情况下,resolvconf在三个项目之后截断名称服务器列表。 包含更多地址没有意义,因为glibc解析器在前三个之后忽略任何地址。 要使resolvconf在两个地址之后截断列表,您必须编辑脚本/etc/resolvconf/update.d/libc以替换此行

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

通过以下一个。

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

它适用于我的祖父,它适用于我的父亲,它适用于我。

 rm /etc/resolv.conf vi /etc/resolv.conf search yourdomain.com nameserver 8.8.8.8 nameserver 8.8.4.4 

编辑:

rm删除标准符号链接。

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

当我安装12.04时,这篇文章给了我很多帮助: http : //www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/

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

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

例如

 echo nameserver 8.8.8.8 | resolvconf -a eth0.goog 

在这里。 是一个分隔符,接口后面的部分是该接口的配置名称。

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

 resolvconf -d eth0.goog 

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