主机名是否区分大小写?

mic*_*con 34 domain-name-system hostname case-sensitive

主机名是否区分大小写?是

ping MYHOST
Run Code Online (Sandbox Code Playgroud)

等于

ping myhost
Run Code Online (Sandbox Code Playgroud)

它是否取决于所使用的 DNS?Win/Mac/Unix 系统之间有区别吗?

Bil*_*hor 33

从 DNS 解析的名称不区分大小写。这对于防止混淆很重要。如果区分大小写,那么我们将有 .com 的八个变体(.com、.Com、.cOm、.COM、.coM、.CoM、.cOM 和 .COM)。国家/地区代码将有四个。

如果名称解析对 Ping 区分大小写,则 DNS 不会完成。

  • @Zoredache:看来使用 IDNA 系统的国际化域必须可以用 Punycode 编码,这涉及到小写字母的转换。还有一些额外的限制可以确保名称在视觉上是不同的。此外,您不想强迫用户确保他们正确处理。 (2认同)

Cri*_*gie 10

我刚刚在这里工作。DNS应该不区分大小写.... RFC 指定 . https://tools.ietf.org/html/rfc4343 但并没有说它必须是小写。

因此,我们很高兴对无法为我们的内部域“t.local”解决问题的主机进行故障排除

p123$ ping p123-db.t.local
PING p123-db.t.local (192.168.106.175) 56(84) bytes of data.
....works ok

p123$ ping P123-dB.T.lOcal
ping: unknown host P123-dB.T.lOcal
Run Code Online (Sandbox Code Playgroud)

为什么要解决混合案例?因为这就是 tcpdump 显示为 DNS 查询的内容,因为这是正在运行的软件所要求的。pgbouncer 被配置为在其配置中使用“p123-db”,并且 resolv.conf 指定了一个搜索域“t.local” 那么是什么混淆了这种情况?

原来 glibc 是随机切换案例的。该过程称为“0x20 填充”,并于 2008 年在“使用 DNS 标签中的位 0x20 以提高交易身份”中首次描述 http://tools.ietf.org/html/draft-vixie-dnsext-dns0x20-00

主要目的是增加熵,以便更难伪造回复——问题的情况必须与答案的情况相匹配。

可以在这里找到一个很好的讨论。 https://developers.google.com/speed/public-dns/docs/security?csw=1#randomize_case


另外,我们在内部运行 powerDNS,并针对数据库进行查找。多年来,没有人在 t.local 域中使用大写字母的主机名或 FQDN,因此我们从未注意到我们的内部域区分大小写。

已通过查询中的一些调整修复,但这会破坏上述 0x20 混合大小写查找 - 客户端可能要求在与请求相同的情况下返回答案。

简短回答:DNS 不应该区分大小写,但问题和答案将来需要是相同的大小写。

  • 问题提出 4 年后,答案略有不同。我想知道再过 4 年答案是否会是“是的 - DNS 现在区分大小写” (4认同)

And*_*olt 6

我刚刚完成对嵌入式 SE Linux 设备上主机名解析表现出区分大小写的问题的故障排除。

“ping MYHOST”将 ping 到 127.0.0.1,而“ping myhost”将 ping 正确的 IP 地址。

nslookup 对大写和小写都产生了正确的结果,表明 DNS 服务器没有故障。

但与忽略缓存的 nslookup 不同,“getenthosts MYHOST”输出“0.0.0.0”,“getenthosts myhost”输出正确的 IP 地址。

所以 nscd 显然是区分大小写的。调用“nscd -i Hosts”清除缓存修复了该问题。

(大写)中的 MYHOST 最终缓存为 0.0.0.0,因为在创建 DNS 条目之前,进程尝试建立与 MYHOST 的连接,这种情况在远程设备获取其 DHCP 分配时发生。