局域網裏應該跑一個DNS服務

本來在wordpress.com上維護着一個IT博客,現在wordpress.com又被徹底牆掉了,還是回到這裏來穩當。

局域網在當今的組織系統裏已經是必不可少的了。通常在局域網裏會放一些web服務器、ftp服務器等等,但網管們卻很少部署一個可以負擔本地域名解析任務的dns服務器。我想,無論網絡拓撲多麼簡單,使用赤裸裸的ip地址來跑應用的做法都是很不好的。既不方便記憶,也不利於各類應用的擴展或變更。

最簡單的例子,假如原來是把web服務和ftp服務放在同一臺服務器上的,後來由於應用的擴張,需要各自單獨部署一個服務器,如果沒有域名系統支持,原來凡是用ip地址來尋址的各類應用都需要修改。但是如果原來就有一套域名系統,則只需要稍稍變更一下域名解析文件就一切ok了。比較現實的情況是,如果哪一天組織想打算把ipv4升級到ipv6,所有使用域名系統的應用可以一點也不用修改,反之,您就有的是事情可幹了。

總之,在應用的層面裏,應該讓ip地址徹底消失,應用只應該對應域名,這是最合理的做法。另外,本地域名解析系統的部署還有一個附加的好處,就是對公網的訪問起到某種控制的作用。例如你可以把某些你不想被訪問到的域名用本地域名解析服務屏蔽掉等等。

部署域名服務並不複雜,如果是windows 2003服務器,可以直接使用它內置的dns服務,在“控制面板->管理工具”裏就有dns服務,windows 2003的dns服務通過完全圖形用戶界面進行設置操作,不用具備多少域名解析知識,稍稍研究一下就可以完成。這也是目前我見到過的唯一一套通過完全的窗口交互操作就可以搞定域名解析的dns系統,微軟在用戶界面方面下的功夫令人欽佩。

也許域名解析這套東東太過專業,除了微軟之外,沒人認爲普通用戶會去倒騰它。所以,主流的dns解析系統都是需要比較專業的腳本撰寫方式來完成。而這套腳本的編寫有一個事實上的標準,就是脫胎於unix系統的bind系統腳本的語法。其實,windows 2003的域名解析設置也是保存到一套與bind完全兼容的腳本里的。

bind是目前使用最爲廣泛的開放式域名解析服務系統,目前的最新版本是v9。相關資料可以在bind的官網(http://www.bind.com/)上查到。bind是一套開放源代碼的系統,有各種平臺的版本,如各種linux版本,也有win32版的。在bind官網上可以下載相應平臺的可執行代碼。

通常,在局域網環境裏,大多喜歡使用一臺跑windows xp或者linux系統的電腦來做服務器。如果是這樣,我們就不能享受windows 2003帶來的內置dns解析服務以及由此帶來的圖形界面的方便。只好使用bind這樣的系統來手工編寫解析腳本。

安裝好bind後,接下來就面臨一堆的腳本編寫任務。具體不在這裏詳述,大概要編寫一個全局的配置腳本,然後爲每個你想要解析的域名(子域名也一樣)編寫兩個腳本(一個用來正向解析,一個用來反向解析),其中,還需要一個根域名解析腳本,這個是由Internet NIC創建和維護的,只需要下載下來使用就行了。

腳本編寫好以後讓bind以系統服務的方式自動運行起來。然後把每臺局域網電腦的dns服務器地址設置成這個本地的域名服務器的ip地址,本地的域名解析服務就部署好了。凡通過這個域名解析服務器解析域名的電腦,如果需要解析的域名在本地得到匹配,就由本地直接返回在解析腳本里定義的ip地址。假設你在本地解析的腳本里有個baidu.com的解析,那麼,在局域網裏訪問的baidu.com將是你定義那個ip地址,而不是互聯網上的那個baidu.com。

如果域名在本地dns服務器裏得不到匹配,則會由那個根域名腳本來處理,當然,也可以在全局腳本里定義一個轉發(forwarders)列表,把本地不能解析的域名轉發給這個列表裏的地址(如:8.8.8.8,8.8.4.4)去解析。

通過本地域名解析服務器的部署,還可以進行很多重要的工作,比如你可以非常方便的在web服務器上定義多個基於域名的虛擬主機(在iis裏用“機頭”來設置,在apache裏用虛擬主機配置腳本來設置)。如果沒有啓用域名系統,恐怕就只好用晦澀而無厘頭的基於端口的虛擬主機來配置了。

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