外部 DNS 查找工作没有问题,但任何非 FQ 域(即仅主机名部分)都会失败,除非我明确强制它使用 PiHole 来解析它。
nslookup myhost # this fails with SERVFAIL
nslookup myhost 192.168.12.34 # this works
我确信 DNS 条目是有效的(通过 PiHole 上的“本地 DNS 记录”界面添加),因为它们在我的网络上不使用 systemd 的其他系统上工作
/etc/resolv.conf
是 systemd 默认值(指 127.0.0.53),因为我两天前刚刚进行了全新安装。
resolvectl status
显示 PiHole 的 IP 作为我的 wifi 连接(唯一活动连接)的唯一 DNS 服务器。
这是 PopOS 20.04 的全新安装,我的 PiHole 刚刚更新到 5.0。
编辑:澄清一下,这位主持人是不是运行 PiHole - 它位于网络上的另一台主机上。
有人对这里发生的事情有任何想法吗?
谢谢你的时间。
答案1
事实证明,最简单的方法就是通过将 resolv.conf 符号链接指向另一个文件(其中包含我的 PiHole 的 IP)来绕过环回解析器:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
答案2
DNS 不识别短名称,即只有主机名而没有附加信息。
如果您只给 nslookup 一个主机名,它将尝试添加配置为搜索域的任何内容。这通常在 /etc/resolv.conf 中,如下所示:
$ cat /etc/resolv.conf
# Generated by NetworkManager
search domain.com
nameserver 10.0.0.1
如果您没有搜索域,或者您使用的是配置的搜索域之外的主机名称,则它将无法解析。
DNS 需要一种方法来查找 FQDN 才能进行解析。
这只是我的猜测,根据我掌握的信息有限。