为什么 /etc/network/interfaces 中指定的 dns 选项无法被 resolvconf 解析?

为什么 /etc/network/interfaces 中指定的 dns 选项无法被 resolvconf 解析?

我有一台 Ubuntu 14.04 服务器,它在单个接口上指定了两个 IP 地址。它们在 /etc/network/interfaces 中定义如下:

auto em1
iface em1 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.1.10 192.168.1.11

iface em1 inet static
    address 192.168.1.3
    netmask 255.255.255.0

按照Debian 维基我已经以现代风格指定了多个 IP 地址,只需声明引用同一接口的多个 iface 节即可。

但是,当此服务器上的网络启动时,/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

由于它没有尝试联系名称服务器,因此所有 DNS 查找都会失败。

我已经在上面的 /etc/network/interfaces 行中明确指定了要使用的本地名称服务器dns-nameservers。为什么它们不在 resolv.conf 中?

实际 IP 地址已被更改以保护无辜者

答案1

事实证明,似乎发生的情况是,当 resolvconf 解析接口文件时,由于我有多个针对同一接口的 iface 节,所以当 resolvconf 解析第二个 iface 节时,第一个节中指定的 dns 选项会被丢弃。

如果我重写 /etc/network/interfaces 使其看起来像这样:

auto em1
iface em1 inet static
    address 192.168.1.2
    netmask 255.255.255.0
    gateway 192.168.1.1

iface em1 inet static
    address 192.168.1.3
    netmask 255.255.255.0
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 192.168.1.10 192.168.1.11

然后生成了 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.10
nameserver 192.168.1.11

相关内容