2011-12-12 52 views
2

我目前正在解析我工作中的大量區域文件,以便我們可以將此數據存儲在數據庫中並輕鬆地重新生成區域文件。DNS區域文件記錄中的空白「名稱」字段

我想讓我的解析器非常嚴格,以便我們可以拾取任何形成不良的區域文件,並且在「名稱」字段中找不到任何內容的某些記錄。

例子:

$TTL 120 
$ORIGIN mywebsite.com 

@ NS  mynameserver.com 
@ A  112.134.156.178 
www CNAME mywebsite.com 
    A  111.122.133.144 
file CNAME mywebsite.com 

怎麼會是第二個的記錄處理?這是一個有效的語法?

回答

3

一個空白的「名稱」字段表示只需使用相同的名稱,之前的紀錄,所以在您的例子A記錄是www.mywebsite.com 。請參閱RFC 1035的§5.1。

但是,這也使這個特定的文件非法 - 你不能有一個CNAME和一個A記錄出現在同一個標​​籤。請參閱RFC 1034的§3.6.2。

5

我知道這是一個古老的問題 - 只是偶然發現它,而尋找其他東西,無論如何最後的評論 - 「空白」名稱「字段意味着只使用與以前的記錄相同的名稱」是不正確的。任何時候區域文件中都沒有標籤(標籤是左側的字段 - 即主機名或完全限定的域名),它將通過$ ORIGIN變量的值進行限定(在這種情況下,$ ORIGIN = mywebsite.com - 與還可以通過@參考)所以在上面的區域文件中的記錄....

   A  111.122.133.144  is the same as 

mywebsite.com一個111.122.133.144的是.. @阿111.122.133.144

讓所有說該區域文件包含非常差的語法,因爲它似乎沒有一個完全限定 - 即在根的末尾沒有尾部點 - 如在 $ ORIGIN mywebsite.com中。 & somehost.mywebsite.com。 IN A 111.122.133.144

我猜域名服務器要麼沒有工作好還是爲車

基本/一般在BIND區域文件至少,如果不是有尾隨完全合格點綴在$ ORIGIN的的valuse var被添加到標籤。

希望這有助於

-P

+0

這使得更多的意義則參宿一的答案。空或@意味着$ ORIGIN – baaroz