我有这个问题。
该命令dig +trace gnu
仅返回以下内容:
; <<>> DiG 9.11.3-1ubuntu1-Ubuntu <<>> +trace gnu.org
;; global options: +cmd
;; Received 28 bytes from 127.0.0.53#53(127.0.0.53) in 0 ms
但我想要所有的踪迹。这是为什么?
答案1
我花了点时间才弄清楚这里发生了什么。基本上,新的 systemd 废话已经强行进入了 DNS 领域。如果你阅读/etc/resolv.conf
,你会看到它指的是systemd-resolved
。你还会看到你的nameserver
条目是127.0.0.53
。
netstat -pntul | grep :53 show:
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 29133/named
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 27505/systemd-resol
但是 systemd-resolved 不会将查询传递给 bind9 服务器,而是传递给 glibc。不幸的是,glibc 不是解析器。它会传递查询,但传递的方式会破坏+trace
. 的+notrace
正常运行。
为了解决这个问题,我删除了resolvconf
,关闭了 systemd-resolved,并将/etc/resolv.conf
条目从更改127.0.0.53
为127.0.0.1
。
在进行更改之前,您可以dig @127.0.0.1 +trace google.com
看到它dig +trace
按预期工作,这证明 systemd 实现已损坏并且应该被删除。