Jer*_*ams 6 domain-name-system
早在 1997 年,RFC 2181 就放宽了 DNS 名称中可接受的字符。但人们似乎仍然对在主机名中使用下划线感到不安。(例如,GoDaddy 不会出售带有下划线的二级域名,例如“this_bites.com”)
在几分钟的测试中,一个包含下划线的三级主机名在我办公室的所有东西上都“正常工作”。(例如,that_guy.example.com,我的 DNS 主机是 Amazon Route 53)
它在 Win XP 和 Win 7、Mac OSX 10.7、IE8 和 9、现代 Firefox、Safari 和 Chrome 上“正常工作”。
我在哪里能指望它不工作?
(我为什么要关心?我正在为学生分配虚拟机,我想使用他们在主机名中选择的用户 ID 来提醒他们他们在 box 上的操作直接归因于他们。不幸的是,很大一部分预先存在的学生用户 ID 包含下划线。)
完全清楚,从一开始就允许在 DNS 中使用下划线。RFC 1034关于标签的语法是这样说的:
3.5. 首选名称语法
DNS 规范试图在构建域名的规则中尽可能通用。这个想法是任何现有对象的名称都可以表示为一个域名,只需很少的更改。但是,在为对象分配域名时,谨慎的用户将选择一个既满足域系统规则又满足对象任何现有规则的名称,无论这些规则是公开的还是由现有程序隐含的。
这意味着:如果您将主机名放在 DNS 中,请限制自己遵守主机名规则。如果您放置邮件域,请限制自己遵守RFC 822的规则如果您将DKIM或ENUM记录放置在 DNS(不是主机名)中,请限制您使用这些协议的语法。如果您放置其他内容,请遵循适当的语法。但是 DNS 本身不会限制您。
RFC 1034 继续对指定不带下划线的标签的语法提出保护建议。但这只是一个建议。它说“以下语法将导致更少的问题”。
所以肯定 GoDaddy 拒绝你“this_bites.com”是错误的。即使明确禁止在主机名中使用下划线,您也可能希望使用表示主机名以外的其他内容的 DNS 名称填充此域。DNS 注册商和名称服务提供商不应禁止这样做!
下一个问题是,实际主机名中是否允许使用下划线?
RFC 1034 关于主机名说“应该遵循 HOSTS.TXT 的旧规则”。但是,如果在编写 RFC 1034 时 HOSTS.TXT 的规则是旧的,那么它们现在已经是古老的历史了!RFC 1034 是在用户名通常不能超过 8 个字符并且所有内容都是 ASCII 的时候编写的。世界已经改变。
我想说没有一组规则可以定义什么是有效的主机名。它只取决于所使用的软件支持哪些字符,这些字符可能是它用于系统指定自己和对等方的主机名的一部分。“软件”是指以一种或另一种方式处理主机名的所有软件,从操作系统到网络监控代理,以及介于两者之间的一切。
如果您有理由确信您的环境中没有任何东西会阻塞包含下划线的主机名(我认为,现在,这是一个非常好的假设),那么我认为您可以安全地使用它们。
如果是一些使用中的主机名下划线,虽然阻止你,这不是DNS,决不是。
| 归档时间: |
|
| 查看次数: |
1454 次 |
| 最近记录: |