如果提供的域名以斜杠结尾,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 错误(即在安装的 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

正如这里提到的关联(微软)域名只能包含字母字符、数字和“-”符号。

其他任何事情都不合法(不正确,由@Patrick Mevzek 正确纠正),nslookup 可能不会解析这个或者你的 DNS 服务器理所当然地拒绝了这样一个愚蠢的请求:)

斜线后在网络浏览器中发生的任何事情都不是 DNS 的一部分,并且 nslookup 无法理解这一点。

例如,curl 不会抱怨,只是将其视为网络服务器的根。

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

相关内容