当前位置: 首页>>技术教程>>正文


Ubuntu:如何为resolvconf在/etc/network/interfaces中正确配置DNS服务器?

, , ,

问题描述

我看到的所有配置示例(/etc/network/interfaces)都显示您先配置一个接口,然后在其下提供了dns-*行,例如:

auto eth0
iface eth0 inet static
        ...
        dns-nameservers 127.0.0.2
        dns-search example.com my.example.com

现在,我知道DNS协议独立于传输机制。因此,在dns-nameservers行上添加IPv6地址应该不是per-se错误。

但是,由于无论如何我也正在为IPv6配置接口,因此在此处添加dns-nameservers行是有意义的:

iface eth0 inet6 static
        ...
        dns-nameservers ::2
        dns-search example.com my.example.com

…或者是吗?因为当resolvconf创建/etc/resolv.conf时,它只是忽略了所有IPv6 DNS服务器。它似乎也忽略了dns-searchdns-domain。似乎值得纪念的唯一一行是eth0的IPv4配置中的dns-nameservers行。

配置DNS服务器的正确方法是什么?


关于为什么应将其作为每个iface节的一部分的进一步间接证据。引用man 8 resolvconf

The ifup(8) program can be used to configure network interfaces according to settings in /etc/network/interfaces(5). To make ifup push nameserver information to resolvconf when it configures an interface, add dns- lines to the relevant iface stanza in /etc/network/interfaces. To add nameserver addresses add a line beginning with dns-nameservers.

最佳办法

将dns- *选项放在iface eth0 inet static节或iface eth0 inet6 static节中是正确的。当选项所属的逻辑接口定义变为活动时,这些选项变为活动。

我只是在我通常使用DHCP配置的Ubuntu 15.04计算机上对此进行了测试。我禁用了NetworkManager并编辑了/etc /network /interfaces,使其看起来像这样:

iface eth0 inet static
        address 192.168.178.22
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
        dns-search foo

iface eth0 inet6 static
        address fe80::390:f5ff:fef7:96b9/64
        dns-nameservers ::2
        dns-search bar

然后我做了

$ sudo ifup eth0

结果:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:90:f5:f7:96:b9  
      inet addr:192.168.178.22  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::390:f5ff:fef7:96b9/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2114609 errors:0 dropped:1 overruns:0 frame:0
      TX packets:1757693 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2033346950 (2.0 GB)  TX bytes:1318685445 (1.3 GB)
      Interrupt:20 Memory:f7e00000-f7e20000 

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver ::2
nameserver 8.8.8.8
search bar foo

请注意,两个节中的地址dns-nameservers和dns-search选项现在处于活动状态。

[2015年5月30日更新]

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7750.html,未经允许,请勿转载。