在几分钟的测试中,包含下划线的第三级主机名“只适用于我办公室中的所有内容”. (例如,that_guy.example.com,我的DNS主机是Amazon Route 53)
它“适用于”Win XP和Win 7,Mac OSX 10.7,IE8和9,现代Firefox,Safari和Chrome.
我在哪里可以预期它不起作用?
(为什么我关心?我正在为学生分配虚拟机,我想使用他们在主机名中选择的用户ID来提醒他们他们在盒子上的操作直接归因于他们.不幸的是,很大比例的预先存在的学生用户ID包含下划线.)
解决方法
3.5. Preferred name Syntax
The DNS specifications attempt to be as general as possible in the rules
for constructing domain names. The idea is that the name of any
existing object can be expressed as a domain name with minimal changes.
However,when assigning a domain name for an object,the prudent user
will select a name which satisfies both the rules of the domain system
and any existing rules for the object,whether these rules are published
or implied by existing programs.
这意味着:如果您将主机名放在DNS中,请限制自己使用主机名规则.如果您放置邮件域,请限制自己遵守RFC 822的规则如果您在DNS中放入DKIM或ENUM记录(不是主机名),请限制自己使用这些协议的语法.如果您输入其他内容,请遵循相应的语法.但DNS本身不会限制你.
RFC 1034继续对语法提出保护建议,该语法指定没有下划线的标签.但这只是一个建议.它说“以下语法将导致更少的问题”.
所以肯定GoDaddy否认你“this_bites.com”是错误的.即使主机名中明确禁止使用下划线,您也可能希望使用代表主机名以外的DNS名称来填充此域. DNS注册商和域名服务提供商不应该不允许这样做!
接下来的问题是,实际主机名中是否允许使用下划线?
RFC 1034说主机名“应该遵循HOSTS.TXT的旧规则”.但是,如果编写RFC 1034时HOSTS.TXT的规则已经过时了,那么它们现在已经成为历史了! RFC 1034是在用户名通常不能超过8个字符且一切都是ASCII的时候编写的.世界发生了变化.
我会说没有一套规则可以定义什么是有效的主机名.它只取决于所使用的软件支持哪些字符可能是它用于系统指定自己和同行的主机名的一部分. “软件”是指所有以某种方式处理主机名的软件,从操作系统到网络监控代理以及介于两者之间的所有内容.
如果您有理由确定您的环境中没有任何内容会阻塞包含下划线的主机名(我认为,这些天,这是一个非常好的假设),那么我认为您可以安全地使用它们.
但是,如果有什么东西阻止你在主机名中使用下划线,那么它不是DNS,也不是.