DNS(Domain Name Server)是一個巨大的分散式資料庫,它通過網域名稱伺服器提供一個指定域的資訊來實現網域名稱的解析,網域名稱伺服器負責將網域名稱轉換為IP地址。將Internet中的所有網域名稱資訊都放在同一台電腦中是不可能的,因此DNS系統採用樹形結構,將不同層次域的網域名稱資訊分別儲存在不同的網域名稱伺服器中,最高層為根網域服務器。
由於企業辦公需要,筆者在區域網路內部署了DNS伺服器,所有客戶機上的DNS伺服器位址參數都設定為該伺服器的IP地址。並且還在DNS伺服器中建立了一個名為"knowsky.com"的域,供企業員工訪問內部網站需要。
但經測試,使用者可以正常訪問企業內部網,但訪問Internet上的網站時就會出現問題。筆者將客戶機的DNS伺服器位址修改為公網DNS伺服器的IP地址後,就可訪問Internet上的網站,但又不能訪問企業內部網站了。然而,為了節省經費,"knowsky.com"域並沒有在公網的DNS伺服器上進行註冊,只能靠企業網內部DNS伺服器進行解析,難道沒有一個兩全其美的辦法嗎?
分析
DNS(Domain Name Server)是一個巨大的分散式資料庫,它通過網域名稱伺服器提供一個指定域的資訊來實現網域名稱的解析,網域名稱伺服器負責將網域名稱轉換為IP地址。將Internet中的所有網域名稱資訊都放在同一台電腦中是不可能的,因此DNS系統採用樹形結構,將不同層次域的網域名稱資訊分別儲存在不同的網域名稱伺服器中,最高層為根網域服務器。
如要解析名為knowsky.com的網域名稱,客戶機首先要與本地區名伺服器聯絡,如果查不到該網域名稱資訊,本地區名伺服器會向根網域服務器發送一個請求,查詢knowsky.com的IP地址,根網域服務器發現該網域名稱不屬於自己的管轄區,而是屬於net下的一個域,它就會通知網域名稱伺服器聯絡net域的網域名稱伺服器以獲得更多的資訊,並發給本地區名伺服器一個所有net網域名稱伺服器的地址清單。接著本地區名伺服器會繼續向這些伺服器發送解析請求,直到找到knowsky.com域所屬的網域名稱伺服器並將knowsky.com的IP地址資訊返回給客戶。
由於筆者在區域網路內的DNS伺服器中建立了根域和net域,所以當DNS伺服器收到不能解析的網域名稱時,會錯誤地認為自己就是根網域服務器,而無法找到Internet中真正的根網域服務器,因此就會出現客戶機不能使用網域名稱訪問網站的問題。
解決辦法
首先在DNS伺服器中刪除根域、net域和knowsky.com域,然後再重新建立一個knowsky.com域,建立這個域是為了讓客戶機能夠正常訪問企業內部網站。同時注意除了企業內部網站所必須的域以外,應該盡量少建立域,防止DNS伺服器錯誤解析網域名稱或無法解析。