Ubuntu 16.04
搬迁办公室后,我通过网络 GUI 设置了 DNS 设置(请参阅这里) 更改为我的新值。互联网连接正常,但名称解析似乎非常慢。我的解释是,它尝试使用旧设置进行名称解析,大约 5 秒后超时,然后尝试使用新设置并成功(快速)。
但无论我做什么,旧的价值观总是以某种方式“存在于体系中”。
重启后:
/etc/resolvconf/resolv.conf.d/head
包含旧的 DNS 地址/etc/resolvconf/resolv.conf.d/base
包含新的 DNS 地址/etc/resolv.conf
(run/resolvconf/resolv.conf
)包含旧 DNS 地址(来自head
),后跟值/run/resolvconf/interface/NetworkManager
(包含localhost
和search
参数)
/etc/network/interfaces
不包含太多内容:
auto lo
iface lo inet loopback
我添加了新的DNS设置,但/etc/dhcp/dhclient.conf
没有效果。
到目前为止唯一的补救措施是/etc/resolv.conf
在每次启动后手动编辑。
那么,问题是:我怎样才能让 Ubuntu 忘记旧设置(/etc/resolvconf/resolv.conf.d/head
自动生成的设置)。没有nscd
安装。这似乎是一种方法,但我想一定有更好的方法。
未尝试的选项:安装 dnsmasq 并按说明进行配置这里(我再次认为没有这个也应该可以)
答案1
该文件是在运行时/etc/resolv.conf
从存储在目录中的文件生成的。/etc/resolvconf/resolv.conf.d
sudo resolvconf -u
如果您对这些文件进行任何更改:
terrance@terrance-ubuntu:/etc/resolvconf/resolv.conf.d$ ls -l
total 8
-rw-r--r-- 1 root root 0 Jun 3 2015 base
-rw-r--r-- 1 root root 151 Feb 25 2017 head
-rw-r--r-- 1 root root 33 Jun 5 2016 original
-rw-r--r-- 1 root root 0 Jun 5 2016 tail
运行resolvconf -u
更新命令时,更改将会反映出来。我实际上将 DNS 信息放在了original
文件中,而其他文件则保持不变:
terrance@terrance-ubuntu:/etc/resolvconf/resolv.conf.d$ cat original
search local
nameserver 10.0.0.1
然后运行命令后sudo resolvconf -u
我们可以在文件中看到我的更改/etc/resolv.conf
:
$ 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 10.0.0.1
search local
编辑:您可能需要检查和更改的另一件事是文件dns=dnsmasq
中找到的行/etc/NetworkManager/NetworkManager.conf
。您可以复制并粘贴以下行以禁用dnsmasq
NetworkManager 的使用。
sudo sed -i 's/dns=dnsmasq/#dns=dnsmasq/' /etc/NetworkManager/NetworkManager.conf
运行上述行后,重新启动计算机以使新的更改生效。
希望这可以帮助!