LWN: Fedora的后备域名解析服务器
关注了就能看到更多这么棒的文章哦~
Fedora and fallback DNS servers
By Jonathan Corbet
February 25, 2021
DeepL assisted translation
https://lwn.net/Articles/847257/
Fedora 33 版本中有一个未被提及的改动,就是改用 systemd-resolved 来处理 DNS 查询了。这个改动对大多数用户来说是不可见的,除非他们开始使用 systemd-resolved 提供的某些新功能。不过最近 Fedora 项目改变了这个服务的缺省默认配置,取消了后备 DNS 服务器(fallback DNS server)—— 这个改动对于一些用户来说就是可见的了,因为他们发现自己没法进行域名解析了。
Systemd-resolved 延续了 systemd 的传统,替代了此前容易出问题的低级系统组件。它带来了许多新的功能,包括比传统的 gethostbyname() 系列函数提供了更多信息的 D-Bus 接口(当然并未移除 gethostbyname()这些函数)、DNS-over-TLS、LLMNR 支持、split-DNS 支持、本地缓存(local caching)等等。这并不是一个完全全新的东西,因为 Ubuntu 在 16.10 版本中就已经切换过来了。Fedora 在 systemd-resolved 这方面虽然没有达成它追求的 "第一名" 的目标,但它最终还是切换过来了。
可以说大多数 Fedora 用户从未注意到这里已经发生了变化。不过到 2020 年底时,Zbigniew Jędrzejewski-Szmek 又做了一个改动,导致 systemd-resolved 引起了一些关注。他禁用了 fallback DNS server。fallback 机制的目的是为了确保系统能有一个可以正常工作的域名解析服务设置。哪怕系统配置错误了,或者所设置的服务器无法正常工作,此时作为最后手段,systemd-resolved 将使用 Google 和 Cloudflare 所维护的公共服务器来进行域名查找。不过在 Fedora 33 系统上,从 2020 年底发布的 systemd-246.7-2 这个更新开始,fallback 功能就已经被禁用。
在 2 月底的时候,Tadej Janež到 fedora-devel 邮件列表中提出应该改回去,他说。"在 F33 上,这个改动已经破坏了一个正常工作的 vanilla cloud instance,就是因为在 systemd 的升级过程中删除了 fallback DNS server list,导致系统没有 DNS 服务器可用了"。大家也认为这并不是一个合理的结果。他的话引起了一些关于讨论,但可能不会导致 Fedora 的政策改变。
人们可能会好奇,为什么像 automatic fallback 这样一个看起来很有用的功能会被禁用掉。正如 Jędrzejewski-Szmek 在这个改动的描述中所说,这是为了保护隐私,以及遵守欧洲 GDPR 指示:
DNS questions(当然也包括 IP 地址)是 GDPR 所定义的可以识别个人的信息(https://gdpr.eu/eu-gdpr-personal-data/ 明确将 IP 地址列为 PII,即 personally identifying information)。将这些数据包发送给 Google 或 Cloudflare 的服务器就意味着将这些 PII 数据 "发送" 给他们。GDPR 要求,哪怕是那些不足以识别出个人身份的信息也仍然需要保护,因为这些信息可能会和其他信息结合在一起、或者今后通过改进过的技术来一起用来确认身份。所以,尽管 DNS 中的信息本身并不多,但在各种场景下也可能被解释为需要保护的信息。
Janež建议,这可以通过其他一些方式来改善。可以不用在所有地方都关闭 fallback server,而是针对云镜像(cloud image)可以继续启用 fallback server,因为在这些环境里面,DNS 配置更容易出现被破坏的情况,而且这种场景里往往都不会有对应的单个用户被识别出来。或者 Fedora 可以选择一个 "有信誉的 DNS 解析服务(reputable DNS resolver)",就是那种公认是尊重隐私的,将其作为每个人的 fallback 服务。Jędrzejewski-Szmek 回答说,第一种方案可能是可行的,但无法实行第二种方案,他说,很难找到一个在全球范围内都可以被接受的供应商。
除了隐私问题外,在讨论中还提到另一个原因:它们可能会隐藏 DNS 配置错误。如果没有 fallback 功能,出错的 DNS 配置几乎必定会引起用户的注意(尽管用户可能会非常不喜欢这种事件),从而会被修复。有了 fallback 之后,一切看起来都是正常的,用户可能永远不会知道这里有配置问题。所以也就不会得到修复,从而可能会导致出现更坏的问题。
不过 Lennart Poettering 批评这种观点,认为这是一个 "模糊的说法,并且对用户非常不友好"。他认为,比起让系统完全没有域名服务来说,更好的做法是大声抱怨出来、并退回到之前可以正常工作的配置下。很多用户不知道如何来自己修复 DNS,如果 DNS 无法正常工作了,他们甚至无法通过网络寻求帮助了。
Poettering 还提出了另一个问题:保护隐私这个说法并不总是合理的,因为有时候使用公共 DNS 服务器很可能是更尊重隐私的选择。
我们甚至可以更进一步地判定:在很多情况下,使用那些公共 DNS 服务器的场景,可能会比使用 DHCP 服务所提供的那些 DNS 服务器拥有更好的隐私保护,因为我们可以在这些公共 DNS 服务器上使用 DoT (DNS over TLS)(虽然这还不是 resolved 的默认设置,但是很可能很快就会变成默认配置了),但 DHCP 里提供的 DNS 服务器基本上都无法使用 DoT。而且更糟糕的是,后者通常是由一些不那么可靠的网络服务所提供的,比如网吧之类的,在那里如果我们发送的内容没有加密的话,会是很可怕的。
Jędrzejewski-Szmek 也承认了这一点,并额外指出 ISP 提供的 DNS 服务器可能也没有以用户的最大利益为优先考虑。他仍然认为,更好的选择还是使用这些 DNS 服务器,因为 "它们对用户来说更明显,也更适合政策的规定"。无论如何,无人提出应该优先使用谷歌或者 Cloudflare 的服务器,而不去使用本地网络所使用的 DNS server。
Fedora 的配置会如何改动,目前还远未明确。尽管实际的隐私和法律风险似乎很小,但启用 fallback server 似乎确实有一些真实阻力。大多数 Fedora 用户可能永远不会注意到,但有一部分人可能不得不先学习使用 resolvectl 命令来手工创建一个可以正常工作的 DNS 配置了。需要再次强调,他们很可能会对这种情况提出很多抱怨的。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~