從 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)
任何幫助是極大的讚賞 :)
答案1
經過一夜的睡眠;-) 這就是我想出來的。我剛剛手動添加了一些公共上游伺服器(1.1.1.1 是 CloudFlare 的,8.8.8.8 是 Google 的)
在:/etc/dnsmasq.conf:
listen-address=127.0.0.1
address=/.mylocal/127.0.0.1
server=1.1.1.1
server=8.8.8.8
所有剩餘的文件都按照我的問題保留。 systemd-resolved 和 dnsmasq 均已啟用並正在運行。
這使得 DNS 查詢起作用。
我仍然不認為這是正確的答案,因為我更喜歡使用網路提供的 DNS,但至少它有效...