在Windows上:
_.github.com
nslookup _.github.com
正常工作ping _.github.com
正常工作在linux上(在两个独立的网络上测试):
_.github.com
host _.github.com
正常工作ping _.github.com
不 python -c "import requests; requests.get('_.github.com')"
不 这里发生了什么?
答案 0 :(得分:3)
因为Linux(更具体地说,它的一些组件,例如libresolv甚至ping本身)正在尊重RFC。主机名中不允许使用下划线,使用ping时主机名是您正在查找的内容。 (在其他类型的DNS记录中允许使用下划线,例如SRV记录,TXT记录,例如用于DKIM的记录......)
请参阅RFC 1123第2.1节和RFC 952。以下是讨论此主题的其他一些链接:
Stack Overflow - Can (hostname) subdomains have an underscore “_” in it?
Domainkey - Underscores in DNS
Quora - Why are underscores not allowed in DNS host names?
更新:正如一些人在评论中指出的那样,Linux ping对a_a.github.com
感到满意。再做一些测试(本例中为CentOS 7):
ping: unknown host _.github.com
ping: unknown host a_.github.com
ping: unknown host _a.github.com
$ ping a_a.github.com
PING github.map.fastly.net (23.235.40.133) 56(84) bytes of data.
64 bytes from 23.235.40.133: icmp_seq=1 ttl=59 time=29.7 ms
所以看来Linux ping并没有完全拒绝下划线,但它似乎不允许它成为主机名原子中的第一个或最后一个字符(或者,因此唯一的字符)。