实际上,在 ubuntu 16.04 服务器上,我的 /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 213.186.33.99
search local
我想将“nameserver 127.0.0.1”放在顶部。我将网络配置文件修改为:
auto lo
iface lo inet loopback
auto ens3
iface ens3 inet dhcp
dns-nameservers 127.0.0.1 <--- added this
但名称服务器 127.0.0.1 已在底部设置:
# 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 213.186.33.99
nameserver 127.0.0.1
search local
我修改了 /etc/dhcp/dhclient.conf 以要求在前面添加 127.0.0.1:
prepend domain-name-servers 127.0.0.1;
但是现在,DHCP 动态找到的名称服务器已经消失了:
# 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 127.0.0.1
search local
那么,如何才能将“名称服务器 127.0.0.1”放在顶部,并将 DHCP 动态找到的名称服务器放在下面?
答案1
正如注释行中提到的,该文件是由resolvconf
(8). 它配置有resolvconf.conf
(5):
name_servers
将名称服务器添加到动态生成的列表的前面。
127.0.0.1
如果您使用 libc 以外的本地名称服务器,则应将其设置为。
影响处理顺序的选项如下:
interface_order
这些接口将始终被首先处理。如果未设置,则默认为以下内容:-
lo lo[0-9]*
dynamic_order
这些接口将被处理,除非它们有度量。如果未设置,则默认为以下内容:-
tap[0-9]* tun[0-9]* vpn vpn[0-9]* ppp[0-9]* ippp[0-9]*
答案2
编辑文件 /etc/resolvconf/resolv.conf.d/head,将您想要添加的名称服务器放在其底部,使用通常的语法:例如:
ubuntu# cat head
# 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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver your.wanted.ip.here
nameserver another.extra.ip.here
然后,重新加载 resolvconf:
ubuntu# systemctl restart resolvconf
答案3
恐怕按照您请求的方式进行设置不会按预期工作。只有在第一个服务器超时的情况下才会查询第二个名称服务器。如果第一个服务器的响应是 NXDOMAIN,则解析器会停止,因为这是一个有效的回复。
如果您正在寻找一种使用本地 DNS 条目等来扩展有效响应的解决方案,则需要将本地主机上的 DNS 服务器配置为在查找其本地条目且结果不匹配后转发到另一个 DNS 服务器。