我正在阅读有关systemd-resolved
它如何侦听127.0.0.53
DNS 请求的内容。当您可以直接查询 DNS 服务器(例如来自 Google、Cloudflare 或您的 ISP 的 DNS 服务器)时,运行此服务器并向其进行查询的目的是什么?
答案1
运行本地解析器(一般来说,不仅仅是 systemd-resolved)可以提供许多好处;通常,第一个是缓存,因为大多数本地解析器将缓存对查询的响应。这意味着重复的查询将得到更快的处理。
其他好处可以从以下事实中得出:解析器是当地的,因此了解您的本地环境(外部解析器无法了解)。在systemd 解析的案例,涵盖:
- 一些综合记录,包括
localhost
、_gateway
和 中的任何条目/etc/hosts
(以便应用程序获得一致的解析,无论它们是直接使用 DNS 查询还是gethostbyname
等); - 可使用以下方式发现主机链路本地多播名称解析(以便可以通过DNS找到您局域网上的其他系统);
- 可使用以下方式发现主机组播DNS,带有
.local
域后缀(例如打印机)。
它还可以执行仅在本地完全有意义的政策,例如DNSSEC。
最重要的是,systemd-resolved 处理所有名称解析服务:使用其存根解析器的 DNS,RFC-3493-风格getaddrinfo
/gethostbyname
, 和其自己的 D-Bus 接口,再次确保所有客户端获得一致的体验,至少在分辨率级别如此(例如,它无法解决因使用代理而产生的变化)。