域名伺服器多種可能配置之間的關係
有很多(恕我直言,太多)地方可以配置所使用的 DNS 伺服器,我不確定它們之間的關係。幾個問題是:哪些配置只是有條件地查詢(比如我理解正確,如果相應的服務沒有執行,則不查詢systemd配置)?哪些配置會覆蓋哪些配置?配置 DNS 的推薦方法是什麼?
舉幾個配置DNS伺服器的地方(以及我知道的一些其他資訊,如果有任何誤解,請更正),
- 寫入
/etc/resolv.conf
並使用chattr
強制它在重新啟動後保持持久性(我認為這是不鼓勵的)resolvconf
. 在/etc/resolvconf/resolv.conf.d
. 用於resolvconf -a
添加 DNS 並resolvconf -u
對其進行更新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 狀態。/etc/network/interfaces
. 這一項與/etc/systemd/system/network-online.target.wants/networking.service
Network-Manager
,一個在 GUI 中驅動網路配置上下文菜單的組件。如果在 中配置了介面/etc/network/interfaces
,它將拒絕再次對其進行管理(如not managed
GUI 上下文菜單中所示)。我正在
Ubuntu 18.04 LTS
使用 Unity 桌面環境執行。
配置 DNS 的推薦方法是什麼?
…
我正在使用 Unity 桌面環境執行 Ubuntu 18.04 LTS。
在可能的情況下,建議您使用這個:
- Network-Manager,一個在 GUI 中驅動網路配置上下文菜單的組件。
例如,這是官方 Ubuntu 桌面指南所說的。我還沒有驗證這是最新的,但我沒有理由懷疑它。
https://help.ubuntu.com/lts/ubuntu-help/net-manual.html.en
如果您的網路沒有自動將網路設置分配給您的電腦,您可能必須自己手動輸入設置。本主題假定您已經知道要使用的正確設置。如果沒有,您可能需要詢問您的網路管理員或查看路由器或網路交換機的設置。
手動設置網路設置:
…
- 在 DNS 部分…
在大多數係統上,系統會查看的唯一位置是
/etc/resolv.conf
. (但可能有各種不同的系統來編輯這個文件的內容)。正如 Patrick 所指出的,在某些系統上會有一個更高優先級的外掛
grep '^hosts:' /etc/nsswitch.conf
。dns
是標準的 glibc 外掛,它讀取/etc/resolv.conf
.特別是,如果您
resolve
之前有dns
,則 this 指的是systemd-resolved
。systemd-resolved
它會在使用 DNS 伺服器之前嘗試訪問/etc/resolv.conf
.正如您所指出的,可以
systemd-resolved
通過執行來查看可能查詢的 DNS 伺服器(如果有)systemd-resolve --status
。正如您所指出的, NetworkManager 方法預計與手動編輯不兼容
/etc/resolv.conf
(因為 NetworkManager 將自行編輯此文件)。當然,如果您阻止 NetworkManager 進行編輯/etc/resolv.conf
,則 NetworkManager 方法將不起作用。