最近一个月,在 Ubuntu 16.10 上使用 Chrome 浏览网页,经常出现 DNS 解析失败的情况。错误信息诸如
- DNS_PROBE_FINISHED_NXDOMAIN
- ERR_NAME_NOT_RESOLVED
奇怪的是,只有部分域名会出现该错误。例如,baidu.com 及其所有子域名。
通过 dig +trace 排除了授权 DNS 的问题。
将 network connections 里的 DNS 服务器修改成了 114.114.114.114, 8.8.8.8 还是无济于事。
又尝试了修改 /etc/resolv.conf ,但是会被系统自动还原成 127.0.0.1
Google 了一下类似问题,发现都是通过禁用掉 dnsmasq 来解决的。。。难道 Ubuntu 已经内置了 dnsmasq?
- 禁用 dnsmasq 这种方案很傻逼
- Ubuntu 为何要内置 dnsmasq?
先确认一下
ps axwu | grep dns
dnsmasq 2560 0.0 0.0 54828 2936 ? S 07:54 0:00 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -r /run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
nobody 3393 0.0 0.0 54828 4212 ? S 07:54 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
果然如此,打开 /etc/dnsmasq.conf 发现,里面啥也没有配置。。。那默认的 upstream servers 是啥???
想起之前因机房内 DNS 服务器负载过高,使用 dnsmasq 解决的案例,使用 dnsmasq 保证本地 DNS 服务的稳定性
参考之前写的自动脚本,把 Ubuntu 16.10 Desktop 内置的 dnsmasq 调整了一下
cat <<DNSMASQ_CONF > /etc/dnsmasq.conf
listen-address=127.0.0.1
resolv-file=/etc/dnsmasq.resolv.conf
all-servers
cache-size=1000
local-ttl=60
clear-on-reload
no-negcache
DNSMASQ_CONF
cat <<DNSMASQ_RESOLV_CONF > /etc/dnsmasq.resolv.conf
nameserver 114.114.114.114
nameserver 182.254.116.116
nameserver 119.29.29.29
DNSMASQ_RESOLV_CONF
/etc/init.d/dnsmasq start
182.254.116.116,119.29.29.29 是腾讯的 public DNS。这3个 nameserver 的组合我还是非常放心的,在腾讯的时候用过一年,没有出现过问题。
解析失败问题暂时不见了,再观察一段时间。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式
谈笑风生
qingliu (来自: 中国 北京 北京 皓宽网络) 7年前
大象腿 (来自: 中国 山东 烟台 联通) 7年前