第13章 域名服務(wù)器DNS
第13章 域名服務(wù)器DNS13.1 域名服務(wù)概述許多應(yīng)用層軟件經(jīng)常直接使用域名系統(tǒng)DNS(Domain Name System),但計算機的用戶只是間接使用域名系統(tǒng)。標識互聯(lián)網(wǎng)上的主機通常采用唯一
第13章 域名服務(wù)器DNS
13.1 域名服務(wù)概述
許多應(yīng)用層軟件經(jīng)常直接使用域名系統(tǒng)DNS(Domain Name System),但計算機的用戶只是間接使用域名系統(tǒng)。標識互聯(lián)網(wǎng)上的主機通常采用唯一的IP 地址,IPV4協(xié)議采用32位二進制表示,IPV6協(xié)議采用128位二進制表示,用戶連接到互聯(lián)網(wǎng)上的某個主機時,顯然不愿意記住這么長的IP 地址,使用名字的原因是名字比數(shù)字更容易記憶。雖然大多數(shù)人能夠記住常用的電話號碼、地址以及其它相關(guān)特征數(shù)據(jù),但是即使是點分十進制IP 地址(如:61.144.43.225)也并不太容易記住IP 地址,即使只是常用的也不是一件容易的事。相反大家愿意使用某種有具體含義的、易于記憶的名字,如www.pyp.edu.cn ,因此產(chǎn)生了域名的概念。
早期的互聯(lián)網(wǎng)絡(luò)規(guī)模很小,整個網(wǎng)絡(luò)中只存在很少的計算機,那個時候使用hosts 文件來保存所有主機名字和相應(yīng)的IP 地址。用戶輸入一個主機名字后計算機通過查找這個hosts 文件很快就能找到將這個主機名字對應(yīng)的機器的IP 地址。
理論上來說可以只使用一臺計算機作為域名服務(wù)器,再這臺計算機中裝入因特網(wǎng)上所有的主機名,并回答整個互聯(lián)網(wǎng)對所有對IP 地址的查詢?nèi)蝿?wù),但是隨著因特網(wǎng)規(guī)模的擴大,這樣的域名服務(wù)器肯定會因過負荷而無法提供正常的服務(wù),并且一旦這臺域名服務(wù)器出現(xiàn)故障,整個因特網(wǎng)就會因為無法解析域名而導(dǎo)致整個網(wǎng)絡(luò)的癱瘓。
從1983年開始,因特網(wǎng)開始采用以層次結(jié)構(gòu)的命名樹作為主機的名字,并使用分布式數(shù)據(jù)庫作為域名數(shù)據(jù)庫存儲機制的分布式域名系統(tǒng)(DNS )。因特網(wǎng)的域名系統(tǒng)DNS 被設(shè)計成為一個聯(lián)機分布式數(shù)據(jù)庫系統(tǒng),并采用客戶/服務(wù)器(C/S)結(jié)構(gòu)。DNS 使大多數(shù)名字都在本地解析,僅少量解析需要在因特網(wǎng)上通信,因此系統(tǒng)效率很高。由于DNS 是分布式系統(tǒng),即使某一個域名服務(wù)器出現(xiàn)故障,僅僅只影響其管轄的域的域名解析,即使是這樣我們也可以通過備用域服務(wù)器來提供更加可靠的域名解析服務(wù)。
13.1.1 HOSTS 文件
早些時候的計算機網(wǎng)絡(luò)規(guī)模非常的小,整個網(wǎng)絡(luò)只有少數(shù)互聯(lián)的計算機,所有的主機名和 IP 地址的映像關(guān)系都保存在一個名為 HOSTS 的數(shù)據(jù)文件(文本文件)中。通過查找這個數(shù)據(jù)庫文件,可以將一個主機名解析到一個 IP 地址上。
使用 HOSTS 文件進行 IP 地址解析,用戶可以自己編輯該文件增加特定的域名和主機IP 之間的映射,對于小型的網(wǎng)絡(luò)來說使用hosts 文件管理域名和主機IP 之間的映射關(guān)系是可以接受的,但是 HOSTS 的缺點是不能存儲大量的主機名與 lP 地址之間的映像關(guān)系(映射表),因為不能用作大型的網(wǎng)絡(luò)的域名解析服務(wù)。
,13.1.2 DNS 的功能
域名解析服務(wù)DNS 是在HOSTS 的基礎(chǔ)上發(fā)展起來的,域名解析服務(wù)使用具有層次名字空間,該模型使用分布式數(shù)據(jù)庫代替了集中管理的HOSTS 文件系統(tǒng)。DNS 允許用戶在查找網(wǎng)絡(luò)資源時使用用戶友好的域名取代IP 地址,域名相對過去的HOSTS 文件中的主機名由于采用層次結(jié)構(gòu),更方便記憶和管理。當DNS 客戶端向DNS 服務(wù)器發(fā)出IP 地址的查詢請求時,DNS 服務(wù)器通過主機名稱解析,根據(jù)域名在DNS 數(shù)據(jù)庫中尋找到對應(yīng)的IP 地址。例如,新浪網(wǎng)站的IP 地址是202.106.184.200,幾乎所有瀏覽該網(wǎng)站的用戶都是使用www.sina.com.cn ,而并非使用IP 地址來訪問。域名一般有具體的含義便于記憶,如 www.sina.com.cn 。域名一般不會改變,但是IP 地址可能會由于某種原因而改變,比方說主機移動另一個網(wǎng)絡(luò)中時IP 地址必須跟著改變,當域名對應(yīng)的IP 地址改變時,只需要修改這種映射關(guān)系就可以定位到新的主機。
DNS 的工作原理如圖6-2所示。
圖
DNS 的工作任務(wù)是在計算機主機名與 IP 地址之間進行映像。DNS 工作在 OSI 參考模型的應(yīng)用層,使用 TCP 和 UDP 作為傳輸協(xié)議。
當需要給某人打電話時,可能知道這個人的姓名,而不知道他的電話號碼。這時,可通過查看電話號簿查得他的電話號碼,從而與他進行通話。由此可看出,電話號碼簿的功能便是建立姓名與電話號碼之間的映射關(guān)系,DNS 的功能類似于電話薄。當客戶端向 DNS 服務(wù)器提出訪問請求(如:www.sina.com.cn ),DNS 服務(wù)器在收到客戶端的請求后在數(shù)據(jù)庫中查找相對的 IP 地址(202.106.184.200 ),并作出反應(yīng)。如果該 DNS 服務(wù)器無法提供對應(yīng)的 IP 地址,它就轉(zhuǎn)給下一個DNS 服務(wù)器繼續(xù)完成查找,直到找到或者報告主機不存在之類的錯誤信息。
13.1.3 域名結(jié)構(gòu)
早期的因特網(wǎng)使用名字簡短的非等級的名字空間系統(tǒng)。隨著互聯(lián)網(wǎng)上用戶數(shù)增加,非
,等級的名字空間來很難管理一個很大的而且是經(jīng)常變化的名字集合。因此出現(xiàn)采用了層次樹狀結(jié)構(gòu)的DNS (Domain Name Service,域名服務(wù)),域名服務(wù)類似全球郵政系統(tǒng)和電信系統(tǒng)。例如一個完整的電話號碼0086-020-12345678,這個電話號碼包含3個層次,其中國際區(qū)號0086代表中國,國內(nèi)地區(qū)號020代表廣州,最后的12345678表示一個具體的用戶的電話號碼。同樣,Internet 網(wǎng)絡(luò)也采用類似的命名方法,這樣任何一個連接在Internet 網(wǎng)絡(luò)上的主機或路由器,都有可以分配一個唯一的域名。
域名只是個邏輯上的概念,并不反映計算機所在的物理地點。一個域還可以繼續(xù)劃分為子域,如二級域、三級域等。
域名的結(jié)構(gòu)由若干個分量組成,各分量之間用小數(shù)點隔開;如:www.sina.com.cn ,其中cn 為代表中國的頂級域名,com 為cn 下的二級域名表示一般的工商、金融等企業(yè),sina 為三級域名,表示Sina 中國這個企業(yè),www 是該企業(yè)下屬的一臺具體的主機。每一級的域名都由長度不超過 63 個并且不區(qū)分大小寫字母的字符英文字母和數(shù)字組成,級別最低的域名寫在最左邊(如www 主機),而級別最高的頂級域名則寫在最右邊(如cn 表示中國的頂級域名)。完整的域名不超過 255 個字符。
域名系統(tǒng)對下級域名的數(shù)量和含義沒有明確的規(guī)定。各級域名由其上一級的域名管理機構(gòu)管理。為了便于使用變長的域名和使用有助記憶的字符串。在IPV4中 IP 地址是定長的32位二進制數(shù)字,IPV6中IP 地址是定長的128 位二進制數(shù)字。域名中的“點”和點分十進制 IP 地址(如192.168.0.1)中的“點”并無一一對應(yīng)的關(guān)系。點分十進制 IP 地址中一定是包含三個“點”,但域名中“點”的數(shù)目則不一定正好是三個。
13.1.4 域名解析
名字到域名的解析是由若干個域名服務(wù)器程序協(xié)同工作完成的。域名服務(wù)器程序運行在專用的網(wǎng)絡(luò)節(jié)點上,人們也常把運行域名服務(wù)系統(tǒng)的的主機稱為域名服務(wù)器。
域名的解析過程如下:當某一個應(yīng)用進程需要將主機名解析為IP 地址時,該應(yīng)用進程成為域名系統(tǒng)DNS 的一個客戶,并將待解析的域名放在DNS 請求報文中,以UDP 數(shù)據(jù)報(使用UPD 協(xié)議是因為不需要像TCP 協(xié)議一樣建立連接有更高的通信效率)方式發(fā)給本地域名服務(wù)器。本地的域名服務(wù)器在查找域名數(shù)據(jù)庫后,將對應(yīng)的IP 地址放在回答報文中返回。應(yīng)用進程獲得目的主機的IP 地址后即可進行通信。若本地域名服務(wù)器找不到請求的域名數(shù)據(jù),此域名服務(wù)器就暫時成為DNS 中的一個客戶,并向其它域名服務(wù)器發(fā)出查詢請求,其它服務(wù)器如果找到則將查詢的IP 數(shù)據(jù)附加到數(shù)據(jù)包中發(fā)送給該服務(wù)器,該服務(wù)器在轉(zhuǎn)發(fā)給最初的付出請求的客戶,這種過程直至某一臺DNS 服務(wù)器能夠相應(yīng)的數(shù)據(jù)或者到某一個限還找不能找到就報告錯誤。
當一個公司向InterNIC 注冊了域名時,InterNIC 會把相應(yīng)信息放進根服務(wù)器上,讓其在整個互聯(lián)網(wǎng)上傳播。DNS 服務(wù)器周期性的和其它DNS 服務(wù)器上的DNS 數(shù)據(jù)庫同步,并檢查其它服務(wù)器上的新表項,如發(fā)現(xiàn)新的表項就更新自己的DNS 數(shù)據(jù)庫,這個過程通常稱為傳播。一個新注冊的域名大約能夠在3~4天內(nèi)完成整個傳播過程。
頂級域為一個注冊的域名授權(quán)給一個特定DNS 服務(wù)器作為其基本DNS 服務(wù)器。這樣
,減輕了頂級域控制器為每一個Internet 上的DNS 請求作處理的負擔(dān)。域和區(qū)經(jīng)常成對出現(xiàn),一個區(qū)在名字世界中是一個基本域,它授權(quán)給另一個DNS 服務(wù)器以便管理。sina.com.cn 是一個區(qū),但www.sina.com.cn 實際上是那個區(qū)內(nèi)的一個子域。管理的責(zé)任授權(quán)給一個基本的DNS 服務(wù)器,Sina 中國站點的基本DNS 服務(wù)器是taurus.sina.com.cn ,其IP 地址是61.172.201.226,因為指定taurus 為Sina 中國站點的基本DNS ,那么它也是sina.com.cn 的基本區(qū)。這個服務(wù)器的指定所有者是root @sina.com.cn,在SOA 中為root. taurus.sina.com.cn 。
常用的頂級域(Top Level Domain,TLD )有COM (公司企業(yè))、EDU (教育機構(gòu))、GOV (政府部門)、MIL (軍事部門)、NET (網(wǎng)絡(luò)服務(wù)機構(gòu))和ORG (非盈利性組織)。每個國家有自己的由雙字母組成的頂級域,如CN 表示中國,UK 表示英國,JP 表示日本。如www.sina.com.cn 就是CN 頂級域名下的一個域名。
在頂級域名下注冊的二級域名均由該擁有該頂級域名的組織或者國家自行確定。我國將二級域名劃分為“行政區(qū)域名”和“類別域名”兩大類。如行政區(qū)域名“.gd.cn ”表示廣東,類別區(qū)域名“.edu.cn ”表示教育機構(gòu),
我國在二級域名.edu 下申請注冊三級域名則由中國教育和科研計算機網(wǎng)網(wǎng)絡(luò)中心負責(zé)。在二級域名.edu 之外的其它二級域名下申請注冊三級域名的,則應(yīng)向中國互聯(lián)網(wǎng)網(wǎng)絡(luò)信息中心 CNNIC 申請。
13.2 安裝和卸載BIND
DNS 服務(wù)在Linux 中的安裝軟件叫做BIND (Berkely Internet Name Daemon),一般的Linux 發(fā)行盤中都有該軟件,在Redhat 9發(fā)行盤中有關(guān)于BIND 服務(wù)的安裝包,在安裝過程中可以選擇是否安裝BIND 服務(wù),Redhat9附帶的BIND 的版本為9.2.1-16。
13.2.1 查看BIND 安裝信息
使用rpm -qa命令可以查看BIND 服務(wù)以及相關(guān)RPM 包的是否安裝以及軟件的版本。
,[root@localhost RPMS]$rpm -qa bind
bind-9.2.1-16
[root@localhost root]# rpm -qa caching-nameserver
caching-nameserver-7.2-7
[root@localhost root]# rpm -qa bind-utils
bind-utils-9.2.1-16
[root@localhost root]# rpm -qa redhat-config-bind
redhat-config-bind-1.9.0-13
13.2.2 卸載BIND 服務(wù)
使用rpm -e bind卸載BIND 服務(wù),由于有其它包依賴該包,所以不能卸載。
[root@localhost root]$rpm -e bind
error: Failed dependencies:
bind is needed by (installed) redhat-config-bind-1.9.0-13
bind is needed by (installed) caching-nameserver-7.2-7
bind >= 9.1.3-0.rc2.3 is needed by (installed) caching-nameserver-7.2-7
[root@localhost root]$
從以上的提示可以看出redhat-config-bind-1.9.0-13,caching-nameserver-7.2-7兩個包依
賴BIND 服務(wù),所以可以先嘗試卸載這兩個包。
1、卸載caching-nameserver 服務(wù)。
[root@localhost root]$rpm -e caching-nameserver
確認該包已經(jīng)刪除
[root@localhost root]$rpm -qa caching-nameserver
2、刪除redhat-config-bind 包,該包是用于在X-Window 下配置Bind 的一個可視工具。
[root@localhost root]$rpm -e redhat-config-bind
[root@localhost root]$rpm -qa redhat-config-bind
3、刪除Bind 服務(wù)。
[root@localhost root]$rpm -e bind
warning: /etc/rndc.key saved as /etc/rndc.key.rpmsave 13.2.3 安裝BIND 服務(wù)
1、安裝Bind (在第一張CD 里)
[root@localhost root]$mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@localhost root]$cd /mnt/cdrom/RedHat/RPMS/
,root@localhost RPMS]$ $rpm -ivh bind-9.2.1-16.i386.rpm
warning: bind-9.2.1-16.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100]
1:bind ########################################### [100]
2、接下來安裝bind-utils 工具和caching-nameserver 服務(wù)
因為一般情況下都需要用到這些工具和服務(wù),如果想在X-Window 下配置BIND 還需
要安裝redhat-config-bind 工具。安裝bind-utils ,這次由于該工具可能已經(jīng)安裝,使用-U 參
數(shù)升級安裝。
[root@localhost RPMS]$ rpm -Uvh bind-utils-9.2.1-16.i386.rpm
warning: bind-utils-9.2.1-16.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing... ########################################### [100]
package bind-utils-9.2.1-16 is already installed
3、安裝caching-nameserver 服務(wù)(在第二張CD 里)
[root@localhost RPMS]$rpm -ivh caching-nameserver-7.2-7.noarch.rpm
warning: caching-nameserver-7.2-7.noarch.rpm: V3 DSA signature: NOKEY, key ID d42a60e Preparing... ########################################### [100]
1:caching-nameserver ########################################### [100]
4、安裝redhat-config-bind 配置工具
[root@localhost RPMS]$rpm -ivh redhat-config-bind-1.9.0-13.noarch.rpm
warning: redhat-config-bind-1.9.0-13.noarch.rpm: V3 DSA signature: NOKEY, key ID db42a60e Preparing... ########################################### [100]
1:redhat-config-bind ########################################### [100]
13.3 配置DNS 服務(wù)器
DNS 服務(wù)使用53號端口。與DNS 配置相關(guān)的配置文件主要有:/etc/hosts,/etc/host.conf,/etc/resolv.conf,/etc/named.boot,/etc/named.conf。/var/named目錄下還包含DNS 區(qū)域和反
向區(qū)域的一些配置文件:
[root@localhost root]# cd /var/named/
[root@localhost named]# ll
total 12
-rw-r--r-- 1 named named 195 Jan 25 2003 localhost.zone
-rw-r--r-- 1 named named 2499 Jan 25 2003 named.ca
-rw-r--r-- 1 named named 433 Jan 25 2003 named.local
,/etc/hosts文件
機器啟動時,在查詢DNS 數(shù)據(jù)庫之前,機器需要檢查一些主機到IP 地址的匹配,這些匹配信息保存在/etc/hosts文件中,在沒有域名服務(wù)器的情況下,系統(tǒng)上的所有網(wǎng)絡(luò)程序都通過查詢該文件來解析某個主機的別名的IP 地址,/etc/hosts文件的內(nèi)容的范例: 1 # Do not remove the following line, or various programs
2 # that require network functionality will fail.
3 127.0.0.1 localhost.localdomain localhost
該文件中只保行對localhost 主機的信息,它代表計算機本身。
文件的格式:IP 地址 主機名稱(域名) 主機別名
/etc/host.conf文件
/etc/host.conf文件確定計算或其域名的順序,一般情況下內(nèi)容如下,應(yīng)該首先查找hosts 文件在通過BIND 服務(wù)查找DNS 數(shù)據(jù)庫。/etc/host.conf文件的內(nèi)容如下:
order hosts,bind
創(chuàng)建DNS 服務(wù)器的過程包含以下幾個步驟:
標識DNS 服務(wù)器
創(chuàng)建DNS 配置文件(/etc/named.conf,/var/named/*)
啟動named 服務(wù)守護進程
配置 DNS 服務(wù)器必須使用靜態(tài)IP 地址,下面假設(shè)安裝DNS 服務(wù)器的的IP 地址為192.168.10.2,配置的域名為,網(wǎng)絡(luò)拓撲結(jié)構(gòu)如圖所示。
,Windows Xp192.168.10.4
Redhat 9 Linux
13.3.1創(chuàng)建/etc/named.conf文件
一般情況下安裝好BIND 服務(wù)之后會創(chuàng)建/etc/named.conf和/etc/named.custom文件,/etc/named.custom文件用于保存一些不會改改的資料,在/etc/named.conf文件中通過include "/etc/named.custom"語句引用該文件。
修改/etc/named.conf文件如下,增加了一個正向區(qū)域“skydev.net ”,區(qū)域文件為“/var/named.skydev.net.zone ”。
1 controls {
2 inet 127.0.0.1 allow { localhost; } keys { rndckey; };
3 };
4
5 include "/etc/named.custom";
6 include "/etc/rndc.key";
7
8 zone "0.0.127.in-addr.arpa" {
9 type master;
10 file "0.0.127.in-addr.arpa.zone";
11 };
12 zone "10.168.192.in-addr.arpa" {
13 type master;
14 file "10.168.192.in-addr.arpa.zone";
15 };
,16
17 zone "localhost" {
18 type master;
19 file "localhost.zone";
20 };
21 zone "skydev.net" {
22 type master;
23 file "skydev.net.zone";
24 };
文件內(nèi)容解釋:
第8-10行:定義localhost 的反向區(qū)域
第17-20行:定義localhost 正向區(qū)域
第12-14行:定義skydev.net 區(qū)域的反向區(qū)域
第21-23行:定義正向區(qū)域“skydev.net ”,區(qū)域文件為“skydev.net.zone ”,文件的路徑在
“/etc/named.custom”文件中指定。
/etc/named.custom文件
1 ## named.custom - custom configuration for bind
2 #
3 # Any changes not currently supported by redhat-config-bind should be put 4 # in this file.
5 #
6
7 zone "." {
8 type hint;
9 file "named.ca";
10 };
11
12 options {
13 directory "/var/named/";
14 };
文件解釋:
第12-13行:定義缺省的區(qū)域文件的存放目錄為“/etc/named/”。
13.3.2 /var/named/skydev.net.zone文件
前面在/etc/named.conf文件中定義了一個正向區(qū)域“skyde.net ”,該區(qū)域的文件
,“/etc/named/skydev.net.zone”,該文件定義了域名和IP 地址之間的映射關(guān)系。在該文件中我們定義了2個域名:www.skydev.net 對應(yīng)的IP 地址為192.168.20.2和ftp.skydev.net 對應(yīng)的IP 地址為192.168.10.3,并且指定localhost 文域名服務(wù)器。
[root@localhost root]# cat -n /var/named/skydev.net.zone
1
2 $TTL 86400
3 @ IN SOA @ root.localhost (
4 2006012803 ; serial
5 28800 ; refresh
6 7200 ; retry
7 604800 ; expire
8 86400 ; ttl
9 )
10
11
12 IN NS ns.skydev.net.
13
14 @ IN MX 1 mail.skydev.net
15
16 www IN A 192.168.10.2
17 ftp IN A 192.168.10.3
18 mail IN A 192.168.10.4
19 @ IN A 192.168.10.2
20 ns IN A 192.168.10.2
文件內(nèi)容說明:
第3-8行關(guān)于SOA 記錄的說明: