2013-01-12 87 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> 

注意下劃線是從來沒有的法律,以及標籤可能無法啓動或結束連字符。