關(guān)于Linux架設(shè)DNS服務器的介紹
關(guān)于Linux架設(shè)DNS服務器的介紹
今天學習啦小編就要跟大家講解下Linux架設(shè)DNS服務器的知識~那么對此感興趣的網(wǎng)友可以多來了解了解下。下面就是具體內(nèi)容!!!
Linux架設(shè)DNS服務器的介紹
域名系統(tǒng)介紹
1.域名系統(tǒng)
域名系統(tǒng)為一個分布式數(shù)據(jù)庫,它使本地負責控制整個分布式數(shù)據(jù)庫的部分段,每一段中的數(shù)據(jù)通過客戶,服務器模式在整個網(wǎng)絡(luò)上均可存取,通過采用復制技術(shù)和緩存技術(shù)使得整個數(shù)據(jù)庫可靠的同時,又擁有良好的性能.
域名服務器包含數(shù)據(jù)庫的部分段的信息,并可提供被稱之為解析器的客戶來訪問.
DNS的數(shù)據(jù)庫結(jié)構(gòu)形成一個倒立的樹狀結(jié)構(gòu),根的名字用空字符串""來表示,但在文本中用"."來書寫.樹的每一個節(jié)點都表示整個分布式數(shù)據(jù)庫中的一個分區(qū)(域),每個域可再進一步劃分成子分區(qū)(域),每個域都有一個標簽(LABEL),標明了它與父域的關(guān)系.域也有一個域名(domain name),給出它在整個分布式數(shù)據(jù)庫中的位置.在DNS中,域名全稱是一個從該域到根的標簽序列,以"."分隔這些標簽.該標簽最多可包含63個字符.樹中每一節(jié)點的完整域名為從該節(jié)點到根之間路徑上的標簽序列.
如果根域在節(jié)點的域名中出現(xiàn),該名字看起來就象以點結(jié)尾(實際上是以點和空標簽作結(jié)尾).這些以點結(jié)尾的域名被稱之為絕對域名(Absoulte Domain Name).不以點結(jié)尾的域名被稱之為相對域名.
域(Domains)即為樹狀域名空間中的一棵子樹,域的域名同該子樹根節(jié)點的域名一樣.也就是說,域的名字就是該域中最高層節(jié)點的名字.舉例來說,zhuhai.gd.cn域的頂端就是名為zhuhai.gd.cn的節(jié)點.
在DNS中,每個域分別由不同的組織進行管理.每個組織都可以將它的域再分成一定數(shù)量的子域并將這些子域委托給其他組織進行管理.域既能包括主機又能包括其他域(它的子域).域名被用做DNS數(shù)據(jù)庫中的索引.子域中任何域名被認為是域的一部分.
事實上,主機即為域,域名僅是DNS數(shù)據(jù)庫中的索引,"主機"可由指向相關(guān)主機信息的域名來索引,域包含所有其域名在該域的主機.
在域名樹中,葉節(jié)點的域通常代表主機,它們的域名可指向網(wǎng)絡(luò)地址,硬件信息和郵件路由信息.在樹內(nèi)的節(jié)點,其域名既可命名一臺主機,也可指向有關(guān)該域的子孫或子域的結(jié)構(gòu)信息,在域名樹中的內(nèi)部域名并不受唯一性限制,它們既可表示它們所對應的域,又可代表網(wǎng)絡(luò)中某臺特定的主機.例如,sun.com既是sun的域,又是在sun和internet間轉(zhuǎn)發(fā)信件的郵件服務器的域名.
網(wǎng)絡(luò)上的每一臺主機都有一個域名,域名給出有關(guān)主機的信息,該信息中包含IP地址,MAIL路由信息等等,主機也可以有一個或多個域名別名,別名僅是一些指向正式域名的另
1.1 域名.
判斷域是否為另一域的子域的簡單方法是比較它們的域名.子域名以其父域名結(jié)尾.
設(shè)計域名系統(tǒng)的一個主要目的是讓管理分散化,這是通過代理來實現(xiàn)的.管理域的組織將該域劃分成子域,每一個子域可以由其他組織代理,這意味著那些代理組織負責維護在該子域的所有數(shù)據(jù).他們可以自由地改變數(shù)據(jù),甚至可以將他們管理的子域再劃分成更多的子域并將它們再分配.父域中僅包含指向這些子域的指針,因而引用對那里的查詢.
1.2 域名服務器
存儲有關(guān)域名空間信息的程序被稱為域名服務器(name server).通常,域名服務器擁有部分域名空間(稱之為區(qū)zone)的完整信息.域名服務器可以擁有多個區(qū)的授權(quán).
區(qū)與域的關(guān)系:
區(qū)包含了域中除了代理給別處的子域外所含有的所有域名和數(shù)據(jù).如果域的子域沒有被代理出去,則該區(qū)包含該子域名和子域中的數(shù)據(jù).
DNS定義了兩類域名服務器:primary Master 和 secondary Master.PM域名服務器
從它所運行的主機上的文件獲得它所負責的區(qū)的數(shù)據(jù),SM域名服務器則是從其它的具有該區(qū)授權(quán)的域名服務器上獲得它的區(qū)的數(shù)據(jù).SM域名服務器會定期查詢PM域名服務器以保證區(qū)數(shù)據(jù)為最新版本.
一般情況下,最好設(shè)立一臺PM域名服務器和若干臺SM域名服務器.這樣可以分擔負載.以及確保區(qū)中所有主機都有比較靠近的域名服務器,方便訪問.
1.3 解析器
運行在主機上并需要域名空間信息的重新需要解析器(Resolver),在bind中解析器僅僅是一組庫例程,并編譯進象telnet和ftp這樣的程序中,它們并非獨立的進程.解析器所做的工作為:匯集查詢,發(fā)送查詢并等待應答,未得到應答時重發(fā)查詢.
1.4 地址到域名的映射
在域名空間的數(shù)據(jù)是通過名字來進行索引的,找到一個給定域名的地址相對容易.但是要找到映射給一定地址的域名就要在樹上的每一個域名空間作窮盡搜索.如果這樣的話,效率將相當?shù)?為了解決這個問題,創(chuàng)建一個以地址為索引的域名空間.這部分名字空間被稱為in-addr.arpa域.
in-addr.arpa域中的節(jié)點以Doted-octet(將32bitIP地址表示為由"."分隔開的四個8bit的十進制形式的方法)形式表示IP地址.IP地址在名字空間以相反的方向表示,因為名字是從葉讀到根,例如,www.zhuhai.gd.cn的IP地址為202.105.177.100,則相應的in-addr.arpa子域為177.105.202.in-addr.arpa,使IP地址中的第一個字節(jié)出現(xiàn)在樹的最高層使的管理員有能力沿著網(wǎng)絡(luò)聯(lián)接將in-addr.arpa域代理出去,例如177.105.202.in-addr.arpa可以被代理給網(wǎng)絡(luò)177.105.202的管理員.
1.5 緩存與生存期
名字服務器在處理遞歸查詢時,可能要進行多次查詢才能得到信息,在這過程中,名字服務器可以獲得很多有關(guān)域名空間的信息,名字服務器將所以這些信息都緩存起來以加速以后的查詢.除了加速查詢外,緩存還使得我們不必再次查詢根名字服務器,這樣可使得我們不必過分依賴根名字服務器而大大減輕根名字服務器的負載.
生存期(TTL)為所容許的名字服務器對數(shù)據(jù)緩存的時間長度,一旦生存期到了,名字服務器必須丟棄緩存數(shù)據(jù)并從授權(quán)的名字服務器中重新獲取新的數(shù)據(jù).這樣可以確保域數(shù)據(jù)在整個網(wǎng)絡(luò)上的一致性.
1.6 BIND:LINUX名字服務
linux和其他的unix一樣,都是用BIND來實現(xiàn)名字服務.BIND的服務端的軟件是被稱為named的守護進程
2. 安裝服務器軟件
2.1 取得bind軟件包(現(xiàn)在新的版本為8.2.2 p5)
從bind的主頁http://www.isc.org上取得最新stable版的三個文件:
bind-contrib.tar.gz
bind-doc.tar.gz
bind-src.tar.gz
或者從http://www.redhat.com上取得三個文件:
bind-8.2.2-p5-9.i386.rpm
bind-devel-8.2.2-p5-9.i386.rpm
cache-nameserver-6.2-2.noarch.rpm
2.2 安裝bind軟件包
安裝tar封裝的軟件包:
先解壓軟件包
tar zxpf bind-contrib.tar.gz
tar zxpf bind-doc.tar.gz
tar zxpf bind-src.tar.gz
編輯修改Makefile.set 文件,增加或修改
'DESTLIB=/usr/lib/bind/lib'
'DESTINC='/usr/lib/bind/include'
編譯并安裝
make
make install
安裝rpm封裝的軟件包:
rpm -Uhv bind-8.2.2-p5-9.i386.rpm
rpm -Uhv bind-devel-8.2.2-p5-9.i386.rpm
rpm -Uhv cache-nameserver-6.2-2.noarch.rpm
3.讓服務器跑起來---基本篇
3.1
BIND可被配置成幾種不同的運行方式,通用的BIND配置為純解析器系統(tǒng),純緩存服務器,主服務器,輔服務器.
解析器是指通過域名服務器查詢域信息的程序代碼,在unix系統(tǒng)中,它是以庫例程的方式實現(xiàn)的,而并不是一個單獨的客戶程序.純解析器系統(tǒng)很容易配置,只要設(shè)置一下/etc/resolv.conf文件.這種方式通常用于由于某些限制不能在本地運行域名服務器軟件的系統(tǒng)中.
例如:/etc/resolv.conf內(nèi)容類似為:
search test.com
nameserver 127.0.0.1
nameserver 172.16.0.1
當配置解析器庫以使用BIND名字服務進行主機查找,你也必須告知它使用哪個名字服務器。對此有一個獨立的文件,稱為resolv.conf。如果這個文件不存在或是空的,那么解析器就假設(shè)名字服務器在你本地的主機上。
如果在你的本地主機上運行一個名字服務器,你必須單獨地設(shè)置它。
resolv.conf中最重要的選項是nameserver,它給出了要使用的名字服務器的IP地址。如果你通過幾次給出nameserver選項指定了幾個名字服務器,那么它們會以給出的順序試用。因此,你應該首先給出最可靠的服務器。目前,至多支持三個名字服務器。
如果沒有給出nameserver選項,那么解析器試圖連接本地主機上的名字服務器。
其它兩個選項,domain和search涉及到如果BIND不能用第一個請求解析主機名時附加在主機名上的缺省域。search選項指定了一個試用的域名列表。列表項是用空格或制表符分開的。
如果沒有給出search選項,就會通過使用域名本身從本地域名以及直至root的父域中建立一個搜尋列表。本地域名可以使用domain語句給出;如果一個也沒有給出,那么解析器就通過系統(tǒng)調(diào)用getdomainname(2)來獲取。
3.2 其它三類配置方式是用于域名服務器的
純緩存服務器
純緩存服務器運行域名服務器軟件,但并沒有域名服務器數(shù)據(jù)庫文件,它記錄下每一個從遠程域名服務器獲得的數(shù)據(jù),以回答將來對同一信息的查詢.
純緩存服務器所需的三個基本配置文件:
/etc/named.conf
/var/named/named.ca
/var/named/named.local
創(chuàng)建或修改/etc/named.conf:
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
forwarders {172.16.0.1;172.16.0.11;};
};
//
// a caching only nameserver config
//
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
在文件中"forwarders {172.16.0.1;172.16.0.11;};"其中的IP地址是你網(wǎng)絡(luò)中主服務器和輔服務器的IP地址.
創(chuàng)建或修改/var/named/named.local
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
創(chuàng)建或修改/var/named/named.ca:
至于/var/named/named.ca就要從redhat linux光碟獲得了.也用命令從互聯(lián)網(wǎng)上獲得:
dig @.aroot-servers.net.ns > /var/named/named.ca
如果是用rpm封裝的軟件包安裝的話,這三個文件會自動生成,我們只需要修改/etc/named.conf.其中/var/named.ca一般是不用修改的.
主服務器
主服務器是給定域的所有信息的授權(quán)來源.它所裝載的域信息來自于由域管理員所創(chuàng)建并在本地維護的磁盤文件.
我們用"test.com"作為例子,我們需要五個基本配置文件:
/etc/named.conf
/var/named/named.ca
/var/named/named.local
/var/named/named.test.com
/var/named/named.172.16.0
創(chuàng)建或修改/etc/named.conf:
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
//
// a PM nameserver config
//
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
//there are our primary zone files
zone "test.com" {
type master;
file "named.test.com";
};
zone "0.16.172.in-addr.arpa" {
type master;
file "named.172.16.0";
};
文件中的zone "test.com"段是聲明這是用于test.com域的主服務器,用于該域的數(shù)據(jù)從/var/named/named.test.com文件中裝載.
文件中的zone "0.16.172.in-addr.arpa"段是指向映射IP地址172.16.0.* 到主機名的文件.用于該域的數(shù)據(jù)從/var/named/named.172.16.0文件中裝載.
創(chuàng)建或修改/var/named/named.local
@ IN SOA ns.test.com. root.ns.test.com. (
2000051500 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.test.com.
1 IN PTR localhost.
注意:在修改named.*文件時每次存盤時要注意增加Serial值.如使用絕對域名時千萬別忘了后面帶的"."
資源記錄中的@字符轉(zhuǎn)變?yōu)楫斍暗挠騮est.com,IN表示資源記錄使用TCP/IP地址,SOA表示管轄開始記錄.ns.test.com. 是這個域的主DNS服務器的標準名稱,在之后是聯(lián)系的EMAIL地址,其中@字符必須用"."代替.
創(chuàng)建或修改/var/named/named.test.com
@ IN SOA ns.test.com. root.ns.test.com. (
2000051500 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.test.com.
ns A 172.16.0.1
ns2 A 172.16.0.11
www A 172.16.0.2
ftp CNAME www.test.com.
mail A 172.16.0.3
MX 10 mail.test.com.
創(chuàng)建或修改/var/named/named.172.16.0
@ IN SOA ns.test.com. root.ns.test.com. (
2000051500 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expi