主机名区分大小写吗?
ping MYHOST
等于
ping myhost
这取决于使用的 DNS 吗?Win/Mac/Unix 系统之间有区别吗?
答案1
从 DNS 解析的名称不区分大小写。这对于避免混淆非常重要。如果区分大小写,那么 .com 就有八种变体(.com、.Com、.cOm、.COm、.coM、.CoM、.cOM 和 .COM)。国家代码有四种。
如果 Ping 的名称解析区分大小写,则 DNS 不会执行该操作。
答案2
我刚刚在工作中遇到了这个问题。DNS应该不区分大小写.... RFC(RFC 4343 - 域名系统 (DNS) 不区分大小写说明) 指定了这一点,但没有说它必须是小写的。
因此,我们很高兴能够排除主机故障,该主机无法正确解析我们的内部域“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
为什么要费心解决混合情况?因为这就是 tcpdump 显示为 DNS 查询的内容,因为这就是正在运行的软件所要求的。pgbouncer 在其配置中配置为使用“p123-db”,并且 resolv.conf 指定搜索域为“t.local”。那么混合情况是什么呢?
事实证明,glibc 随机切换了大小写。该过程称为“0x20 填充”,最早于 2008 年在“使用 DNS 标签中的位 0x20 来改善交易身份”中描述 https://datatracker.ietf.org/doc/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不应该区分大小写,但是将来问题和答案需要大小写相同。
答案3
我刚刚完成了嵌入式 SE Linux 设备上主机名解析区分大小写的问题的故障排除。
“ping MYHOST” 将 ping 到 127.0.0.1,而“ping myhost”将 ping 正确的 IP 地址。
nslookup 对大写和小写都产生了正确的结果,表明 DNS 服务器没有故障。
但是与忽略缓存的 nslookup 不同,“getent hosts MYHOST”输出“0.0.0.0”,而“getent hosts myhost”输出正确的 IP 地址。
因此 nscd 显然区分大小写。调用“nscd -i hosts”清除缓存解决了该问题。
由于某个进程在创建 DNS 条目之前尝试建立与 MYHOST 的连接,因此 (大写) 中的 MYHOST 最终被缓存为 0.0.0.0,当远程设备获得其 DHCP 分配时就会发生这种情况。
答案4
正如 BillThor 提到的,DNS 或 netbios 解析级别不区分大小写。
各种操作系统也不会因大小写不同而出现问题。
但是,应用程序可能知道它们。例如,各种环境中的 Web 平台可以检查大小写。现在出于搜索引擎优化 (SEO) 的原因,更常见的是注意不同的大小写并进行重定向。不过,这完全取决于应用程序,所以答案是它有所不同。
不过,在应用程序级别,“大多数”情况下,主机名也不需要区分大小写。