DNS服務器的基礎應用及主從同步

DNS服務器的基礎應用及主從同步
域名系統(英文:Domain Name System,縮寫:DNS)是因特網的一項服務。它作爲將域名和IP地址相互映射的一個分佈式數據庫,能夠使人更方便的訪問互聯網。DNS 使用TCP和UDP端口53。當前,對於每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。
簡而言之,DNS的出現是爲了解決人們訪問各個網站時的困難,因爲如果每一個web服務器都是一個固定的外網IP的話,那麼我們訪問時必須要在瀏覽器中輸入如http://8.8.8.8的,這對於人類來說太難於記憶了(雖然計算機很喜歡數字),所以我們想了一種方法將一個網站的名稱和ip地址關聯起來這樣使用起來就方便多了。比如訪問www.google.com其實就是訪問的8.8.8.8這個ip地址,這樣我們只要知道google這個公司就可以輕易的記住它的web網站了。其中www.google.com叫做一個FQDN(Fully qualified domain name)即完全資格域名,在互聯網上唯一標識一臺服務器(在訪問者看來),而FQDNIP的轉換叫做正向解析,IPFQDN的轉換叫做反向解析。反向解析的作用主要是解決郵件服務器拒絕垃圾郵件的,因爲在互聯網中多個FQDN可以指向同一個IP所以通過IP去找FQDN在互聯網上是不現實的,這樣就可以使用一個隨意的IP地址來僞裝成特定的FQDN,如果某IP發來的郵件與其註冊的域名正、反向解析並不相匹配,那麼郵件服務器會把此郵件定義爲垃圾郵件處理。
DNS進行解析時默認使用的是UDP的53號端口,使用的查詢方式分爲兩種:遞歸查詢和迭代查詢。遞歸查詢查詢是客戶端與DNS服務器之間的方式,迭代查詢時DNS服務器之間的方式。

