Ubuntu

域名伺服器多種可能配置之間的關係

  • June 9, 2018

有很多(恕我直言,太多)地方可以配置所使用的 DNS 伺服器,我不確定它們之間的關係。幾個問題是:哪些配置只是有條件地查詢(比如我理解正確,如果相應的服務沒有執行,則不查詢systemd配置)?哪些配置會覆蓋哪些配置?配置 DNS 的推薦方法是什麼?

舉幾個配置DNS伺服器的地方(以及我知道的一些其他資訊,如果有任何誤解,請更正),

  1. 寫入/etc/resolv.conf並使用chattr強制它在重新啟動後保持持久性(我認為這是不鼓勵的)
  2. resolvconf. 在/etc/resolvconf/resolv.conf.d. 用於resolvconf -a添加 DNS 並resolvconf -u對其進行更新
  3. systemd-resolve(d), 的一個單位systemd。配置在/etc/systemd/resolvd.conf. 它使用該地址127.0.0.53作為/etc/resolv.conf. 真實resolv.conf存在於/var/run/systemd/resolve/resolv.conf. 在較新的版本中(從哪個版本開始?),systemd-resolve --status可用於查詢目前 DNS 狀態。
  4. /etc/network/interfaces. 這一項與/etc/systemd/system/network-online.target.wants/networking.service
  5. Network-Manager,一個在 GUI 中驅動網路配置上下文菜單的組件。如果在 中配置了介面/etc/network/interfaces,它將拒絕再次對其進行管理(如not managedGUI 上下文菜單中所示)。

我正在Ubuntu 18.04 LTS使用 Unity 桌面環境執行。

配置 DNS 的推薦方法是什麼?

我正在使用 Unity 桌面環境執行 Ubuntu 18.04 LTS。

在可能的情況下,建議您使用這個:

  1. Network-Manager,一個在 GUI 中驅動網路配置上下文菜單的組件。

例如,這是官方 Ubuntu 桌面指南所說的。我還沒有驗證這是最新的,但我沒有理由懷疑它。

https://help.ubuntu.com/lts/ubuntu-help/net-manual.html.en

如果您的網路沒有自動將網路設置分配給您的電腦,您可能必須自己手動輸入設置。本主題假定您已經知道要使用的正確設置。如果沒有,您可能需要詢問您的網路管理員或查看路由器或網路交換機的設置。

手動設置網路設置:

  1. 在 DNS 部分…

在大多數係統上,系統會查看的唯一位置是/etc/resolv.conf. (但可能有各種不同的系統來編輯這個文件的內容)。

正如 Patrick 所指出的,在某些系統上會有一個更高優先級的外掛grep '^hosts:' /etc/nsswitch.confdns是標準的 glibc 外掛,它讀取/etc/resolv.conf.

特別是,如果您resolve之前有dns,則 this 指的是systemd-resolvedsystemd-resolved它會在使用 DNS 伺服器之前嘗試訪問/etc/resolv.conf.

正如您所指出的,可以systemd-resolved通過執行來查看可能查詢的 DNS 伺服器(如果有) systemd-resolve --status

正如您所指出的, NetworkManager 方法預計與手動編輯不兼容/etc/resolv.conf(因為 NetworkManager 將自行編輯此文件)。當然,如果您阻止 NetworkManager 進行編輯/etc/resolv.conf,則 NetworkManager 方法將不起作用。

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