歡迎您光臨本站 註冊首頁

Linux系列-Red Hat5平台下的DNS服務搭建

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
前面幾次我們已經看到了Red Hat5平台下的DHCPFTP以及Samba服務的搭建,對伺服器主機進行訪問時也是使用IP地址的形式,而在實際的網路應用中,通常是使用域名的形式訪問伺服器的.本次將以著名的DNS伺服器軟體BIND(Berkeley Internet Name Daemon)為例,向大家講述不同類型域名伺服器的搭建. 第一部分:「砍柴前的磨刀」<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 在動手做

DNS之前我們必須先來對DNS相關的軟體、服務、配置文件等做一個了解.所謂「磨刀不誤砍柴工」.
1.BIND軟體介紹 BIND最新的版本我們可通過官方站點(https://www.isc.org/)中下載到.當然Red Hat5已經默認自帶了.在RHEL5系統中,與BIND域名服務相關的幾個主要軟體包和作用如下: Bind——提供了域名服務的主要程序及相關文件 Bind-utils

——提供了對DNS伺服器的測試工具程序(如nslookupdig等)
Bind-chroot——為bind提供一個偽裝的根目錄以增強安全性 Caching-nameserver——為配置BIND作為緩存域名伺服器提供必要的默認配置文件,用以參考. 2.BIND服務控制 BIND軟體包安裝完畢以後,提供的主程序默認位於「

/usr/sbin/named,系統中會自動增加一個名為named的系統服務,通過腳本文件「/etc/init.d/named」或service命令都可以控制域名服務的運行.下面是常用的關於DNS服務的命令:
啟動服務:/etc/init.d/namd startservice named start 重新載入:service named reload 停止服務:service named restart 查看狀態:

service named status
3.BIND的主配置文件 Named服務的主配置文件為named.conf,一般位於「/etc/」目錄中,如果使用了bind-chroot功能,則可能位「/var/named/chroot/etc/」目錄中(我們本次的實例講解以後者為準).主配置文件中主要包括全局配置和區域配置部分,下面是全局配置部分最常見的配置項及其註解:

options { listen-on port 53 { <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1.1.1.1; }; //設置named服務監聽的埠及IP地址 directory "/var/named"; //設置區域資料庫文件的默認存放位置 allow-query { 192.168.1.0/24; 173.16.16.0/24; }; //允許DNS查詢的客戶端 recursion yes; //設置允許遞歸查詢 dump-file "/var/named/data/cache_dump.db"; //設置緩存資料庫文件位置 statistics-file "/var/named/data/named_stats.txt"; //設置狀態統計文件位置 };
在以上配置內容中,除了directory項通常保留以外,其他的配置項都可以省略,若不指定listen-on配置項,named默認在所有可用的IP地址上監聽服務.伺服器處理客戶端的DNS解析請求時,如果在named.conf文件中找不到相匹配的區域,將會向根域伺服器或者由forwarders項指定的其他DNS伺服器提交查詢. 以下是區域配置部分常見的配置項:

zone "." IN { //設置根區域 type hint; //設置區域類型(hint表示根域、masters表示主域、slave表示從域) file "named.ca"; //設置對應的根域地址資料庫文件 };

zone "zpp.com" IN { //設置正向DNS區域 type master; file "zpp.zone"; //設置對應的正向區域地址資料庫文件 allow-transfer { 200.200.200.1; }; //設置允許下載區域資料庫信息的從名伺服器 allow-update { none; }; //設置允許動態更新的客戶端地址(none為禁止) }; zone "1.168.192.in-addr.arpa" IN { //設置反向DNS區域名稱 type master; file "192.168.1.arpa"; //設置對應的反向區域地址資料庫文件 };
在以上配置中,需要注意的地方如下: 每個zone區域都是可選的,具體根據實際需要而定; zone配置部分的「IN」關鍵字可以省略; 反向區域的名稱由倒序的網路地址和「

.in-addr.arpa」組合而成,例如對於192.168.1.0/24網段,其反向域名為「1.168.192.in-addr.arpa」;
區域設置中的一部分配置內容(如allow-transferallow-update等)也可發放在全局配置中. 4.區域資料庫配置文件 區域資料庫配置文件位於「/var/named/

」目錄中,如果使用了bind-chroot功能,則可能位於「/var/named/chroot/var/named」目錄中.
全局TTL配置項及SOA記錄

$TTL 86400 @ IN SOA zpp.com. admin.zpp.com. ( //設置SOA標記、域名、域管理郵箱 1997022700 ; Serial //更新序列號,用於標記地址資料庫的變化 28800 ; Refresh //刷新時間,從域名伺服器更新該地址資料庫文件的間隔時間 14400 ; Retry //重試延時,是刷新時間的補充 3600000 ; Expire //失效時間,超過此時間仍無法更新,則放棄 86400 ) ; Minimum //設置無效地址解析記錄的默認緩存時間 @ IN NS ns1.zpp.com. IN MX 10 mail.zpp.com. ns1 IN A 173.16.16.1 mail IN A 173.16.16.1 www IN A 173.16.16.1 ftp IN CNAME www
在上述配置項中,時間參數的默認單位為秒,也可以使用以下單位:M(分)、H(時)、W(周)、D(天);從域名伺服器根據更新序列號決定是否需要重新下載地址資料庫,如果發現序列號與上一次的相同,則不會下載地址資料庫,文件中的@表示當前的DNS區域名,相當於「zpp.com,admin.zpp.com.」表示管理員的電子郵件地址(由於「@」符號已有其他含義,因此將郵件地址中的「

@」用「.」代替.
從上面可以看到在區域數據配置文件中有以下幾種常用的地址解析記錄: NS域名伺服器(name server)記錄,用於設置當前域的DNS伺服器的域名地址. MX郵件交換(Mail Exchange

)記錄,用於設置當前域的郵件伺服器域名地址.
CNAME別名(Canonical Name)記錄,用於設置別名 5.地址資料庫文件的特殊應用 1>.基於DNS解析的負載均衡 當同一個域名對應有多個不同IP地址的伺服器時,可以通過DNS

區域資料庫文件實現簡單的輪詢負載均衡,只需要在地址資料庫中添加相應的多條A記錄即可.
例如movie.zpp.com對應有五台互為鏡像的流媒體伺服器,在DNS區域「zpp.com」的地址資料庫中添加設置該域名解析的負載均衡記錄.如下:

movie IN A 192.168.1.1 movie IN A 192.168.1.2 movie IN A 192.168.1.3 movie IN A 192.168.1.4 movie IN A 192.168.1.5
2>.泛域名解析 當同一個IP地址的伺服器對應有相同域內大量不同的域名時(如:51cto的博客域名解析服務),可以通過DNS區域數據文件使用泛域名解析,只需要添加一條主機地址為「*」的A地址記錄即可(作用類似於通配符). 例如51cto博客使用同一台Web伺服器提供虛擬主機服務,

IP地址為173.16.16.173,對應的各虛擬主機名均屬於51cto.com域,如zpp2009.blog.51ctoxxx..blog.51cto等,在DNS區域「51cto.com」的地址資料庫一行可添加如下圖的泛域名解析記錄.

* IN A 192.168.1.1
3>.子域授權(或委派) DNS區域內層次較多,域名數量巨大時,就可以使用子域授權,將某個子域內各域名的解析工作交給另外一台伺服器來完成. 例如:DNS區域「.zpp.com」的地址資料庫文件中設置子域授權,將「abc.zpp.com」子域授權給abc公司的DNS伺服器(IP地址為

192.168.1.1)如下面的設置即可.
abc IN A 192.168.1.1 IN NS ns.abc.zpp.com. ns.abc.zpp.com IN A 192.168.1.1
第二部分:構建帶分離解析的主域名伺服器

說了這麼多,我想大家對DNS的配置應該也有了進一步的了解,下面我們通過具體的實例,來看一下DNS在實際工作中的具體應用,下面是準備的拓撲圖,以下的實例就是通過下面的拓撲圖展開. 我們來做一個分離解析的域名伺服器,分離解析的域名伺服器實際也還是主域名伺服器,這裡所說的分離解析(Split DNS,主要是指根據不同客戶端提供不同的域名解析記錄.例如,當DNS伺服器面向Internet和企業內部區域網絡同時提供服務時,可能需要將區域網用戶訪問公司公共域名(

www.zpp.commail.zpp.com)的數據,直接發往位於內網中的網站、郵件伺服器,以減輕網關伺服器的地址轉換負擔.
在本實例中,基本的系統網路環境如上圖所示: 域名服務架設在企業網關伺服器中,IP地址為173.16.16.1 所負責的DNS域為「

zpp.com」,在Internet中的公共哉名「www.zpp.com」和「mail.zpp.com」均解析為網關的公網IP地址「173.16.16.1.
公司的網站、郵件伺服器均位於區域網內,兩台主機的IP地址分別為「

192.168.1.5和「192.168.1.6.
區域網192.168.1.0/24內的主機均將DNS伺服器地址設為192.168.1.1,當內網用戶訪問地址「www.zpp.com

」和「mail.zpp.com」時,分別解析為內部伺服器的IP地址「192.168.1.5和「192.168.1.6.
下面是具體的實現步驟: 1. 建立主配置文件

named.conf
named.conf文件中,主要使用「view」配置語句和「match-clients」配置項,根據不同的客戶端地址將對「zpp.com」域的查詢對應到不同的地址資料庫文件,從而由不同的資料庫文件提供不同的解析結果. 說明:使用「view 「LAN」」配置項設置面向內網用戶的視圖; 使用「match-clients { 192.168.1.0/24; };」配置項匹配條件為來自內網的客戶端地址;

使用「file 「zpp.com.zone.lan」;」配置項指定面向內網用戶的地址資料庫文件; 使用「view 「WAN」」配置項設置面向外網用戶的視圖; 使用「match-clients { any; };」配置項匹配條件為任意地址; 使用「file 「zpp.com.zone.lan」;」配置項指定面向內網用戶的地址資料庫文件;

注意:將包含「match-clients { any; };」的「view」配置段放在文件中的一部分,否則會導致其後的「view」配置段失效.也就是說找到一個匹配結果后即不再向下匹配. 2. 分別建立對外、對內解析的區域資料庫文件 建立「zpp.com」域面向內網客戶端的地址資料庫文件(文件名為:zpp.com.zone.lan

).
建立「zpp.com」域面向外網客戶端的地址資料庫文件(文件名為:zpp.com.zone.wan). 3. 重新啟動named服務 4.

驗證分離解析域名伺服器 1>.在內網客戶機lan-pc1上的測試. 說明:可以看到從內網主機「lan-pc1上通過DNS測試工具nslookup可以正常解析.此時內網用戶在IE中輸入www.zpp.com

實際上是直接訪問了內網中的Web伺服器(IP192.168.1.5).
2>.在外網客戶機wan-pc1上的測試. 說明:可以看到從外網主機「wan-pc1上通過DNS測試工具

nslookup可以正常解析.此時外網用戶在IE中輸入www.zpp.com訪問的是公司外網介面.
第二部分:構建從域名伺服器 從域名伺服器作為主伺服器的冗餘備份,可與主域名伺服器一起,同時提供本域內主機名與IP地址的解析,從域名伺服器的地址資料庫需要從主域名伺服器中定期更新.下面我們還是以上面的拓撲為例來看一下從域名伺服器是如何構建的. 先說一下我們的要求,主域名伺服器已經在網關伺服器上構建完畢,同時面向Internet和內部網路提供「

zpp.com」域內主機的解析服務.現需要構建一台從域名伺服器,只面向Internet提供域名解析服務(不提供分離解析),區域地址資料庫從主域名伺服器中自動更新.
接下來是我們的具體配置步驟: 1.建立主配置文件named.conf 在從域名伺服器的named.conf配置文件中,將zone的類型設置為「slave,並使用「masters {};」語句指定主域名伺服器的地址即可.

說明:可以看到從域名伺服器上的設置其實地很簡單的,只需要開個從域就可以了. 2.啟動named服務 3.驗證從域伺服器 成功啟動之後我們就可以從目錄/var/named/slaves/中看到區域配置文件zpp.com.zone.wan已經被同步過來了,如圖: 現在我們可以在外網的

PCwan-pc1上進行測試,可以看到DNS伺服器173.16.16.2可發正常為客戶機提供域名解析服務.
現在我們就實現了DNS伺服器的分離解析及備份,再補充說明一下轉發器的配置. 有時侯為了提高解析效率,可以不向根域查詢,而是將用戶端的解析請求轉發給特定的DNS伺服器,收到返回的結果后再傳遞給客戶機,配置的方法極為簡單,只要去掉「zone 「.」 IN {… … };」的設置,並在全局配置中正確設置forwarders

參數即可,下面舉例說明.
例如:在named.conf文件中設置轉發DNS伺服器地址,將解析請求轉發給61.134.1.4218.16.1.9.

forwarder { 61.134.1.4 218.16.19; };
此時,來自客戶端的域名解析請求都將會被轉發到我們在「forwarder」配置項中指定的DNS伺服器上.


[火星人 ] Linux系列-Red Hat5平台下的DNS服務搭建已經有596次圍觀

http://coctec.com/docs/linux/show-post-52106.html