一些機構想隱藏DNS名,不讓外界知道。許多專家認為隱藏DNS名沒有什麼價值,但是,如果站點或企業的政策強制要求隱藏域名,它也不失為一種已知可行的辦法。你可能必須隱藏域名的另一條理由是你的內部網絡上是否有非標准的尋址方案。不要自欺欺人的認為,如果隱藏了你的DNS名,在攻擊者打入你的防火牆時,會給攻擊者增加困難。有關你的網絡的信息可以很容易地從網絡層獲得。假如你有興趣證實這點的話,不妨在LAN上“ping”一下子網廣播地址,然後再執行“arp -a”。還需要說明的是,隱藏DNS中的域名不能解決從郵件頭、新聞文章等中“洩露”主機名的問題。
這種方法是許多方法中的一個,它對於希望向Internet隱瞞自己的主機名的機構很有用。這種辦法的成功取決於這樣一個事實:即一台機器上的DNS客戶機不必與在同一台機器上的DNS服務器對話。換句話說,正是由於在一台機器上有一個DNS服務器,因此,將這部機器的DNS客戶機活動重定向到另一台機器上的DNS服務器沒有任何不妥(並且經常有好處)。
首先,你在可以與外部世界通信的橋頭堡主機上建立DNS服務器。你建立這台服務器使它宣布對你的域名具有訪問的權力。事實上,這台服務器所了解的就是你想讓外部世界所了解的:你網關的名稱和地址、你的通配符MX記錄等等。這台服務器就是“公共”服務器。
然後,在內部機器上建立一台DNS服務器。這台服務器也宣布對你的域名具有權力;與公共服務器不同,這台服務器“講的是真話”。它是你的“正常”的命名服務器,你可以在這台服務器中放入你所有的“正常”DNS名。你再設置這台服務器,使它可以將它不能解決的查詢轉發到公共服務器(例如,使用Unix機上的/etc/ named.boot中的“轉發器”行——forwarder line)。
最後,設置你所有的 DNS客戶機(例如,Unix機上的/etc/resolv.conf文件)使用內部服務器,這些DNS客戶機包括公共服務器所在機器上的DNS客戶機。這是關鍵。(.)
詢問有關一台內部主機信息的內部客戶機向內部服務器提出問題,並得到回答;詢問有關一部外部主機信息的內部客戶機向內部服務器查詢,內部客戶機再向公共服務器進行查詢,公共服務器再向Internet查詢,然後將得到的答案再一步一步傳回來。公共服務器上的客戶機也以相同的方式工作。但是,一台詢問關於一台內部主機信息的外部客戶機,只能從公共服務器上得到“限制性”的答案。
這種方式假定在這兩台服務器之間有一個包過濾防火牆,這個防火牆允許服務器相互傳遞DNS,但除此之外,限制其它主機之間的DNS.
這種方式中的另一項有用的技巧是利用你的IN-ADDR.AROA域名中通配符PTR記錄。這將引起對任何非公共主機的“地址到名稱”(address-to-name)的查找返回像 “unknown.YOUR.DOMAIN”這樣的信息,而非返回一個錯誤。這就滿足了像匿名FTP站點的要求。這類站點要求得到與它們通信的計算機的名字。當與進行DNS交叉檢查的站點通信時,這種方法就不靈了。在交叉檢查中,主機名要與它的地址匹配,地址也要與主機名匹配。