在一個完整的FQDN當中,一共分爲四個部分:主機名.二級域名.一級域名.,最後的一個點代表根域名服務器,全球一共有13組,從A-M編號,其中有些組在世界各地有多組鏡像,根域名服務器顧名思義就是以它爲起始進行查詢,它知道每一個頂級域名服務器的地址,每一個頂級域名服務器知道其所管轄的二級域名服務器的地址,每一個二級域名服務器知道其管轄的每一個主機的地址,這個樣經過層層迭代就可以確定一個FQDN的IP地址,然後前段DNS服務器將查詢後的最終結果一次返回給客戶端這就叫做遞歸查詢。舉個例子:
查詢 www.czcedu.org
客戶端發送查詢報文" www.czcedu.org "至DNS服務器,DNS服務器首先檢查自身緩存,如果存在記錄則直接返回結果。
如果記錄老化或不存在,則
DNS服務器向根域名服務器發送查詢報文" www.czcedu.org ",根域名服務器返回 .org 域的權威域名服務器地址,這一級首先會返回的是頂級域名的權威域名服務器。
DNS服務器向 .org 域的權威域名服務器發送查詢報文" www.czcedu.org ",得到 .czcedu.org 域的權威域名服務器地址。
DNS服務器向 .czcedu.org 域的權威域名服務器發送查詢報文" www.czcedu.org ",得到主機 www 的A記錄,存入自身緩存並返回給客戶端。
我們看到了DNS服務器的作用,但是如果我們全網內的解析工作都交給一臺DNS服務器的話那麼一旦它宕機將無法通過FQDN訪問互聯網,所以我們要對DNS服務器進行備份,接下來我們就說一下DNS服務器的類型:
1、 主DNS服務器
a) 維護所負責解析的域內解析庫服務器;解析庫由管理維護
2、 從DNS服務器
a) 從主DNS服務器或其它的從DNS服務器那裏“複製”(區域傳遞)一份解析庫;這時使用的是TCP的53端口。
序列號:解析庫的版本號;前提:主服務器解析庫內容發生變化,其序列遞增;
刷新時間間隔:從服務器從主服務器請求同步解析庫的時間間隔;
重試時間間隔:從服務器從主服務器請求同步解析庫失敗時,再次嘗試的時間間隔;
過期時長:從服務器始終聯繫不到主服務器時,多久之後放棄從服務器角色,停止提供服務;
通知機制:主服務器在發生改變時會立即通知從服務器來同步解析庫
3、 緩存DNS服務器
a) 及上圖中的與client直接聯繫的DNS服務器,用於緩存已經確定的查詢結果以加快DNS解析速度。
解析答案:
肯定答案:解析到的確定結果
否定答案:請求的條目不存在等原因導致無法返回結果;
權威答案:直屬服務器提供的答案
非權威答案:緩存或者非直屬服務器提供的答案
4、 轉發DNS服務器
a) 將客戶端的查詢請求全部或部分轉發給某特定的DNS服務器
DNS服務器能夠解析域名靠的是區域解析庫,而區域解析庫是由衆多的資源記錄(RR,Resource Record)組成的,RR由多種類型:
SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且僅能有一個SOA記錄,而必須爲解析庫的第一條記錄;
A:internet Address,作用,FQDN --> IP
AAAA: FQDN --> IPv6
PTR: PoinTeR,IP --> FQDN
NS: Name Server,專用於標明當前區域的DNS服務器
CNAME:Canonical Name,別名記錄
MX: Mail eXchanger,郵件交換器
每種資源記錄定義的格式:
語法:name [TTL] IN rr_type value
注意:
(1) TTL即客戶端的到解析結果的緩存時長,可從全局繼承;
(2) @可用於引用當前區域的名字;
(3) 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應;
(4) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機而已;
SOA:
name: 當前區域的名字,例如“magedu.com.”;
value: 有多部分組成
(1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;
(2) 錄前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如linuxedu.magedu.com;
(3) (主從服務協調屬性的定義以及否定的答案的統一的TTL)
例如:
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
2015042201 ;序列號
2H ;刷新時間
10M ;重試時間
1W ;過期時間
1D ;否定答案的TTL值
)
NS:
name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如ns.magedu.com.;
注意:一個區域可以有多個NS記錄;
例如:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
(1) 相鄰的兩個資源記錄的name相同時,後續的可省略;
(2) 對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄;
MX:
name: 當前區域的名字
value: 當前區域的某郵件服務器(smtp服務器)的主機名;
一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高;
例如:
magedu.com. IN MX 10 mx1.magedu.com.
IN MX 20 mx2.magedu.com.
注意:
(1) 對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有一個A記錄;
A:
name: 某主機的FQDN,例如www.magedu.com.
value: 主機名對應主機的IP地址;
例如:
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 1.1.1.2
mx1.magedu.com. IN A 1.1.1.3
mx2.magedu.com. IN A 1.1.1.3
注意:
*.magedu.com. IN A 1.1.1.4
magedu.com. IN A 1.1.1.4
避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址;
AAAA:
name: FQDN
value: IPv6
PTR:
name: IP,有特定格式,把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而有特定後綴:in-addr.arpa.,所以完整寫法爲:4.3.2.1.in-addra.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com
簡寫成:
4 IN PTR www.magedu.com.

                注意:網絡地址及後綴可省略;主機地址依然需要反着寫;
CNAME:
            name: 別名的FQDN
            value: 正工名字的FQDN;
            例如:
                web.magedu.com.     IN      CNAME   www.magedu.com

OK,DNS協議我們已經大致講清楚了,接下來我們看一下DNS服務到的實現,使用最廣泛的的開源實現方式是使用BIND軟件包。BIND(Berkeley Internet Name Daemon)是現今互聯網上最常使用的DNS服務器軟件,使用BIND作爲服務器軟件的DNS服務器約佔所有DNS服務器的九成。BIND現在由互聯網系統協會(Internet Systems Consortium)負責開發與維護。BIND(Berkeley Internet Name Daemon)是現今互聯網上最常使用的DNS服務器軟件,使用BIND作爲服務器軟件的DNS服務器約佔所有DNS服務器的九成。BIND現在由互聯網系統協會(Internet Systems Consortium)負責開發與維護。
安裝bind包有很多個組件,我們這裏就安裝bind.x86_64、bind-libs.x86_64、bind-utils.x86_64這三個包,至於其它包的功能大家自行查看吧,篇幅原因就不詳細解釋了。使用簡單的yum安裝就可以了默認base源中就有。安裝好之後會生成一些關鍵性的文件:
服務腳本:/etc/rc.d/init.d/named
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
解析庫文件:/var/named/ZONE_NAME.ZONE
根區域文件:/var/named/named.ca
rndc: remote name domain controller,默認與bind安裝在同一主機,且只能通過127.0.0.1:953/tcp來連接named進程;提供輔助性的管理功能;
[root@bogon ~]# vim /etc/named.conf

