我正在尝试配置我的计算机以使用本地 DNS 服务器解析某些域。DNS服务器位于192.168.1.123,它本身能够正常解析所有内容。
在其他计算机上,我安装了dnscrypt-proxy并更改/etc/resolv.conf
为:
nameserver 127.0.0.1
options edns0 single-request-reopen
我还确保它/etc/resolv.conf
不会被 NetworkManager 覆盖。
然后我编辑/etc/dnscrypt-proxy/dnscrypt-proxy.toml
以便用于forwarding_rules
转发home.arpa
到192.168.1.124。我在此 IP 上运行 GIT 服务,并且 192.168.1.123 处的 DNS 服务器配置为解析git.home.arpa
为 192.168.1.124。想法是我可以打开git.home.arpa
。
当我使用host git.home.arpa
或 时drill git.home.arpa
,我的台式机、笔记本电脑和位于 192.168.1.123 的 DNS 服务器都返回正确的 IP 192.168.1.124。我也可以在 DNS 服务器日志中看到查询。
当我curl git.home.arpa
在桌面和 DNS 服务器上执行此操作时,我看到了 GIT 服务的正确 HTML。但是,在我的笔记本电脑上,我得到了curl: (6) Could not resolve host: git.home.arpa
. 我也从浏览器得到同样的东西。
据我所知,笔记本电脑和台式机具有相同的配置。它们之间的以下文件是相同的:
/etc/resolv.conf
/etc/nsswitch.conf
/etc/dnscrypt-proxy/dnscrypt-proxy.toml
/etc/dnscrypt-proxy/forwarding-rules.txt
我尝试重新启动笔记本电脑,重新启动 NetworkManager 服务,重新启动 dncrypt-proxy。想必一定存在一些差异,因为一个在工作,另一个则没有,但我不知道在哪里。
如果主机和钻头可以解析域,为什么curl会无法解析域?我怎样才能找到问题所在?
原来笔记本电脑正在运行
systemd-resolved
。我对此感到惊讶,因为:nsswitch.conf
resolv.conf
dnscrypt-proxy.service
已安装并运行所以我认为两个解析器不可能并行运行而不破坏 DNS。事实证明他们是。受到https://unix.stackexchange.com/a/708899/217968的启发,我又看了一眼,确实它在台式机上被禁用,在 DNS 服务器上被禁用,但在笔记本电脑上启用。我纠正了这个问题:
我笔记本电脑上的 DNS 开始工作。