2013-01-12 66 views
1

当我注意到奇怪的差异时,我正在玩通配符域(考虑将它们用于未来项目)。Linux DNS解析拒绝某些名称

我的域配置了通配符DNS条目(*.vgoc.info)。我尝试执行ping a_.vgoc.info,并在Linux上,我得到

$ ping a_.vgoc.info 
ping: unknown host a_.vgoc.info 

但是,在OS X上,我得到

$ ping a_.vgoc.info 
PING vgoc.info (174.2.65.138): 56 data bytes 

,同样在Windows上。

有谁知道Linux是否有一些特殊的“名称验证”拒绝某些模式?例如,ping a_b.vgoc.infoping a__b.vgoc.info工作正常,但ping a-.vgoc.info没有。

根据我对DNS规范的阅读,这些名称不是非法的。是否有其他限制这些名称的参考?

+0

不是一个编程问题,因此题外话?我认为可能是[su],或者[sf] –

+1

最初我通过'gethostbyname'和朋友发现了这个问题,我很积极,答案涉及到一些Linux文档或解析器代码。 – nneonneo

回答

2

这可能是因为根据RFC 1035您的域名不合法。一个域名的每个部分(点之间)被称为“标签”,这里是一个标签语法:

<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ] 
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str> 
<let-dig-hyp> ::= <let-dig> | "-" 
<let-dig> ::= <letter> | <digit> 

注意下划线是从来没有的法律,以及标签可能无法启动或结束连字符。