Dns

執行像 systemd-resolved 這樣的本地 DNS 代理伺服器的目的是什麼?

  • March 2, 2022

我正在閱讀systemd-resolved以及它如何偵聽127.0.0.53DNS 請求。當您可以直接查詢 DNS 伺服器(例如來自 Google、Cloudflare 或您的 ISP 的伺服器)時,執行此伺服器並對其進行查詢的目的是什麼?

執行本地解析器(通常,不僅僅是 systemd-resolved)可以提供許多好處;通常,第一個是記憶體,因為大多數本地解析器將記憶體對查詢的響應。這意味著將更快地處理重複的查詢。

解析器是本地的,因此可以了解您的本地環境(外部解析器不能)這一事實可以帶來其他好處。在systemd-resolved的情況下,這包括:

  • 大量合成記錄,包括localhost_gateway和中的任何條目/etc/hosts(以便應用程序獲得一致的解析,無論它們是直接使用 DNS 查詢還是gethostbyname等);
  • 使用鏈路本地多播名稱解析可發現的主機(以便可以通過 DNS 找到 LAN 上的其他系統);
  • 使用多播 DNS可發現的主機,帶有.local域後綴(例如列印機)。

它還可以強制執行僅在本地完全有意義的策略,例如DNSSEC。

最重要的是,systemd-resolved 處理所有名稱解析服務:DNS 使用它的存根解析器、RFC-3493樣式getaddrinfo/gethostbyname它自己的 D-Bus 介面,再次確保所有客戶端的一致體驗,至少在解析級別(例如,它無法解決因使用代理而引起的變化)。

引用自:https://unix.stackexchange.com/questions/692564