10 options {
11 listen-on port 53 { 192.168.19.135; 127.0.0.1; 192.168.80.129; }; #配置監聽的端口和ip
12 listen-on-v6 port 53 { ::1; };
13 directory "/var/named";
14 dump-file "/var/named/data/cache_dump.db";
15 statistics-file "/var/named/data/named_stats.txt";
16 memstatistics-file "/var/named/data/named_mem_stats.txt";
17 allow-query { any; }; #允許查詢請求的主機
18 recursion yes; #是否允許遞歸查詢
19 //forward first;
20 //forwarders { 192.168.19.134; };
21
22 dnssec-enable no;
23 dnssec-validation no;
24 // dnssec-lookaside auto;
25
26 / Path to ISC DLV key /
27 // bindkeys-file "/etc/named.iscdlv.key";
28
29 // managed-keys-directory "/var/named/dynamic";
30 };
31
32 logging {
33 channel default_debug {
34 file "data/named.run";
35 severity dynamic;
36 };
37 };
38
39 zone "." IN { #定義根區域
40 type hint; #根提示,就是找不到了就從根開始找
41 file "named.ca";
42 };
43
44 include "/etc/named.rfc1912.zones"; #包含區域文件
45 include "/etc/named.root.key";
#到此處如果我們沒有自定義named.rfc1912.zones中的任何內容那麼啓動named進程這臺服務器就是 一臺緩存服務器,它如果可以訪問物聯網就可以解析任何互聯網上的域名了,因爲它能找到根。
[root@bogon ~]# vim /etc/named.rfc1912.zones

13 zone "localhost.localdomain" IN {
14 type master;
15 file "named.localhost";
16 allow-update { none; };
17 };
18
19 zone "localhost" IN {
20 type master;
21 file "named.localhost";
22 allow-update { none; };
23 };
24
25 zone "1.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 {
26 type master;
27 file "named.loopback";
28 allow-update { none; };
29 };
30
31 zone "1.0.0.127.in-addr.arpa" IN {
32 type master;
33 file "named.loopback";
34 allow-update { none; };
35 };
36
37 zone "0.in-addr.arpa" IN {
38 type master;
39 file "named.empty";
40 allow-update { none; };
41 };
42 #以上定義的都是本地迴環地址的正向和反向區域
48 zone "czcedu.com." IN {
49 type master;
51 file "czcedu.com.zone";
52 }; #定義主DNS服務器、正向區域,指定區域解析庫文件
[root@bogon ~]# vim /var/named/czcedu.com.zone #編寫區域解析庫文件

1 $TTL 86400 #緩存值
2 $ORIGIN czcedu.com. #區域名稱變量
3 @ IN SOA ns1.czcedu.com. admin.czcedu.com. ( #@表示使用ORIGIN變量,如果沒有定義則使用區域名稱
4 2015071601
5 1H
6 10M
7 1W
8 1D )
9 @ IN NS ns1.czcedu.com. #這裏可以寫全區域名稱,但結尾必須加“.”
10 IN NS ns2 #也可以省略但不能加“.”
11 IN MX 10 mail
12 IN MX 20 mx
13 ns1 IN A 172.16.10.1
14 ns2 IN A 172.16.10.2
15 mail IN A 172.16.10.3
16 mx IN A 172.16.10.4
17 www IN A 172.16.10.5
18 ftp IN CNAME www
19 * IN A 172.16.10.5 #泛域名解析
20 czcedu.com IN A 172.16.10.5 #缺省域名解析
[root@bogon ~]# named-checkconf #檢查配置文件
[root@bogon ~]# named-checkzone "czcedu.com" /var/named/czcedu.com.zone #檢查區域解析庫文件
zone czcedu.com/IN: loaded serial 2015071601
OK
[root@bogon named]# chown :named czcedu.com.zone #修改區域文件屬組
[root@bogon named]# chmod 640 czcedu.com.zone #修改權限
[root@bogon named]# dig -t A www.czcedu.com 192.168.1.106 #測試DNS服務器工作是否正常

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A www.czcedu.com 192.168.1.106
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28588
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;www.czcedu.com. IN A

