如果提供的網域以斜線結尾,則 DNS 查找失敗

如果提供的網域以斜線結尾,則 DNS 查找失敗

多年來,我們已經成功運行了包含各種 Linux 伺服器 (Ubuntu) 和 Windows+Linux 用戶端的辦公室網路。一台伺服器充當使用 DNSmasq 輕量級 DNS 伺服器套件的內部 DNS 伺服器。

就在今天,我發現該命令
$ nslookup machine.domain.com有效,但
$ nslookup machine.domain.com/不起作用 --> 不存在的網域/NXDOMAIN

這發生在 Ubuntu 機器和 Windows 機器上。

這僅僅是因為在這裡(即使用“nslookup”或“host”等命令時),末尾的斜杠被認為是域名的一部分,即頂級域是“com/”?或者這是否表明我們的內部 DNS 伺服器配置錯誤?

顯然,瀏覽器「通常」會正確處理該斜杠,因為它們僅使用網域而不使用斜杠進行 DNS 查找,從而獲得答案。我把「通常」放在這裡是因為就在今天,我在新的 Ubuntu 22.04 LTS 安裝上遇到了新的 Firefox,在瀏覽器地址欄中輸入斜杠(即machine.domain.com/)奇怪地以上面提到的NXDOMAIN 錯誤訊息結束。

而且 - 更奇怪的是 - 只有在通過刪除尾部斜杠成功查找之後,它才開始使用“斜杠地址”。後一種行為可能是由 Firefox 快取引起的...

有人對我有一些見解嗎?這是否甚至可能是我對DNS 工作原理的不理解(即尾部斜杠或甚至後續路徑實際上確實指向“不同的域”)和Firefox 錯誤(即錯誤地在已安裝的DNS 查詢中包含斜杠)的組合。謝謝!

答案1

你正在混合標準;對於超文本傳輸協定 (HTTP),「正斜線」的使用是正確的。

HTTP 相容位址由協定定義組成,後面接著完全限定網域名稱 (FQDN) 和統一資源指示符 (URI)。

例如https://sub.domain.tld/uri/of/the/resource/being/requested

協定:https(TLS 封裝的 HTTP 協定) FQDN:sub.domain.tld URI:/uri/of/the/resource/being/requested

其中,DNS 僅用於將 FQDN 解析為要存取的 IP 位址,例如

FQDN:一.一.一.一。ipv4:1.1.1.1

頂級域是 FQDN 的一部分,即.分隔符號後面的最後一部分,例如.com .co.uk .site等待...

簡而言之,任何被傳遞到的網域都nslookup無法解析的原因是/字面解釋的,而任何瀏覽器都可以識別是什麼; HTTP 協定的一部分。

nslookup 嘗試解析sub.domain.tld/,任何瀏覽器都會輸入「查入」FQDNsub.domain.tld和 URI/

希望這能讓大家清楚一些

答案2

正如這裡提到的關聯(microsoft) 域只能包含字母字元、數字和「-」符號。

其他任何事情都是不合法的(不正確,@Patrick Mevzek 正確修正),nslookup 可能不會解析這個,或者你的 DNS 伺服器正確地拒絕這樣一個愚蠢的請求:)

斜槓之後的網頁瀏覽器中發生的任何事情都不是 DNS 的一部分,而且 nslookup 無法理解這一點。

例如,curl 不會抱怨,只會將其視為網頁伺服器的根。

curl example.com/                           
<!doctype html>
<html>
<head>
    <title>Example Domain</title>

相關內容