一.DNS的概述
1.DNS域名系統(tǒng)的簡介
網(wǎng)絡(luò)中為了區(qū)別各個主機,必須為每臺主機分配一個惟一的地址,這個地址即稱為“IP地址”。但這些數(shù)字難以記憶,所以就采用“域名”的方式來取代這些數(shù)字了。當(dāng)某臺主機要與其他主機通信時,就可以利用主機名稱向DNS服務(wù)器查詢該主機的IP地址。整個DNS域名系統(tǒng)由以下4個部分組成。
1).DNS域名空間
2).資源記錄
3).DNS服務(wù)器
4).DNS客戶端

2.DNS查詢的工作原理
當(dāng)DNS客戶端需要查詢所使用的名稱時,它會查詢DNS服務(wù)器來解析該名稱。客戶端發(fā)送的查詢消息包括以下3條信息:
指定的DNS域名,必須為完全合格的域名(FQDN);
指定的查詢類型,可根據(jù)類型指定資源記錄,或者指定為查詢操作的專門類型;DNS域名的指定類別。
DNS查詢過程按兩部分進行:
名稱查詢從客戶端計算機開始,并傳送給本機的DNS客戶服務(wù)程序進行解析;
如果不能在本機解析查詢,可根據(jù)設(shè)定的查詢DNS服務(wù)器來解析名稱。
3.DNS規(guī)劃
在網(wǎng)絡(luò)中開始使用DNS之前,必須先劃DNS域名稱空間。名稱空間規(guī)劃包括確定要如何使用DNS命名和通過使用DNS要達到什么目的等。
首先選擇和注冊一個可用于維護Internet上公司的一個頂級或二級域名作為父DNS域名,如example.com。其次,將父域名稱與公司內(nèi)使用的位置或公司名稱組合起來形成其他子域名,如certer.example.com。
在選擇域名時必須符合RCF 1123中的規(guī)定:所有大寫字母(A~Z)、小寫字母(a~z)、數(shù)字(0~9)和連字符(-)。
4.hosts文件
hosts文件是Linux系統(tǒng)中一個負(fù)責(zé)IP地址與域名快速解析的文件,以ASCII格式保存在“/etc”目錄下,文件名為“hosts”。hosts文件包含了IP地址和主機名之間的映射,還包括主機名的別名。 hosts文件的格式如下:
IP地址 主機名/域名
5.Bind的簡介
Linux下架設(shè)DNS服務(wù)器通常是使用Bind程序來實現(xiàn)的。Bind是Berkeley Internet Name Domain Service的簡寫,它是一款實現(xiàn)DNS服務(wù)器的開放源碼軟件。Bind原本是美國DARPA資助伯克里大學(xué)(Berkeley)開設(shè)的一個研究生課題,后來經(jīng)過多年的變化發(fā)展,已經(jīng)成為世界上使用最為廣泛的DNS服務(wù)器軟件,目前Internet上絕大多數(shù)的DNS服務(wù)器有都是用Bind來架設(shè)的。
二.DNS服務(wù)的安裝
Red Hat Enterprise Linux安裝程序默認(rèn)沒有安裝DNS服務(wù),應(yīng)使用下面的命令檢查系統(tǒng)是否已經(jīng)安裝了DNS服務(wù)或查看已經(jīng)安裝了何種版本。 rpm -q bind
如果系統(tǒng)還沒有安裝DNS服務(wù)。要安裝DNS服務(wù),可將Red Hat Enterprise Linux 5第2張安裝盤放入光
驅(qū),加載光驅(qū)后在光盤的Server目錄下找到DNS服務(wù)的RPM安裝包文件bind-9.3.3-7.el5.i386.rpm,使用下
面命令安裝DNS服務(wù)。
rpm -ivh /mnt/Server/bind-9.3.3-7.el5.i386.rpm
三.安裝chroot軟件包
早期Linux服務(wù)都是以root權(quán)限啟動和運行的,隨著技術(shù)的發(fā)展,各種服務(wù)變得越來越復(fù)雜,導(dǎo)致BUG和漏洞越來越多。黑客利用服務(wù)的漏洞入侵系統(tǒng),能獲得root級別的權(quán)限,從而控制整個系統(tǒng)。為了減緩這種攻擊所帶來的負(fù)面影響,現(xiàn)在服務(wù)器軟件通常設(shè)計為以root權(quán)限啟動,然后服務(wù)器進程自行放棄root,再以某個低權(quán)限的系統(tǒng)賬號來運行進程。這種方式的好處在于該服務(wù)被攻擊者利用漏洞入侵時,由于進程權(quán)限很低,攻擊者得到的訪問權(quán)限又是基于這個較低權(quán)限的,因此對系統(tǒng)造成的危害比以前減輕了許多。
將Red Hat Enterprise Linux 5第2張安裝盤放入光驅(qū),加載光驅(qū)后在光盤的Server目錄下找到bind-chroot的RPM安裝包文件bind-chroot-9.3.3-7.el5.i386.rpm,然后使用下面命令安裝DNS服務(wù)。
rpm -ivh /mnt/Server/bind-chroot-9.3.3-7.el5.i386.rpm
四.配置主要名稱服務(wù)器
1.主配置文件
Bind的主配置文件是/etc/named.conf,該文件只包括Bind的基本配置,并不包含任何DNS區(qū)域數(shù)據(jù)。
options {
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
};
include "/etc/rndc.key";
2.設(shè)置根區(qū)域
當(dāng)DNS服務(wù)器處理遞歸查詢時,如果本地區(qū)域文件不能進行查詢的解析,就會轉(zhuǎn)到根DNS服務(wù)器查詢,所以在主配置文件named.conf文件中還要定義根區(qū)域。
zone "." {
type hint;
file "named.ca";
};
3.設(shè)置主區(qū)域
主區(qū)域用來保存DNS服務(wù)器某個區(qū)域(如:example.com)的數(shù)據(jù)信息。
zone "example.com" {
type master;
file "example.com.zone";
allow-transfer {
192.168.1.177;
192.168.7.17;
};
};
4.設(shè)置反向解析區(qū)域
在大部分的DNS查詢中,DNS客戶端一般執(zhí)行正向查找,即根據(jù)計算機的DNS域名查詢對應(yīng)的IP地址。但在某些特殊的應(yīng)用場合中(如判斷IP地址所對應(yīng)的域名是否合法),也會使用到通過IP地址查詢對應(yīng)DNS域名的情況(也稱為反向查找)。
zone "16.168.192.in-addr.arpa" {
type master;
file "192.168.16.arpa";
allow-transfer {
192.168.1.177;
192.168.7.17;
};
};
5.根服務(wù)器信息文件named.ca
/var/named/named.ca是一個非常重要的文件,該文件包含了Internet的根服務(wù)器名字和地址,Bind接到客戶端主機的查詢請求時,如果在Cache中找不到相應(yīng)的數(shù)據(jù),就會通過根服務(wù)器進行逐級查詢。
由于named.ca文件經(jīng)常會隨著根服務(wù)器的變化而發(fā)生變化,因此建議最好從國際互聯(lián)網(wǎng)絡(luò)信息中心(InterNIC)的FTP服務(wù)器下載最新的版本,下載地址為ftp://ftp.rs.internic.net/domain/named.root。下載完
后,應(yīng)將該文件改名為named.ca,并復(fù)制到“/var/named/chroot/var/named/”目錄下。
6.區(qū)域文件
一個區(qū)域內(nèi)的所有數(shù)據(jù)(包括主機名和對應(yīng)IP地址、刷新間隔和過期時間等)必須存放在DNS服務(wù)器內(nèi),而用來存放這些數(shù)據(jù)的文件就稱為區(qū)域文件(區(qū)域數(shù)據(jù)文件使用“;”符號注釋)。DNS服務(wù)器的區(qū)域數(shù)據(jù)文件一
般存放在/var/named/目錄下。
/var/named/chroot/var/named/example.com.zone文件的完整例子。
$ttl 38400
example.com. IN SOA dns.example.com. admin.example.com. (
2005090503
10800
3600
604800
38400 )
example.com. IN NS dns.example.com.
dns IN A 192.168.16.177
www.example.com. IN A 192.168.16.9
mail1.example.com. IN A 192.168.16.178
mail2.example.com. IN A 192.168.16.179
mail3.example.com. IN A 192.168.16.180
rhel4 IN CNAME dns
bbs IN CNAME www