
多年來,我們已經成功運行了包含各種 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>