;; ANSWER SECTION:
www.czcedu.com. 86400 IN A 172.16.10.5 #與我們服務器中定義的相同

;; AUTHORITY SECTION:
czcedu.com. 86400 IN NS ns1.czcedu.com.
czcedu.com. 86400 IN NS ns2.czcedu.com.

;; ADDITIONAL SECTION:
ns1.czcedu.com. 86400 IN A 172.16.10.1
ns2.czcedu.com. 86400 IN A 172.16.10.2

;; Query time: 4 msec
;; SERVER: 192.168.1.106#53(192.168.1.106)
;; WHEN: Sun Apr 26 11:11:12 2015
;; MSG SIZE rcvd: 116

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 41184
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;192.168.1.106. IN A

;; AUTHORITY SECTION:
. 10784 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2015071600 1800 900 604800 86400

;; Query time: 4 msec
;; SERVER: 192.168.1.106#53(192.168.1.106)
;; WHEN: Sun Apr 26 11:11:12 2015
;; MSG SIZE rcvd: 106
[root@bogon named]# vim /etc/named.rfc1912.zones #定義反向區域
48 zone "10.16.172.in-addr.arpa." IN {
49 type master;
50 file "172.16.10.in-addr.arpa.zone";
51 };
[root@bogon named]# vim 172.16.10.in-addr.arpa.zone #定義反向區域解析庫文件

1 $TTL 86400
2 @ IN SOA ns1.czcedu.com admin.czcedu.com (
3 2015071601
4 1H
5 5M
6 1W
7 1D )
8 IN NS ns1.czcedu.com.
9 IN NS ns2.czcedu.com.
10 IN MX 10 mail.czcedu.com.
11 IN MX 20 mx.czcedu.com.
12 1 IN PTR ns1.czcedu.com.
13 2 IN PTR ns2.czcedu.com.
14 3 IN PTR mail.czcedu.com.
15 4 IN PTR mx.czcedu.com.
16 5 IN PTR www.czcedu.com.
[root@bogon named]# dig -x 172.16.10.5 #檢測反向區域解析是否正常

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 172.16.10.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18889
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;5.10.16.172.in-addr.arpa. IN PTR

;; ANSWER SECTION:
5.10.16.172.in-addr.arpa. 86400 IN PTR www.czcedu.com.

;; AUTHORITY SECTION:
10.16.172.in-addr.arpa. 86400 IN NS ns1.czcedu.com.
10.16.172.in-addr.arpa. 86400 IN NS ns2.czcedu.com.

;; ADDITIONAL SECTION:
ns1.czcedu.com. 86400 IN A 172.16.10.1
ns2.czcedu.com. 86400 IN A 172.16.10.2

;; Query time: 3 msec
;; SERVER: 192.168.1.106#53(192.168.1.106)
;; WHEN: Sun Apr 26 11:37:57 2015
;; MSG SIZE rcvd: 138
#建立主從服務器及區域傳送,主IP:192.168.1.106;從IP:192.168.1.107
[root@bogon named]# vim /etc/named.rfc1912.zones #定義從服務器
48 zone "10.16.172.in-addr.arpa." IN { #反向區域
49 type slave; #類型爲slave
50 masters { 192.168.1.106; }; #指定主服務器地址
51 file "slaves/172.16.1.in-addr.arpa.zone"; #區域傳輸文件放置到slaves目錄下
52 };
53
54 zone "czcedu.com." IN { #正向區域
55 type slave;
56 masters { 192.168.1.106; };
57 file "slaves/czcedu.com.zone";
58 };
#不過在主服務區域解析庫其中必須定義從服務器爲一個DNS服務器
[root@bogon named]# vim czcedu.com.zone
13 ns IN A 192.168.1.107
好了,這裏DNS的基本配置就完成了,還有子域授權及view我們下次再介紹。

DNS服務器的基礎應用及主從同步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章