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 查詢了。這個改動對大多數(shù)用戶來說是不可見的,除非他們開始使用 systemd-resolved 提供的某些新功能。不過最近 Fedora 項目改變了這個服務的缺省默認配置,取消了后備 DNS 服務器(fallback DNS server)—— 這個改動對于一些用戶來說就是可見的了,因為他們發(fā)現(xiàn)自己沒法進行域名解析了。
Systemd-resolved 延續(xù)了 systemd 的傳統(tǒng),替代了此前容易出問題的低級系統(tǒng)組件。它帶來了許多新的功能,包括比傳統(tǒng)的 gethostbyname() 系列函數(shù)提供了更多信息的 D-Bus 接口(當然并未移除 gethostbyname()這些函數(shù))、DNS-over-TLS、LLMNR 支持、split-DNS 支持、本地緩存(local caching)等等。這并不是一個完全全新的東西,因為 Ubuntu 在 16.10 版本中就已經(jīng)切換過來了。Fedora 在 systemd-resolved 這方面雖然沒有達成它追求的 "第一名" 的目標,但它最終還是切換過來了。
可以說大多數(shù) Fedora 用戶從未注意到這里已經(jīng)發(fā)生了變化。不過到 2020 年底時,Zbigniew J?drzejewski-Szmek 又做了一個改動,導致 systemd-resolved 引起了一些關注。他禁用了 fallback DNS server。fallback 機制的目的是為了確保系統(tǒng)能有一個可以正常工作的域名解析服務設置。哪怕系統(tǒng)配置錯誤了,或者所設置的服務器無法正常工作,此時作為最后手段,systemd-resolved 將使用 Google 和 Cloudflare 所維護的公共服務器來進行域名查找。不過在 Fedora 33 系統(tǒng)上,從 2020 年底發(fā)布的 systemd-246.7-2 這個更新開始,fallback 功能就已經(jīng)被禁用。
在 2 月底的時候,Tadej Jane?到 fedora-devel 郵件列表中提出應該改回去,他說。"在 F33 上,這個改動已經(jīng)破壞了一個正常工作的 vanilla cloud instance,就是因為在 systemd 的升級過程中刪除了 fallback DNS server list,導致系統(tǒng)沒有 DNS 服務器可用了"。大家也認為這并不是一個合理的結果。他的話引起了一些關于討論,但可能不會導致 Fedora 的政策改變。
人們可能會好奇,為什么像 automatic fallback 這樣一個看起來很有用的功能會被禁用掉。正如 J?drzejewski-Szmek 在這個改動的描述中所說,這是為了保護隱私,以及遵守歐洲 GDPR 指示:
DNS questions(當然也包括 IP 地址)是 GDPR 所定義的可以識別個人的信息(https://gdpr.eu/eu-gdpr-personal-data/ 明確將 IP 地址列為 PII,即 personally identifying information)。將這些數(shù)據(jù)包發(fā)送給 Google 或 Cloudflare 的服務器就意味著將這些 PII 數(shù)據(jù) "發(fā)送" 給他們。GDPR 要求,哪怕是那些不足以識別出個人身份的信息也仍然需要保護,因為這些信息可能會和其他信息結合在一起、或者今后通過改進過的技術來一起用來確認身份。所以,盡管 DNS 中的信息本身并不多,但在各種場景下也可能被解釋為需要保護的信息。
Jane?建議,這可以通過其他一些方式來改善??梢圆挥迷谒械胤蕉缄P閉 fallback server,而是針對云鏡像(cloud image)可以繼續(xù)啟用 fallback server,因為在這些環(huán)境里面,DNS 配置更容易出現(xiàn)被破壞的情況,而且這種場景里往往都不會有對應的單個用戶被識別出來。或者 Fedora 可以選擇一個 "有信譽的 DNS 解析服務(reputable DNS resolver)",就是那種公認是尊重隱私的,將其作為每個人的 fallback 服務。J?drzejewski-Szmek 回答說,第一種方案可能是可行的,但無法實行第二種方案,他說,很難找到一個在全球范圍內(nèi)都可以被接受的供應商。
除了隱私問題外,在討論中還提到另一個原因:它們可能會隱藏 DNS 配置錯誤。如果沒有 fallback 功能,出錯的 DNS 配置幾乎必定會引起用戶的注意(盡管用戶可能會非常不喜歡這種事件),從而會被修復。有了 fallback 之后,一切看起來都是正常的,用戶可能永遠不會知道這里有配置問題。所以也就不會得到修復,從而可能會導致出現(xiàn)更壞的問題。
不過 Lennart Poettering 批評這種觀點,認為這是一個 "模糊的說法,并且對用戶非常不友好"。他認為,比起讓系統(tǒng)完全沒有域名服務來說,更好的做法是大聲抱怨出來、并退回到之前可以正常工作的配置下。很多用戶不知道如何來自己修復 DNS,如果 DNS 無法正常工作了,他們甚至無法通過網(wǎng)絡尋求幫助了。
Poettering 還提出了另一個問題:保護隱私這個說法并不總是合理的,因為有時候使用公共 DNS 服務器很可能是更尊重隱私的選擇。
我們甚至可以更進一步地判定:在很多情況下,使用那些公共 DNS 服務器的場景,可能會比使用 DHCP 服務所提供的那些 DNS 服務器擁有更好的隱私保護,因為我們可以在這些公共 DNS 服務器上使用 DoT (DNS over TLS)(雖然這還不是 resolved 的默認設置,但是很可能很快就會變成默認配置了),但 DHCP 里提供的 DNS 服務器基本上都無法使用 DoT。而且更糟糕的是,后者通常是由一些不那么可靠的網(wǎng)絡服務所提供的,比如網(wǎng)吧之類的,在那里如果我們發(fā)送的內(nèi)容沒有加密的話,會是很可怕的。
J?drzejewski-Szmek 也承認了這一點,并額外指出 ISP 提供的 DNS 服務器可能也沒有以用戶的最大利益為優(yōu)先考慮。他仍然認為,更好的選擇還是使用這些 DNS 服務器,因為 "它們對用戶來說更明顯,也更適合政策的規(guī)定"。無論如何,無人提出應該優(yōu)先使用谷歌或者 Cloudflare 的服務器,而不去使用本地網(wǎng)絡所使用的 DNS server。
Fedora 的配置會如何改動,目前還遠未明確。盡管實際的隱私和法律風險似乎很小,但啟用 fallback server 似乎確實有一些真實阻力。大多數(shù) Fedora 用戶可能永遠不會注意到,但有一部分人可能不得不先學習使用 resolvectl 命令來手工創(chuàng)建一個可以正常工作的 DNS 配置了。需要再次強調,他們很可能會對這種情況提出很多抱怨的。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長按下面二維碼關注,關注 LWN 深度文章以及開源社區(qū)的各種新近言論~
