DNS服務(wù)及配置
DNS (Domain Name System,域名系統(tǒng))。8.2.1 DNS概述DNS 包含域名服務(wù)器和解析器兩個(gè)部分。域名服務(wù)器:存儲(chǔ)和管理授權(quán)區(qū)域內(nèi)的域名數(shù)據(jù),提供接口供客戶機(jī)檢索數(shù)據(jù);解析器:
DNS (Domain Name System,域名系統(tǒng))。
8.2.1 DNS概述
DNS 包含域名服務(wù)器和解析器兩個(gè)部分。
域名服務(wù)器:存儲(chǔ)和管理授權(quán)區(qū)域內(nèi)的域名數(shù)據(jù),提供接口供客戶機(jī)檢索數(shù)據(jù);
解析器:即客戶機(jī),向域名服務(wù)器遞交查詢請(qǐng)求,翻譯域名服務(wù)器返回的結(jié)果并遞交給高層應(yīng)用程序。
1.DNS 域名空間的分層結(jié)構(gòu)
Internet 上的頂級(jí)域名有兩種:機(jī)構(gòu)域和地理域。
(1)機(jī)構(gòu)域
一種是將域名空間按功能分成幾大類,分別表示不同的組織,稱為機(jī)構(gòu)域,比如:com (商業(yè)組織)、edu (教育機(jī)構(gòu))、org (政府機(jī)構(gòu))、net (網(wǎng)絡(luò)提供者)、int (國(guó)際實(shí)體)、mil (軍事機(jī)構(gòu))、org (其他組織)等。
(2)地理域
另一種象cn (中國(guó))這樣的按照地理位置劃分的國(guó)別代碼,通常用兩個(gè)字符表示,稱為地理域。
圖8-5 Internet 域名的層次
2.域名解析過(guò)程
DNS 的工作原理及過(guò)程分為下面幾個(gè)步驟:
(1)客戶機(jī)提出域名解析請(qǐng)求,并將該請(qǐng)求發(fā)送給本地的DNS 服務(wù)器。
(2)當(dāng)本地的DNS 服務(wù)器收到請(qǐng)求后,就先查詢本地的緩存,如果有該記錄項(xiàng),則本地的域名服務(wù)器就直接把查詢的結(jié)果返回。
(3)如果本地的緩存中沒(méi)有該記錄,則本地域名服務(wù)器就直接把請(qǐng)求發(fā)給根域名服務(wù)器,然后根域名服務(wù)器再返回給本地DNS 服務(wù)器一個(gè)所查詢域(根的子域)的主域名服務(wù)器的IP 地址。
(4)本地DNS 服務(wù)器再向上一步返回的域名服務(wù)器發(fā)送請(qǐng)求,然后接受請(qǐng)求的DNS 服務(wù)器查詢自己的緩存,如果沒(méi)有該記錄,則返回相關(guān)的下級(jí)DNS 服務(wù)器的IP 地址。
(5)重復(fù)(4),直到找到正確的記錄。
(6)本地DNS 服務(wù)器把返回的結(jié)果保存到緩存,以備下一次使用,同時(shí)將結(jié)果返回給
,DNS 客戶機(jī)。
8.2.2 實(shí)例—設(shè)置DNS 服務(wù)器
實(shí)例8-3 通過(guò)GUI 設(shè)置DNS 服務(wù)器
下面介紹在桌面環(huán)境下對(duì)DNS 的配置過(guò)程:
第1步:復(fù)制named.root 文件
# cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/named.root named.root 文件的內(nèi)容如圖8-6所示。在DNS 數(shù)據(jù)庫(kù)中,named.root 文件列出了所有根DNS 服務(wù)器的地址。當(dāng)一個(gè)DNS 的請(qǐng)求不在該DNS 服務(wù)器所管理的域時(shí),DNS 服務(wù)器會(huì)將該請(qǐng)求發(fā)送給一個(gè)根DNS 服務(wù)器。
實(shí)例8-4 通過(guò)創(chuàng)建和修改(配置)文件來(lái)設(shè)置DNS 服務(wù)器
下面介紹通過(guò)編輯文件的方式對(duì)DNS 服務(wù)器進(jìn)行配置的過(guò)程:
第1步:復(fù)制named.root 文件
# cp /usr/share/doc/bind-9.3.3/sample/var/named/named.root /var/named/chroot/var/named/named.root named.root 文件的內(nèi)容如圖8-6所示。
注意:
在/usr/share/doc/bind-9.3.3/sample下面有named.conf 文件和正向/逆向解析區(qū)文件的范例文件,讀者可以將他們分別復(fù)制到相應(yīng)的目錄,然后根據(jù)實(shí)際需求進(jìn)行修改即可。
第2步:修改named.conf 文件 修改主DNS 服務(wù)器的/var/named/chroot/etc/named.conf文件,內(nèi)容如下:
options {
};
view "internal" {
zone "0.168.192.in-addr.arpa." IN { type master; //定義逆向解析區(qū)聲明,in-addr.arpa 是固定寫(xiě)法 match-clients { any; }; match-destinations { any; }; recursion yes; //對(duì)內(nèi)網(wǎng)用戶開(kāi)啟DNS 的遞歸查詢 directory "/var/named"; //定義服務(wù)器區(qū)配置文件存放的目錄,由于使用了chroot 功能, //區(qū)配置文件存放的實(shí)際目錄是/var/named/chroot/var/named dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; //注意:書(shū)寫(xiě)反向地址解析時(shí),與通常書(shū)寫(xiě)的ip 地址順序相反,如:0.168.192
,}; }; file "192.168.0.db"; //逆向解析區(qū)文件名,名稱可以任意取 zone "test.edu.cn." IN { }; type master; //定義正向解析區(qū)聲明, 如果不寫(xiě)IN ,那么默認(rèn)就是IN 類 file "test.edu.cn.db"; //正向解析區(qū)文件名,名稱可以任意取 zone "." IN { }; //定義根區(qū)聲明 //選擇type 為hint ("." 專用) //默認(rèn)文件名named.root ,有時(shí)也可能是named.ca //在DNS
數(shù)據(jù)庫(kù)中,named.root 文件列出了所有根DNS 服務(wù)器的地址 type hint; file "named.root"; zone "localhost." IN { }; type master; file "localhost.zone"; //定義localhost 的正向解析區(qū)聲明 allow-update { none; }; zone "0.0.127.in-addr.arpa." IN { }; type master; file "named.local"; allow-update { none; }; //定義localhost 的逆向解析區(qū)聲明 //定義localhost 的逆向解析區(qū)聲明(IPv6) zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa." IN { type master; file "named.ip6.local"; allow-update { none; }; };
include "/etc/rndc.key"; //包含/etc/rndc.key文件
下面對(duì)主配置文件named.conf 的語(yǔ)法進(jìn)行介紹。
1)配置語(yǔ)句
named.conf 的配置語(yǔ)句及其功能見(jiàn)表8-3。
表8-3 named.conf 的配置語(yǔ)句及其功能
,2)options 語(yǔ)句
named.conf 文件中全局配置語(yǔ)句的語(yǔ)法為:
options(
配置子句;
配置子句;
);
常用的全局配置子句及其功能見(jiàn)表8-4。
表8-4 全局配置子句及其功
3)區(qū)聲明
named.conf 文件中最重要的部分是區(qū)聲明,zone 語(yǔ)句的語(yǔ)法為:
zone “zone-name” IN(
type 子句;
file 子句;
其他子句;
);
常用的區(qū)聲明子句及其功能見(jiàn)表8-5。
表8-5 區(qū)聲明子句及其功能
4)view 指令
在實(shí)際的網(wǎng)絡(luò)應(yīng)用中,有時(shí)希望能夠根據(jù)來(lái)自不同IP 地址的請(qǐng)求,對(duì)同一個(gè)域名解析到不同的IP 地址,比如:一所高校的校園網(wǎng)有兩個(gè)出口:教育網(wǎng)和公網(wǎng)(網(wǎng)通、電信等),希望來(lái)自教育網(wǎng)的用戶通過(guò)教育網(wǎng)接口訪問(wèn),來(lái)自公網(wǎng)的用戶通過(guò)公網(wǎng)接口訪問(wèn),另外,還要對(duì)校內(nèi)用戶提供域名解析服務(wù)。此時(shí)可以通過(guò)BIND9提供的view 指令實(shí)現(xiàn)該功能(BIND8沒(méi)有view 指令),加快用戶的訪問(wèn)速度。
,view 可以看成zone 的集合,如果在配置文件named.conf 中一個(gè)view 都沒(méi)有,那么所有的zone 默認(rèn)屬于一個(gè)view 。
(1)修改配置文件named.conf ,主要內(nèi)容如下: acl "jiaoyuwang_ip_range"{ //創(chuàng)建一個(gè)訪問(wèn)控制列表
127.0.0.1; 211.68.0.0/16; 211.84.0.0/16;
//127.0.0.1是本機(jī),211.68.0.0/16和211.84.0.0/16表示教育網(wǎng),注意:在此僅僅是示例,
//如果實(shí)際應(yīng)用,讀者要獲得教育網(wǎng)地址列表
};
acl "lan_ip_range"{
127.0.0.1; 192.168.0.0/24; 10.10.0.0/16;
//127.0.0.1是本機(jī),211.68.0.0/16和218.68.0.0/16表示校園內(nèi)網(wǎng),讀者要根據(jù)自己的
//網(wǎng)絡(luò)環(huán)境獲得校園網(wǎng)地址列表
};
view "jiaoyuwang" {
match-clients { "jiaoyuwang_ip_range"; };
recursion no;
zone "." IN {
type hint;
file "name.root";
};
zone "xinx.edu.cn" {
type master;
file "jiaoyuwang/xinx.edu.cn.db"; //針對(duì)教育網(wǎng)用戶的正向解析區(qū)文件
};
};
view "inside" {
match-clients { "lan_ip_range"; };
recursion yes;
zone "." IN {
type hint;
file "name.root";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "0.168.192.in-addr.arpa.db"; //針對(duì)內(nèi)網(wǎng)用戶的逆向解析區(qū)文件 //此視圖對(duì)內(nèi)網(wǎng)用戶提供視圖內(nèi)定義的DNS 服務(wù) //此視圖對(duì)教育網(wǎng)用戶提供視圖內(nèi)定義的DNS 服務(wù) //把遞歸關(guān)掉,這臺(tái)DNS 服務(wù)器忽略外來(lái)用戶的非本地域名請(qǐng)求 //對(duì)內(nèi)網(wǎng)用戶開(kāi)啟DNS 的遞歸查詢
,};
zone "xinx.edu.cn" {
type master;
file "xinx.edu.cn.db";
};
};
view "gongwangqita" {
match-clients { any; };
//地址列表也可以用any 、none 、localnets 和localhost 。any 是指任何主機(jī),
//none不匹配任何主機(jī),localnets 是指本地網(wǎng)絡(luò)的所有主機(jī),localhost 是指本地主機(jī)。
//將此視圖放在jiaoyuwang 和inside 視圖之后,對(duì)除了教育網(wǎng)用戶和內(nèi)網(wǎng)用戶以外的
//所有用戶提供視圖內(nèi)定義的DNS 服務(wù)
recursion no;
zone "." IN {
type hint;
file "name.root";
};
zone "xinx.edu.cn " {
type master;
file "gongwangqita/db.caterpillar.com.outside";
//針對(duì)除了教育網(wǎng)用戶和內(nèi)網(wǎng)用戶以外的所有用戶的正向解析區(qū)文件
};
}; //把遞歸關(guān)掉,這臺(tái)DNS 服務(wù)器忽略外來(lái)用戶的非本地域名請(qǐng)求 //針對(duì)內(nèi)網(wǎng)用戶的正向解析區(qū)文件
(2)創(chuàng)建文件/var/named/chroot/var/named/jiaoyuwang/xinx.edu.cn.db
jiaoyuwang/xinx.edu.cn.db正向解析區(qū)文件對(duì)教育網(wǎng)用戶提供DNS 服務(wù),內(nèi)容如下: $TTL 1H
@
SOA dns.xinx.edu.cn. root.xinx.edu.cn. ( IN
IN
www 2 ; Serial 3H ; Refresh 1H ; Retry 1W ; Expire 1H ) ; Minimum ; NS(Name Server)后面的主機(jī)管理整個(gè)“xinx.edu.cn. ”域 NS dns.xinx.edu.cn. A 192.168.0.5 IN A dns 211.68.58.22 ; 與教育網(wǎng)相連的網(wǎng)絡(luò)接口的公共IP 地址
(3)創(chuàng)建文件/var/named/chroot/var/named/xinx.edu.cn.db
,xinx.edu.cn.db 正向解析區(qū)文件對(duì)內(nèi)網(wǎng)用戶提供DNS 服務(wù),內(nèi)容如下:
$TTL 1H
@
SOA dns.xinx.edu.cn. root.xinx.edu.cn. ( IN IN
IN 2 ; Serial 3H ; Refresh 1H ; Retry 1W ; Expire 1H ) ; Minimum ; NS(Name Server)后面的主機(jī)管理整個(gè)“xinx.edu.cn. ”域 NS dns.xinx.edu.cn. MX 10 A dns.test.edu.cn. ; MX(Mail eXchanger)指定郵件轉(zhuǎn)發(fā)服務(wù)器,接收 ; 從Internet 上來(lái)的郵件,然后再轉(zhuǎn)發(fā)給相應(yīng)的主機(jī) dns 192.168.0.5
IN A 192.168.0.22 ; 與內(nèi)網(wǎng)相連的網(wǎng)絡(luò)接口的IP 地址 www
(4)創(chuàng)建文件/var/named/chroot/var/named/gongwangqita/xinx.edu.cn.db
gongwangqita/xinx.edu.cn.db正向解析區(qū)文件對(duì)除了教育網(wǎng)用戶和內(nèi)網(wǎng)用戶以外的所有用戶提供DNS 服務(wù),內(nèi)容如下:
$TTL 1H
@
SOA dns.xinx.edu.cn. root.xinx.edu.cn. ( IN
IN
www 2 ; Serial 3H ; Refresh 1H ; Retry 1W ; Expire 1H ) ; Minimum ; NS(Name Server)后面的主機(jī)管理整個(gè)“xinx.edu.cn. ”域 NS dns.xinx.edu.cn. A 192.168.0.5 IN A 58.32.5.78 dns ; 與電信網(wǎng)相連的網(wǎng)絡(luò)接口的公共IP 地址
以上示例僅用來(lái)幫助讀者理解view 指令的使用。
第3步:創(chuàng)建正向/逆向解析區(qū)文件
在主DNS 服務(wù)器/var/named/chroot/var/named/目錄創(chuàng)建正向解析區(qū)文件test.edu.cn.db ,文件內(nèi)容如下,正向解析文件主要由一系列A 資源記錄(RR ,Resource Record )組成,使得DNS 服務(wù)器能夠?qū)⒂蛎馕龀蒊P 地址。
$TTL 1H
@
SOA dns.test.edu.cn. root.test.edu.cn. ( IN 2 ; Serial 3H ; Refresh 1H ; Retry 1W ; Expire 1H ) ; Minimum ; NS(Name Server)后面的主機(jī)管理整個(gè)“test.edu.cn. ”域 NS dns.test.edu.cn.
,IN
IN
IN
IN MX 10 A A A dns.test.edu.cn. ; MX(Mail eXchanger)指定郵件轉(zhuǎn)發(fā)服務(wù)器,接收 ; 從Internet 上來(lái)的郵件,然后再轉(zhuǎn)發(fā)給相應(yīng)的主機(jī) dns www 192.168.0.5 192.168.0.10 192.168.0.20
dns2 IN ; www有兩個(gè)IP 地址 CNAME dns ; 指定主機(jī)別名
在主DNS 服務(wù)器/var/named/chroot/var/named/目錄創(chuàng)建逆向解析區(qū)文件192.168.0.db , 文件內(nèi)容如下,逆向解析文件由一系列PTR 資源記錄(RR ,Resource Record)組成,使得DNS 服務(wù)器能夠?qū)P 地址反向解析成域名。
$TTL 1H
@
5
10
20 SOA dns.test.edu.cn. root.test.edu.cn. ( 2 ; Serial 3H ; Refresh 1H ; Retry 1W ; Expire 1H ) ; Minimum NS dns.test.edu.cn. PTR dns.test.edu.cn. PTR www.test.edu.cn. PTR www.test.edu.cn.
注意:
對(duì)DNS
服務(wù)器的配置其實(shí)就是對(duì)named.conf 文件、正向解析文件、逆向解析文件的修改。
下面對(duì)正向/逆向解析區(qū)文件的語(yǔ)法進(jìn)行介紹。
每個(gè)區(qū)文件都是由區(qū)文件指令和若干條資源記錄(RR ,Resource Record)組成。
1)區(qū)文件指令
在區(qū)文件中使用的區(qū)文件指令及其功能見(jiàn)表8-6。
表8-6 區(qū)文件指令及其功能
2)SOA 記錄
SOA (Start of Authority)記錄表示一個(gè)授權(quán)區(qū)的開(kāi)始,其格式如下:
zone (或@)
[IN] SOA Hostname Contact ( Serial Refresh Retry Expire Minimum )
,@表示在named.conf 文件中由zone 定義的區(qū)的名稱,比如:zone "test.edu.cn." IN {},在test.edu.cn.db 文件中的@就表示“test.edu.cn. ”。
在SOA 后面有兩個(gè)部分:Hostname 和Contact 。Hostname 是主機(jī)名稱(dns.test.edu.cn. ),Contact 是管理員的電子郵箱地址,因?yàn)锧在資源記錄中有特殊的意義,所以用點(diǎn)“. ”代替這個(gè)符號(hào)。root@test.edu.cn.應(yīng)寫(xiě)為root.test.edu.cn. ,注意后面的“. ”。
小刮號(hào)中有五個(gè)數(shù)字,除了Minimum 與TTL 有關(guān)之外,其他四個(gè)的都跟主/從DNS 服務(wù)器的同步有關(guān)。SOA 記錄中的數(shù)據(jù)字段及其功能見(jiàn)表8-7。
表8-7 SOA 記錄中的數(shù)據(jù)字段及其功能
3)標(biāo)準(zhǔn)資源記錄(RR ,Resource Record)
DNS 標(biāo)準(zhǔn)資源記錄的格式是:[domain] [ttl] [class] type rdate
各個(gè)字段之間用空格或制表符分隔,這些字段的含義見(jiàn)表8-8??梢园恍┨厥庾址骸癅”表示當(dāng)前域、“()”允許數(shù)據(jù)跨行,通常用于SOA 記錄、“; ”引出注釋、 “*”僅用于domain 字段的通配符,domain 字段說(shuō)明資源記錄引用的對(duì)象名,可以是一臺(tái)單獨(dú)的主機(jī)也可以是個(gè)域名。
表8-8 資源記錄中各字段的含義
表8-9 資源記錄類型
在正向/逆向解析區(qū)文件中,資源記錄的書(shū)寫(xiě)順序是:SOA RR 應(yīng)該放在最前面,通常NS RR緊跟在SOA RR之后,其他記錄的順序無(wú)關(guān)緊要。
第4步:檢查配置文件的語(yǔ)法
執(zhí)行named-checkconf 命令,可以檢查/etc/named.conf文件是否有語(yǔ)法錯(cuò)誤,如果執(zhí)行named-checkconf 命令后沒(méi)有任何輸出,說(shuō)明/etc/named.conf文件沒(méi)有語(yǔ)法錯(cuò)誤。
[root@localhost ~]# named-checkconf
none:0: open: /etc/named.conf: file not found
此時(shí)可以建立對(duì)/var/named/chroot/etc/named.conf文件的符號(hào)鏈接/etc/named.conf。
[root@localhost ~]# ln -s /var/named/chroot/etc/named.conf /etc/named.conf
[root@localhost ~]# ls -l /etc/named.conf
lrwxrwxrwx 1 root root 32 05-18 12:46 /etc/named.conf -> /var/named/chroot/etc/named.conf
[root@localhost ~]# named-checkconf
[root@localhost ~]#
第5步:測(cè)試
修改/etc/resolv.conf文件,將nameserver 行改寫(xiě)為nameserver 192.168.0.5。
執(zhí)行#service named restart命令重啟DNS 服務(wù)器,或者執(zhí)行#rndc reload命令,重新加載配置文件。
執(zhí)行#nslookup www.test.edu.cn命令測(cè)試DNS 的正向解析功能。
執(zhí)行#nslookup 192.168.0.10命令測(cè)試DNS 的反向解析功能。
將第2步的named.conf 文件中的match-clients { any; };修改為match-clients { none; };,執(zhí)行#nslookup www.test.edu.cn命令,結(jié)果如圖8-22所示,讀者分析這是為什么?
8.2.3 實(shí)例—設(shè)置DNS 客戶機(jī)
在Linux 系統(tǒng)中,需要配置兩個(gè)文件:/etc/host.conf和/etc/resolv.conf。