背景是我正在解決用作本地 DNS 伺服器的 pihole 的間歇性故障,我透過 Macbook 上的 Docker 運行該伺服器,以啟用我的家庭實驗室的實體機和虛擬機。
我在後來標記的 pihole Docker 映像版本中遇到了以下問題,我相信是 v5.6 或 v5.7 之一。我真的不知道這是否是由於 pihole 版本造成的,但我不記得以前見過這樣的 nslookup;請注意“DNS 請求超時”,但隨後顯然成功了。我相信在嘗試此操作之前,在 pihole 管理中添加指向“192.168.50.211”的本地 DNS 條目“gitlab.m44zv82q.com”後,我已經重新啟動了 Windows 10 桌面。在本例中,我尚未新增 DNS 伺服器的名稱。為什麼顯示“DNS 請求超時”,但隨後卻明顯成功?我在另一台 Windows 10 筆記型電腦上看到了類似的問題。順便說一句,我將“m44zv82q.com”指向“192.168.50.1”。
C:\Users\iamuser>nslookup gitlab.m44zv82q.com
Server: 3400b21b6797
Address: 192.168.50.243
DNS request timed out.
timeout was 2 seconds.
Name: gitlab.m44zv82q.com
Address: 192.168.50.211
C:\Users\iamuser>
在 pihole 管理中新增本機 DNS 項目後,我立即切換回 v5.5.1。
C:\Users\iamuser>nslookup gitlab.m44zv82q.com
Server: iamuser-Macbook-Pro.m44zv82q.com
Address: 192.168.50.243
Name: gitlab.m44zv82q.com
Address: 192.168.50.211
C:\Users\iamuser>
答案1
為什麼顯示“DNS 請求超時”,但隨後卻明顯成功?
因為它確實二DNS 請求 – 一個用於AAAA
記錄,另一個用於A
記錄(分別檢索 IPv6 和 IPv4 位址)。第一個逾時,但第二個回傳一個 IP 位址。
通常,如果網站不支援 IPv6 並且不在 DNS 中發布任何 AAAA 記錄,AAAA 查詢仍然會成功,只是傳回所請求類型的零記錄。
然而,一些「網路保護」軟體,以及一些VPN軟體,都存在以下不明智的功能:完全阻塞查詢 AAAA,這樣它們要么返回一個假的 SERVFAIL 錯誤,要么根本不返回任何回應(強制客戶端等待直到超時)。確保沒有啟用類似的功能。
或者,由於 Pi-Hole 使用 dnsmasq,添加本地 DNS 條目也可能不再完全覆蓋該條目的所有記錄類型 - 也就是說,我懷疑不是直接返回“0 AAAA 記錄”,它最終會將AAAA 查詢轉發到上游(到您的ISP 的DNS 伺服器)或類似的東西。
看看 Pi-Hole 的最近的 DNS 查詢列出來看看發生了什麼。