当我尝试执行 dig +trace 命令时,输出如下:
$ dig +trace google.com
; <<>> DiG 9.9.5-3-Ubuntu <<>> +trace google.com
;; global options: +cmd
;; Received 12 bytes from 127.0.1.1#53(127.0.1.1) in 10 ms
我认为我的 DNS 设置存在一些问题,但我不知道该去哪里查找。
有什么建议么?
答案1
我花了一点时间才弄清楚这里发生了什么。基本上,新的 systemd 废话已经强行进入了 DNS 空间。如果您阅读 /etc/resolv.conf,您会看到它指的是 systemd-resolved。您还会看到您的名称服务器条目是 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 实现已损坏并应将其删除。