David D. Asked: 2022-03-02 09:06:02 +0800 CST2022-03-02 09:06:02 +0800 CST 2022-03-02 09:06:02 +0800 CST 运行像 systemd-resolved 这样的本地 DNS 代理服务器的目的是什么? 772 我正在阅读systemd-resolved以及它如何侦听127.0.0.53DNS 请求。当您可以直接查询 DNS 服务器(例如来自 Google、Cloudflare 或您的 ISP 的服务器)时,运行此服务器并对其进行查询的目的是什么? dns systemd-resolved 1 个回答 Voted Best Answer Stephen Kitt 2022-03-03T02:23:50+08:002022-03-03T02:23:50+08:00 运行本地解析器(通常,不仅仅是 systemd-resolved)可以提供许多好处;通常,第一个是缓存,因为大多数本地解析器将缓存对查询的响应。这意味着将更快地处理重复的查询。 解析器是本地的,因此可以了解您的本地环境(外部解析器不能)这一事实可以带来其他好处。在systemd-resolved的情况下,这包括: 大量合成记录,包括localhost、_gateway和中的任何条目/etc/hosts(以便应用程序获得一致的解析,无论它们是直接使用 DNS 查询还是gethostbyname等); 使用链路本地多播名称解析可发现的主机(以便可以通过 DNS 找到 LAN 上的其他系统); 使用多播 DNS可发现的主机,带有.local域后缀(例如打印机)。 它还可以强制执行仅在本地完全有意义的策略,例如DNSSEC。 最重要的是,systemd-resolved 处理所有名称解析服务:DNS 使用其存根解析器、RFC-3493样式getaddrinfo/gethostbyname和它自己的 D-Bus 接口,再次确保所有客户端的一致体验,至少在解析级别(例如,它无法解决因使用代理而引起的变化)。
运行本地解析器(通常,不仅仅是 systemd-resolved)可以提供许多好处;通常,第一个是缓存,因为大多数本地解析器将缓存对查询的响应。这意味着将更快地处理重复的查询。
解析器是本地的,因此可以了解您的本地环境(外部解析器不能)这一事实可以带来其他好处。在systemd-resolved的情况下,这包括:
localhost
、_gateway
和中的任何条目/etc/hosts
(以便应用程序获得一致的解析,无论它们是直接使用 DNS 查询还是gethostbyname
等);.local
域后缀(例如打印机)。它还可以强制执行仅在本地完全有意义的策略,例如DNSSEC。
最重要的是,systemd-resolved 处理所有名称解析服务:DNS 使用其存根解析器、RFC-3493样式
getaddrinfo
/gethostbyname
和它自己的 D-Bus 接口,再次确保所有客户端的一致体验,至少在解析级别(例如,它无法解决因使用代理而引起的变化)。