我正在尝试调试有关 dns 解析的一些问题,并正在尝试nslookup
(现已弃用)和dig
.
然而,我使用的系统systemd
用于配置/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
# 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
这似乎dig
毫无用处,因为它所做的只是指向 dns 服务器,127.0.0.53
该服务器是我机器上的 systemd 构造。
~$ dig www.google.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31247
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 54 IN A 216.58.212.164
;; Query time: 29 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Jun 18 10:45:49 CEST 2017
;; MSG SIZE rcvd: 59
这是真的吗?如果你使用systemd,其他一切都消失了?
答案1
不,(至少)有两个原因:
systemd-resolved 是 systemd 的可选组件。它不需要在运行 systemd 的机器上使用。
dig 有很多选项,即使在 systemd-resolved(或任何其他本地 DNS 缓存,如 dnsmasq)运行时也很有用。例如,您可以指定要查询的名称服务器:
dig @8.8.8.8 google.com.
或任意数量的可用于调试 DNS 的其他选项。