我有一台 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