為什麼 /etc/resolv.conf 指向 127.0.0.53?
我試圖檢查我的 DNS 解析器是什麼,我注意到了這一點:
user@ubuntu:~$ cat /etc/resolv.conf nameserver 127.0.0.53 options edns0
我期待
192.168.1.1
,這是我的預設網關,我的路由器。我不明白為什麼它指向
127.0.0.53
. 當我點擊那個 ip 時,apache2 會為我提供它的內容。有人可以幫我解決這個問題嗎?文件不應該直接指向充當 DNS 解析器的預設網關 - 或者甚至更好地直接指向我首選的 DNS1.1.1.1
嗎?PS:當我在埠 53 上使用 wireshark 擷取 DNS 數據包時,我看到的只是 is
192.168.1.1
而不是127.0.0.53
,因為它應該是。
您可能正在
systemd-resolved
作為服務執行。
systemd-resolved
動態生成兩個配置文件,供 DNS 客戶端庫(例如 C 庫中的 BIND DNS 客戶端庫)可選使用:
/run/systemd/resolve/stub-resolv.conf
告訴 DNS 客戶端庫將它們的查詢發送到 127.0.0.53。這是systemd-resolved
程序偵聽 DNS 查詢的地方,然後將其轉發。/run/systemd/resolve/resolv.conf
告訴 DNS 客戶端庫將它們的查詢發送到systemd-resolved
從其配置文件和 DHCP 租約中包含的 DNS 伺服器資訊動態獲得的 IP 地址。實際上,這繞過了systemd-resolved
轉發步驟,代價是也繞過了所有systemd-resolved
的邏輯,以便為任何給定的事務做出關於實際轉發到什麼的複雜決策。在這兩種情況下,
systemd-resolved
配置域名後綴的搜尋列表,再次從其配置文件和 DHCP 租約中動態派生(通過超出此答案範圍的機制告知)。
/etc/resolv.conf
可以選擇是:
- 到其中任何一個的符號連結;
- 指向包提供的靜態文件的符號連結,該文件
/usr/lib/systemd/resolv.conf
還指定 127.0.0.53,但沒有動態計算搜尋域;- 完全是其他一些文件。
您很可能有這樣的符號連結。在這種情況下,知道 192.168.1.1 設置的事情,即(可能)由 LAN 上的 DHCP 伺服器在 DHCP 租約中分發,是
systemd-resolved
,正如您所觀察到的那樣,它將查詢流量轉發給它。您的應用程序中的 DNS 客戶端庫本身僅與systemd-resolved
.具有諷刺意味的是,儘管您可能沒有正確擷取到/來自 127.0.0.53 的環回介面流量,但您更有可能沒有看到它,因為
systemd-resolved
還(可選地)繞過了 C 庫中的 BIND DNS 客戶端並生成沒有這樣的流量被擷取。提供了一個
systemd-resolved
名為的 NSS 模組nss-resolve
,它是您的 C 庫的外掛。以前,您的 C 庫將使用另一個名為的外掛,nss-dns
該外掛使用 BIND DNS 客戶端使用 DNS 協議對中列出的伺服器進行查詢/etc/resolv.conf
,並應用其中列出的域後綴。
nss-resolve
在您的文件中提前列出,導致您的 C 庫根本不使用 BIND DNS 客戶端或 DNS 協議來執行名稱→地址查找。相反,在(系統範圍的)桌面匯流排上使用非標準和特殊的協議 to ,它再次對 192.168.1.1 或您的 DHCP 租約和配置文件所說的任何內容進行後端查詢。nss-dns``/etc/nsswitch.conf``nss-resolve``systemd-resolved
要攔截*它,*您必須使用
dbus-monitor
或某些此類工具監視桌面匯流排流量。它甚至不是 IP 流量,更不用說環回網路介面上的 IP 流量了。因為桌面匯流排是通過AF_LOCAL
套接字到達的。如果您想在 1.1.1.1 或其他 IP 地址使用第三方解析代理 DNS 伺服器,您有以下三種選擇:
- 配置您的 DHCP 伺服器以分發它而不是分發 192.168.1.1。
systemd-resolved
將通過 DHCP 租約了解並使用它。- 通過其自己的配置
systemd-resolved
機制進行配置,以使用它而不是在 DHCP 租約中看到的內容。- 製作您自己的
/etc/resolv.conf
文件,一個實際的正常文件而不是符號連結,在此處列出 1.1.1.1 並記住關閉,nss-resolve
以便您重新使用nss-dns
BIND DNS 客戶端。配置文件是組合在一起的各種目錄中的
systemd-resolved
一大堆文件,如何為上述第二選擇配置它們超出了這個答案的範圍。閱讀resolved.conf
(5) 手冊頁。