通配符在DNS系統中的應用

    一般情況下,DNS記錄類型裏用的最多的是A記錄、CNAME別名記錄、MX郵件記錄、PTR反向記錄等類型。而且一般來說,DNS裏存在的記錄就能解析,不存在的記錄就不能解析。但有些情況下,希望凡是無法匹配已存在的記錄的請求,也能有一個有效的記錄返回,即設定一個默認值。比如有一個DNS域usa.com,用戶可能試圖訪問了blabla.usa.com,但這blabla不是系統裏已經存在的記錄,則一般情況下會DNS查詢失敗。

    但是如果設定了一個默認值,比如將所有已明確定義的記錄意外的查詢都轉向一個IP或CNAME,那麼不再有查詢失敗的錯誤。處理時可以直接將這類請求轉向主站點。這樣可以提高用戶體驗滿意度。

   方法就是使用DNS通配符。不過由於通配符記錄不是明確定義的行業標準,可能在不同的DNS系統上實施起來會有細微的區別。下面僅以BIND 9.5爲例。

   1. A記錄類型:

*    IN    A    10.10.10.10 



   所有對不存在的記錄的查詢會統一得到一個A記錄IP地址的返回值。

   2. CNAME記錄類型:

 

*   IN    CNAME  default.usa.com. 

 



   所有對不存在的記錄的查詢會統一得到一個CNAME記錄的返回,即重定向到default.usa.com,從而獲得後者的IP地址(當然也可能有多次CNAME的情況,這裏略過)。

   通配符類型可以出現在記錄項的頭部,中部,或尾部。比如可以僅僅是一個*,也可以是*.abc,也可以是a.*.c或a.b.*。例如:

*.sanfrancisco.california   IN   CNAME   default.usa.com. 

    注意:通配符不會對本域做解析。要實現本域解析,可以添加以下記錄:

usa.com.   IN   A   10.10.10.10  

    或通過先添加普通A記錄再用CNAME的方式:

 

default   IN   A   10.10.10.10 

usa.com.   IN  CNAME default  

    下面略作利弊分析。

    :有利於提高用戶體驗,不會被DNS解析失敗的問題而困擾;對web應用代碼中可能出現的一些錯誤域名也能起到容錯作用。

    :由於通配符並非像A記錄等其他類型那樣有嚴格明確的標準,可能在使用過程中(比如跨不同DNS系統的域文件傳輸/遞歸解析等)出現某些意料之外的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章