从16.04升级到Ubuntu 18.04后,我的dnsmasq配置被破坏了。
- systemd-resolved已启用并正在运行
- dnsmasq已启用并正在运行
在成功之前,对外界的任何DNS查询都会挂起约30秒。对我的本地主机(anything.mylocal)的查询将立即成功。
如果我停止dnsmasq(即service dnsmasq stop
),那么所有对外界的DNS查询都会立即生效(但是.mylocal,当然不是)。
在:/etc/dnsmasq.conf中
listen-address=127.0.0.1
address=/.mylocal/127.0.0.1
在:/etc/NetworkManager/NetworkManager.conf中
[main]
...
# dns=dnsmasq
...
取消注释dns =行将阻止任何dns查询。
在:/etc/systemd/resolved.conf中
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=no
在:/etc/resolv.conf中
此文件是指向../run/resolvconf/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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
在:/etc/nsswitch.conf中
passwd: compat systemd
group: compat systemd
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
输出的一个显着差异systemd-resolve --status
:
- 随着dnsmasq的运行,Global的第一行读取:
DNS Servers: 127.0.0.1
- 随着dnsmasq停止,此行不存在,没有全局DNS服务器,第一个有用的服务器在链接2部分中定义,它指定我的默认网关(192.168.1.1)
任何帮助是极大的赞赏 :)
如果resolv.conf是一个链接,那么它的目标文件包含什么?
—
grawity
它包含:nameserver 127.0.0.53(我也编辑了答案)
—
Palantir
您使用哪些工具来测试DNS查询?在/etc/nsswitch.conf中启用了哪些“主机”模块?
—
grawity
对不起,我点击太快了。我报告了nsswitch.conf的内容。至于测试,我只是对google.com进行ping操作。使用dnsmasq它会挂起30秒,没有它会立即返回。
—
Palantir
还添加了systemd-resolve --status
—
Palantir