需求:建立內部域名供使用,通過外網DNS將請求決議到內網DNS服務器上進行二次轉發
目前情況:內網DNS服務器192.168.100.68。現選定一級域名locala.net,客戶機統一使用公司現有外網DNS服務器192.168.99.99,現公司運維人員已經將訪問*.locala.net的請求(ns記錄)全部指向192.168.100.68。現象就是ping locala.net,a.locala.net以及b.locala.net全部回傳192.168.100.68,如果訪問a.locala.net/help也可以成功顯示內容(與192.168.100.68/help一樣)。
問題:由于測驗期間可能需要頻繁創建/洗掉二級域名,如a.locala.net,b.locala.net,并使客戶端訪問a.locala.net的時候決議到對應的內網服務器如192.168.100.1,b.locala.net決議到100.2等等,我在192.168.100.68上的角色中添加了DNS服務器,但是無論怎么配置,最終的結果依舊是*.locala.net的請求全部指向192.168.100.68,,只有當客戶機使用內網DNS的時候才會實作我需要的那種分發,請問各位高手,如果必須使用公司外網的DNS(192.168.99.99),應該如何配置192.168.100.68上的DNS服務,才能實作將任意的二級域名決議到內網其他的服務器上。
uj5u.com熱心網友回復:
外網DNS配主域名,轉發到內網再匹配二級域名?uj5u.com熱心網友回復:
昨天就看到你這問題了,解釋起來太麻煩了,一直沒有慷訓答,現在剛好有點時間,大概說一下吧。首先,DNS服務一定需要一臺DNS服務器來提供,接受客戶端決議域名的請求,回傳對應的IP(也有反向決議)。
假設我在萬網買了一個頂級域名locala.net,這代表著,我可以任意修改這個域名下的記錄,比如a.locala.net決議到192.168.100.1。
1. 最廣泛的做法是,我不自建DNS服務器,直接在萬網的域名管理后臺維護決議記錄(增刪改),此時DNS服務由萬網的服務器提供,DNS的決議記錄存放在萬網服務器上;
2. 我也可以自建一臺DNS服務器(滿足兩個條件:我有固定的外網IP,比如 111.222.33.44 ,并且發布DNS服務的埠能讓別人訪問到),到注冊商那里把域名的管理服務器IP改為我自己的這個111.222.33.44,我這臺自建服務器就成了locala.net的權威服務器,決議不再由萬網提供,萬網只是在別人決議的時候把請求引導到我這臺服務器上。
這兩種是公網的情況(用戶位于互聯網),此外還有一種情況,我可以自己搭一個DNS服務器(作為非權威服務器,或者冒充權威服務器),只存放固定的某幾條記錄供客戶端用,剩下的讓客戶端自己去公網DNS服務器決議(這個叫DNS轉發),這種應用可用在公網也可用在私網(比如我要在局域網里搭一個網站,配一個域名叫www.baidu.com,就可以用這種方法實作),當然這么一說你可能也明白了,這個方案的其中一種用途就是DNS劫持。
一般需要聯網的客戶端,TCP/IP設定里有一項是DNS服務器地址(比如常見的8.8.8.8,114.114.114.114),客戶端在遇到域名的時候向DNS服務器請求決議結果,DNS服務器發現自己沒有記錄,會向根服務器逐級(根域到頂級域再到二級域的方向)請求決議結果并回傳給客戶端(這叫遞回決議);也有另一種模式,叫迭代決議,當DNS服務器發現沒有記錄,直接返給客戶端另一個DNS服務器的地址,讓客戶端自己去聯系,一路下去直到最終決議出來。
說一下你測驗時碰到的問題:其實你碰到的不是問題,這些結果才是你當前配置下應該有的正常結果。你混淆的是DNS服務器和DNS決議結果,DNS的決議出IP以后,就是最終的結果了,整個決議程序結束,不會繼續往下決議下去。
分析一下:DNS服務器是192.168.99.99,記錄是a.locala.net,決議成192.168.100.68;
客戶端用tcp去連abc.com的5000埠時(真實的業務,網站也好,socket也好),只要DNS服務器是A,正常情況下就一定回傳192.168.100.68,這時客戶端拿到決議結果以后就開開心心地直接訪問192.168.100.68的5000埠去了。總之,你向192.168.99.99請求了a.locala.net,它也告訴了你192.168.100.68,這就是全部。雖然你在192.168.100.68上搭了DNS服務,如果你仔細回想一下整個流程就會發現,192.168.100.68上的DNS服務根本沒有出場機會。
所以
1. 要么在192.168.99.99上將locala.net的請求做DNS轉發,轉到192.168.100.68上(需要能被192.168.99.99訪問到 dns埠)
2. 要么直接把你客戶端的DNS服務器指給192.168.100.68
3. 要么直接在192.168.99.99上維護locala.net域的DNS記錄。
最后,我給的測驗建議是這樣:
1. 直接在測驗端的HOSTS檔案里(C:\windows\system32\drivers\etc\hosts或者/etc/hosts)添加對應的決議記錄,這是最方便最快捷的方法,維護簡單,而且不會有快取干擾。維護本機HOSTS記錄甚至可以專門寫一個程式去做,這樣更省事。
2. 次一點的方案,如果客戶端在內網,也可以在內網自建DNS服務器決議locala.net,剩下所有的請求都轉發到正常的DNS服務器上,將測驗端的DNS設為自建DNS服務器(很多路由器直接就帶劫持域名的功能,推薦你去看一下說明書是否有名字類似dns mapping、自定義DNS記錄的功能),這種方案,需要在修改DNS記錄以后,客戶端清除一下自身的DNS快取(ipconfig /flushdns),你之前測驗失敗。
其它亂七八糟的方案完全不用考慮。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/101378.html
標籤:網絡管理與配置
上一篇:【咨詢】系統重啟后在服務行程中呼叫OpenProcessToken時回傳錯誤5 ERROR_ACCESS_DENIED
下一篇:請問 如何對軟體行為進行分析
