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


14

我所看到的所有有关配置(/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地址应该不是错误的。

但是,由于我还是在为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。似乎值得纪念的唯一一行是dns-nameservers的IPv4配置中的一行eth0

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


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

ifup(8) 程序可用于根据中的设置配置网络接口/etc/network/interfaces(5)。要在配置接口时向其ifup推送名称服务器信息,请resolvconfdns-中的相关iface节中 添加行/etc/network/interfaces。要添加名称服务器地址,请添加以开头的行dns-nameservers


如果仍然存在此问题,请发布整个/ etc / network / interfaces文件以及Ubuntu 15.04中resolvconf软件包中包含的/ usr / share / resolvconf / dump-debug-info的输出。
jdthood 2015年

Answers:


9

将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日更新]


1

在运行Ubuntu 16.04.2 LTS的RPi上,我的发现如下:

注意:我卸载了NetworkManager并只剩下resolvconf来完成它的工作。(这是一台固定服务器,因此在网络方面不会有太大变化。)

如果仅在一个接口(主接口,有线接口)上有dns-search和dns-nameserver行,但在重启时没有其他接口(wlan0),则大约在我的/etc/resolv.conf文件中有95%的时间是空的。

例如,当我的接口文件如下所示:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

然后,在重新启动后,我的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

但是,在一两次重启后,我注意到它DID具有我想要的功能,例如

# 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 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

解决方案 当我为两个接口(有线和wlan0)提供dns-search和dns-nameserver线时,每次重新启动都正常(到目前为止)

即以下接口文件为我工作:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

并在每次重启后给我以下正确的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 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

我认为这个重复的配置是正常的,如果有些多余的话。

结论:如果接口(lo0除外)缺少dns-search和dns-nameserver信息,则resolvconf不会在您的resolv.conf文件中放置任何内容。(就好像ifup第二次执行wlan0接口,ifup擦除了resolv.conf之类。)

我不确定这是否是错误,但是我感到不对。


-1

编辑网络接口以添加使用自定义DNS的一种方法...但是要使用自定义dnsnameserver永久修改系统范围的resolv.conf,您需要安装resolvconf软件包(如果默认情况下尚未安装)并填充其基础具有自定义DNS名称服务器值的配置文件。希望本简短指南能为您提供有关resolv.conf DNS条目的更多配置http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/


2
欢迎使用Unix和Linux!虽然从理论上讲这可以回答问题,但最好在此处包括该指南的更多基本部分,并提供链接以供参考。
Anthon'2

@MateiCezar:请您详细说明一下?我不确定您甚至没有读完我的问题。软件包resolvconf 安装。我想分别/etc/network/interfaces为IPv4 IPv6 配置DNS服务器。
0xC0000022L15年

-1

您想在/ etc / network / interfaces上使用IPv6 DNS服务器...只需将IPv6 DNS名称器条目放在特定的网络接口上,如下所示:

dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888. 

要将IPv6 dnsnamesers永久添加到resolv.conf中,请使用我在下面添加的相同链接,并通过使用自己的IPv6 DNS命名人来编辑resolvconf基本文件:

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888 

要使用IPv6配置/ etc / network / interfaces,请使用本指南http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/并将IPv4替换为IPv6它遵循:auto eth0

iface eth0 inet6 static
        address 2800:210:0:1::3
        netmask 64
        gateway 2800:210:0:1::1
        dns-nameservers 2001:4860:4860::8844 

修复了您的格式。再次,我的问题明确指出,这不会导致将用于IPv6的DNS服务器添加到中/etc/resolv.conf。如果这对您有用,那么了解确切的系统版本将很有用。
2015年

让我直接讲...您想从/ etc / network / interfaces使用IPv6 DNS解析器,以某种方式将它们添加到该文件中对您不起作用?
Matei Cezar 2015年

我可以添加它们/etc/network/interfaces。没有发生的事情是他们被转移到/etc/resolv.conf了应有的状态。我正在尝试弄清楚我在做什么错,是的。
0xC0000022L 2015年

还是不明白吗?来自/ etc / network / interfaces的那些DNS条目是否转移到/etc/resolv.conf?使用这些接口中的namservers条目永远不会转移或写入/etc/resolv.com,它们可以从该NIC上独立工作,并且不在系统范围内实现。缺少dnsnameservers条目的接口仅使用/etc/resolv.conf文件DNS。
Matei Cezar

抱歉...但是我仍然不明白您尝试使用此DNS名称服务器条目实现什么。
Matei Cezar 2015年

-1

您为什么不按照我之前的链接建议使用resolvconf基本文件,而是通过编辑resolvconf基本文件直接在/etc/resolv.conf系统范围的文件上直接实现那些IPv6 DNS名称服务器,而仍然继续使用网络接口文件?您可以在/etc/resolv.conf中添加一组DNS IPv6名称服务器,如果要对特定的NIC使用其他IPv6名称服务器,请仅在/ etc / network / interfaces上使用它们。


您在最后一句话中提到的正是我不想使用resolvconf基本配置的原因,这正是我正在尝试的原因。此外,这正是失败的原因。
0xC0000022L 2015年

好,我知道了!但是为什么要用这种方式实现呢?无论哪种方式,您只需要那些DNS名称服务器在整个系统范围内都可以访问,是否有理由将它们从网络/接口转移到resolv.conf?文件,您完成了!
bytelinux com 2015年

不确定您要管理多少台计算机,但是对我来说,尝试并简化我的生活就足够了。既然/etc/network/interfaces应该做的工作,我试图找出我做错了什么。
0xC0000022L 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.