更新:看起来它avahi-dnsconfd
正在添加8.8.8.8
到8.8.4.4
我的/etc/resolv.conf
文件中。我在 /var/log/syslog 中找到了以下内容:
Jan 4 17:00:21 freewill nm-dispatcher: req:1 'up' [ens33]: start running ordered scripts...
Jan 4 17:00:21 freewill avahi-dnsconfd[3579]: New DNS Server 8.8.4.4 (interface: 2.IPv4)
Jan 4 17:00:21 freewill avahi-dnsconfd[3579]: New DNS Server 8.8.8.8 (interface: 2.IPv4)
如何让 Ubuntu 从 DHCP 获取 DNS 服务器仅有的和不是使用 Avahi (mDNS) 获取 DNS 服务器?
我正在测试 Ubuntu Mate 16.04.1 LTS,遇到了问题,因为有些东西不断将 Google 的 DNS 服务器添加到/etc/resolv.conf
:
josh@freewill:~$ 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.100.1.1
nameserver 8.8.4.4
nameserver 8.8.8.8
search my.domain.name
我不希望8.8.4.4
这样,8.8.8.8
因为/etc/resolv.conf
这会破坏我的本地网络:我的本地 DNS 服务器(10.100.1.1)为没有公共 DNS 记录的本地 NAT 服务提供 DNS。
如果我手动编辑/etc/resolv.conf
并删除 Google DNS 名称服务器,它们会通过重新启动或resolvconf -u
NetworkManager 没有列出 8.8.8.8 或 8.8.4.4其他 DNS 服务器所以这不是原因。
该系统有三个以太网接口,只有一个连接。它与提供 DNS 信息的 DCHP 服务器位于同一网络上。内容如下/etc/network/interfaces
:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
我已经运行过了,配置文件中grep -R '8\.8\.8\.8' /etc
没有其他引用。下面也没有提到 Google DNS 服务器!8.8.8.8
/etc/resolvconf
为什么 Ubuntu Mate 要添加 Google DNS 服务器/etc/resolv.conf
?我该如何停止它?目前,我已经这样做了sudo rm /etc/resolv.conf; sudo cp /run/resolvconf/resolv.conf /etc/resolv.conf; sudo chattr +i /etc/resolv.conf
,但我知道将来这会给我带来麻烦……
答案1
经过大量调查(在@Terrance 的帮助下),我发现 Ubuntu Mate 正在使用avahi-dnsconfd
我的网络上的一些其他设备(可能是 Raspberry Pi)正在通过 mDNS / Bonjor / Avahi 广播 Google 的 DNS 服务器。
avahi-dnsconfd
正在捡起它,什么时候avahi-dnsconfd.action
运行后,它调用resolvconf
添加通过 mDNS 发现的 DNS 服务器/etc/resolf.conf
我禁用avahi-dnsconfd
了:
sudo systemctl stop avahi-dnsconfd.service
sudo systemctl disable avahi-dnsconfd.service
为了保险起见,我还进行了编辑/etc/default/avahi-daemon
和设置AVAHI_DAEMON_DETECT_LOCAL=0
(因为我知道我的网络没有为 TLD 提供服务的单播 DS 服务器.local
)
答案2
您不需要/etc/resolve.conf
直接编辑文件,只需调用 即可完成resolvconf - u
。
您应该编辑该文件:
/etc/resolvconf/resolv.conf.d/head
反而。
请确保首先创建备份,以防出现任何问题:
sudo cp /etc/resolvconf/resolv.conf.d/head /etc/resolvconf/resolv.conf.d/head.backup
然后编辑它以添加你的DNS 名称服务器。这是我使用的 openDNS(推荐):
bitofagoob@me:~$ cat /etc/resolvconf/resolv.conf.d/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
nameserver 208.67.222.222
nameserver 208.67.220.220
然后运行resolvconf - u
,名称服务器信息将从文件复制/etc/resolvconf/resolv.conf.d/head
到/etc/resolv.conf
文件。
系统需要这样设置才能有效。