認識DNS

DNS全稱是Domain Name System的簡稱,即域名系統。因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP/TCP協議之上,使用端口號53。


簡介

DNS提供域名解析服務。當我們瀏覽網頁時,在瀏覽器地址欄輸入的是網址,而不是ip地址。瀏覽器如何找到相應的網頁呢。這就是DNS的作用。無論是在Windows主機上面還是在linux主機上面,都設置得有DNS:

blob.png

[root:named]#    cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search roger.com
nameserver 172.16.253.113

通常在瀏覽器輸入的網址類似于www.yahoo.com.cn,這就叫完整主機名,即FQDN。www就是web網站服務器的主機名,yahoo.com.cn就是域名,其中,域名是層級架構的,在最頂層的是根服務器,主要負責頂級域名的管理,所謂頂級域名(TLD)就像.com,.cn,.net,.gov等,頂級域下面管理的是二級域名,如yahoo.com,再往下就是三級域名,如mail.yahoo.com等以此類推。各類頂級域具有不同的意義,如下:

名稱 意義
com 公司,行號,企業
org 組織,機構
edu 教育單位
gov 政府單位
net 網絡通訓
mil 軍事單位

整個DNS根結構如下:

blob.png

 
當我們在瀏覽器的地址欄輸入網址,諸如www.qq.com,那么它是怎么找到其對應的ip的呢: 
1、在瀏覽器中輸入www.qq.com域名,操作系統會先檢查自己本地的hosts文件是否有這個網址映射關系,如果有,就先調用這個IP地址映射,完成域名解析。 
2、如果hosts里沒有這個域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有,直接返回,完成域名解析。 
3、如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/IP參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。 
4、如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。 
5、如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,將會聯系負責.com域的這臺服務器。這臺負責.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(qq.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會找qq.com域服務器,重復上面的動作,進行查詢,直至找到www.qq.com主機。 
6、如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。 
上面的查詢方式我們可以總結為遞歸查詢和迭代查詢: 
遞歸查詢即我們將請求傳遞給設置的首選DNS后,它會一層一層的查詢,直至把查詢結果返回給我們,即使是返回的是一個查詢未找到的結果。 
迭代查詢就是在查詢的過程中,根返回相應的頂級域地址,頂級域返回的是二級域地址,一層一層的找,這就是迭代查詢;

資源記錄(Resoursr Record,簡寫為RR)

資源記錄是組成了DNS各域記錄。這些記錄的類型有:A,AAAA,PTR,SOA,NS,CNAME,MX等,其中 
SOA就是開始驗證(Start Of Authority)的縮寫; 
NS就是DNS服務器(NameServer)的縮寫,后面記錄的數據是DNS服務器的意思; 
A就是Address的縮寫,后面記錄的是對應的IPv4地址; 
AAAA對應的是IPv6地址; 
PTR是指向(PointTeR)的縮寫,后面記錄的是數據就是反解到的主機名; 
CNAME是主機別名,一個主機名可以有多個別名,但IP地址是一樣的; 
MX是郵件服務器Mail eXchanger; 
資源記錄定義的格式為: 
name []TTL] IN rr_type value 
注意: 
TTL就是time to live,表示該記錄別其他DNS服務器查詢到后被保留到對方服務器上的緩存當中并保持多少秒,個從全局繼承; 
@可以用于應用當前區域的名字; 
同一個名字可以通過多條記錄定義多個不同的值,此時DNS服務器會以輪流方式響應; 
同一個名字也可以能有多個不同的定義的名字;通過多個不同的名字指向同一個值進行定義;僅表示通過多個名字可以找到同一個主機而已; 
上面每種資源類型的定義方式如下: 
SOA: 
name:當前區域的名字,例如qq.com; 
value:有多部分組成 
1、當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字; 
2、記錄當前區域管理員的郵箱地址,但是地址中不能使用@符號,一般用”.”替換; 
3、主從服務協調屬性的定義以及否定的答案的一般統一TTL; 
例如:

$ORIGIN .
$TTL 86400 ; 1 day   ##全局TTL定義
roger.com       IN SOA  ns1.roger.com. admin.roger.com. (  
               15         ; serial    ##序列號
               86400      ; refresh (1 day)  ##刷新時間
               3600       ; retry (1 hour)  ##重試時間
               604800     ; expire (1 week)  ##過期時間
               3600       ; minimum (1 hour)  ##否定答案的TTL值
               )

以上5個參數的第一個序列號外其他四個的單位默認為秒,當然也可以指定單位如:D(天),M(分鐘),H(小時),W(周)。 
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. 
注意: 
對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 2.2.2.2 
mx1.magedu.com. IN A 3.3.3.3 
mx2.magedu.com. IN A 4.4.4.4

$GENERATE 1-254 HOTS$   A     1.2.3.$

*.magedu.com. IN A 5.5.5.5 \

agedu.com. IN A 6.6.6.6 

避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址; 
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-addr.arpa. 
value: FQDN 
例如: 
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com. 
如1.2.3為網絡地址,可簡寫成:4 IN PTR www.magedu.com. 
注意:網絡地址及后綴可省略;主機地址依然需要反著寫; 
CNAME: 
name: 別名的FQDN 
value: 真正名字的FQDN 
例如: 
www.magedu.com. IN CNAME websrv.magedu.com

安裝調試DNS

安裝

DNS服務軟件包的名字的bind,直接使用yum安裝即可,安裝完成后,會在/etc/下面生成named開頭的多個配置文件:

[root:slaves]#    ls /etc/named*
/etc/named.conf  /etc/named.iscdlv.key  /etc/named.rfc1912.zones  /etc/named.root.key
[root:slaves]#    ls /var/named/
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

創建一臺DNS服務器

第一步:編輯配置文件,添加如下的配置:

[root:slaves]#    vim /etc/named.rfc1912.zones
...
19 zone "roger.com" IN{     ##創建一個域名為roger.com
20     type master;      ##設置為主DNS
21     file "roger.com.zone";   ##該域名的配置文件名字,保存在/etc/named.conf指定的位置
22     allow-update { 172.16.250.106; };   ##允許更新的主機
23 };
24
25 zone "253.16.172.in-addr.arpa" IN{  ##反解析庫,下面的配置一樣同上
26     type master;
27     file "named.172.16.253";
28     allow-update { 172.16.250.106; };
29 };
30
...

/etc/named.conf文件內容如下:

[root:named]#    cat /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
   listen-on port 53 { 127.0.0.1; };   ##定義了服務器監聽的在哪個ip的53端口上,可以注釋掉,就是監聽主機上所有IP的53端口
   listen-on-v6 port 53 { ::1; };
   directory   "/var/named";  ##設置了資源庫配置文件存放的路徑
   dump-file   "/var/named/data/cache_dump.db";
       statistics-file "/var/named/data/named_stats.txt";
       memstatistics-file "/var/named/data/named_mem_stats.txt";
   allow-query     { localhost; };  ##僅本機允許查詢,可以注釋掉,就是默認都可以查詢
   allow-transfer { 172.16.100.101; };   ##定義允許完全查詢的主機,如沒有可以添加
   recursion yes;  ##定義遞歸查詢

   dnssec-enable no;  ##DNS安全開關,注釋掉就默認為yes,下面一樣
   dnssec-validation no;

   /* Path to ISC DLV key */
   bindkeys-file "/etc/named.iscdlv.key";

   managed-keys-directory "/var/named/dynamic";
};

logging {
       channel default_debug {
               file "data/named.run";
               severity dynamic;
       };
};

zone "." IN {
   type hint;
   file "named.ca";
};

include "/etc/named.rfc1912.zones";   ##配置域的文件,也可以是本文件內
include "/etc/named.root.key";

然后在指定的位置創建并編輯文件如下:

[root:named]#    cd /var/named/
[root:named]#    cat roger.com.zone  ##正向解析域
$ORIGIN .
$TTL 86400 ; 1 day
roger.com       IN SOA  ns1.roger.com. admin.roger.com. (
               15         ; serial
               86400      ; refresh (1 day)
               3600       ; retry (1 hour)
               604800     ; expire (1 week)
               3600       ; minimum (1 hour)
               )
           NS  ns1.roger.com.
           NS  ns2.roger.com.
           A   172.16.253.113
           MX  10 mail1.roger.com.
$ORIGIN roger.com.
ftp         A   172.16.253.114
ftp2            A   172.16.252.100
$TTL 7777  ; 2 hours 9 minutes 37 seconds
ftp3            A   172.16.100.123
           A   12.12.12.12
           A   12.12.12.14
           A   12.12.12.15
ftp4            A   12.12.12.13
$TTL 86400 ; 1 day
mail1           A   172.16.253.114
ns1         A   172.16.253.113     ##本機DNS
ns2         A   172.16.100.101  ##另外一臺DNS,如果將其配置為從服務器,可以實現同步更新資源記錄,如果不設置,從服務器只能通過刷新時間(refresh (1 day))主動從主服務器獲取
websrv          A   172.16.253.115
www         CNAME   websrv
[root:named]#    cat /var/named/named.172.16.253  ##反向解析域
$TTL 1D
@ IN SOA ns1.roger.com. admin.roger.com. ( 02 1H 30M 1D 1D )
@ IN NS ns1.roger.com.
113 IN PTR ns1.roger.com.
113 IN PTR ns2.roger.com.
114 IN PTR mail1
114 IN PTR ftp
115 IN PTR websrv
115 IN PTR www

配置完成后重新啟動DNS服務,并且正向反向查詢:

[root:named]#    service named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]
[root:named]#    dig roger.com @127.0.0.1   ##如將本機的DNS設置為本機,可以不寫@127.0.0.1,其他機器上查詢就寫@IPDNS

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> roger.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62595
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
##  aa代表權威回答
;; QUESTION SECTION:
;roger.com.         IN  A

;; ANSWER SECTION:
roger.com.      86400   IN  A   172.16.253.113

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

;; ADDITIONAL SECTION:
ns1.roger.com.      86400   IN  A   172.16.253.113
ns2.roger.com.      86400   IN  A   172.16.100.101

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec  6 17:01:30 2016
;; MSG SIZE  rcvd: 111

[root:named]#    dig -x 172.16.253.113 @127.0.0.1  ##反向查詢一定要有-x ,否則就像誒成dig -t PTR 113.253.16.172.in-addr.arpa. @127.0.0.1

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

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

;; ANSWER SECTION:
113.253.16.172.in-addr.arpa. 86400 IN   PTR ns2.roger.com.
113.253.16.172.in-addr.arpa. 86400 IN   PTR ns1.roger.com.

;; AUTHORITY SECTION:
253.16.172.in-addr.arpa. 86400  IN  NS  ns1.roger.com.

;; ADDITIONAL SECTION:
ns1.roger.com.      86400   IN  A   172.16.253.113

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec  6 17:01:53 2016
;; MSG SIZE  rcvd: 120

也可以用其他的主機進行查詢:

[root:~]#    dig roger.com @172.16.253.113

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> roger.com @172.16.253.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3221
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;roger.com.         IN  A

;; ANSWER SECTION:
roger.com.      86400   IN  A   172.16.253.113

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

;; ADDITIONAL SECTION:
ns1.roger.com.      86400   IN  A   172.16.253.113
ns2.roger.com.      86400   IN  A   172.16.100.101

;; Query time: 0 msec
;; SERVER: 172.16.253.113#53(172.16.253.113)
;; WHEN: Tue Dec 06 17:06:49 CST 2016
;; MSG SIZE  rcvd: 122

[root:~]#    dig -x 172.16.253.115 @172.16.253.113

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -x 172.16.253.115 @172.16.253.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65349
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;115.253.16.172.in-addr.arpa.   IN  PTR

;; ANSWER SECTION:
115.253.16.172.in-addr.arpa. 86400 IN   PTR www.253.16.172.in-addr.arpa.
115.253.16.172.in-addr.arpa. 86400 IN   PTR websrv.253.16.172.in-addr.arpa.

;; AUTHORITY SECTION:
253.16.172.in-addr.arpa. 86400  IN  NS  ns1.roger.com.

;; ADDITIONAL SECTION:
ns1.roger.com.      86400   IN  A   172.16.253.113

;; Query time: 1 msec
;; SERVER: 172.16.253.113#53(172.16.253.113)
;; WHEN: Tue Dec 06 17:07:23 CST 2016
;; MSG SIZE  rcvd: 138

到此,DNS服務器搭建完成。

搭建DNS從服務器

在另外一臺服務器上面在/etc/named.rfc1912.zones里面編輯如下內容:

...
18
19 zone "253.16.172.in-addr.arpa" IN {  ##反向解析與
20     type slave;  #類型為從服務器
21     file "slaves/named.172.16";  ##資源庫文件保存為/var/named/下面的位置
22     masters {172.16.253.113;};  ##定義主服務器
23 };
24
25 zone "roger.com" IN {  ##正向解析域
26     type slave;   #類型為從服務器
27     file "slaves/roger.com.zone";      ##資源庫文件保存為/var/named/下面的位置
28     masters { 172.16.253.113; };   ##定義主服務器
29     allow-update  { 172.16.250.106; };   ##定義了誰可以通過nsupdate命令遠程更新
30 };
...

編輯完成后,重啟named服務,就可以看見備份過來的資源庫了:

[root:slaves]#    ll
total 12
-rw-r--r-- 1 named named  415 Dec  6 17:02 named.172.16
-rw-r--r-- 1 named named  669 Dec  6 15:18 roger.com.zone
-rw-r--r-- 1 named named 1580 Dec  6 15:05 roger.com.zone.jnl
[root:slaves]#    pwd
/var/named/slaves

如果主服務器的資源庫被修改了,從服務器會自動同步:

##在其它主機上通過nsupdate命令遠程更新
root:~]$   nsupdate
> server 172.16.253.113
> zone roger.com
> update add ftp4.roger.com. 6666 IN A 12.12.12.16   ##格式需嚴格匹配,否則會報錯
> send
>
###在主服務器上庫馬上有改變
[root:named]#    ll
total 40
drwxrwx--- 2 named named 4096 Dec  6 10:17 data
drwxrwx--- 2 named named 4096 Dec  6 16:48 dynamic
-rw-r----- 1 named named  211 Dec  6 14:19 named.172.16.253
-rw-r----- 1 root  named 3171 Jan 11  2016 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Oct 11 22:16 named.loopback
-rw-r--r-- 1 named named  669 Dec  6 15:09 roger.com.zone
-rw-r--r-- 1 named named 1848 Dec  6 17:20 roger.com.zone.jnl  ##被更改資源庫
drwxrwx--- 2 named named 4096 May 11  2016 slaves
##從服務器上的庫
[root:slaves]#    ll
total 12
-rw-r--r-- 1 named named  415 Dec  6 17:02 named.172.16
-rw-r--r-- 1 named named  669 Dec  6 15:18 roger.com.zone
-rw-r--r-- 1 named named 1848 Dec  6 17:20 roger.com.zone.jnl  ##被同步的庫

上面的實驗是主服務器配置了從服務器的相關ip信息,所以在主服務器有更新時,會主動的將更新的庫推送上從服務器上面。如果在主服務器上面沒有配置從服務器的相關信息,要想更新,只能通過從服務器的主動拉的動作,才能將資源庫文件保存到從服務器上面,并且不能做到實時同步,只能根據資源記錄里面的刷新時間來更新。 
為了安全,不能讓未授權的服務器獲得資源記錄,可以在/etc/named.conf文件中添加一行語句:

18     allow-transfer { 172.16.100.101; };  ##括號中的ip為允許獲取資源內容的ip,如有多個,用分號隔開,如允許任何人則為any;none表示沒有一個主機被允許。

子域

上面我們講了,DNS整個結構就是一個倒置的樹,在查詢的時候,要實現跌倒查詢,父域必須知道子域,子域不必知道父域,這就是子域授權。 
要想實現子域授權,只需要在父域的配置文件將添加子域的對應ip和域,例如上面的例子,在roger.com域授權子域,只需在roger.com的RR配置文件里面指定子域,如shanghai:

shanghai NS ns3
ns3 A xxx.xxx.xxx.xxx

這樣就子域授權好了:

實驗

為了驗證上面的學習內容,做如下實驗。 
我們要訪問一個域名為www.shanghai.roger.com,搭建一個環境,模擬整個訪問,拓撲如下:

blob.png 
在所有的服務器上面的/etc/name.conf配置文件中設置為如下:

...
10 options {
11 //      listen-on port 53 { 127.0.0.1; };   ##注釋掉
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     { localhost; };   ##注釋掉
...
28         */
29         recursion yes;
30
31         dnssec-enable no;     ##改為no
32         dnssec-validation no;  ##改為no
33
34         /* Path to ISC DLV key */
...

A、根域的設置:

##在/etc/named.conf中注釋掉以下信息
...
50 //zone "." IN {
51 //  type hint;
52 //  file "named.ca";
53 //};
...
##在/etc/named.rfc1912.zones中創建一個域
...
33 zone "."{
34     type master;
35     file "root.zone";
36 };
...
##在/var/named/下面創建文件root.zone并編輯成如下內容
 1 $TTL 1D
 2 @   IN SOA ns1 admin.com. ( 01 1D 1D 1D 1W )
 3 @   NS ns1
 4 ns1 A 172.16.252.81
 5 com. NS ns2
 6 ns2 A 172.16.253.113
 ##修改root.zone的文件屬性為以下屬性
 -rw-r----- 1 root  named 117 Dec  6 20:19 root.zone
## 完成后重啟服務

B、頂級域.com的設置

##添加.com域
vim /etc/named.rfc1912.zones
...
24 zone "com"{
25     type master;
26     file "com.zone";
27 };
...
##在/var/named下面創建com.zone并編輯為如下內容:
[root:named]#    cat com.zone
$TTL 1D
@ IN SOA ns1.com. admin.com. ( 1 1D 1H 1D 1D )
NS ns1
ns1 A 172.16.253.113
roger NS ns2
ns2 A 172.16.100.101
##設置com.zone屬性如下:
[root:named]#    chgrp named com.zone
[root:named]#    chmod 640 com.zone
[root:named]#    ll
total 44
-rw-r----- 1 root  named  118 Dec  6 19:57 com.zone
##重啟服務

C、二級域名roger.com的設置

[root:named]#    vim /etc/named.rfc1912.zones
...
24
25 zone "roger.com" IN {
26     type master;
27     file "roger.com.zone";
28 };
29
30 zone "localhost" IN {
...
[root:named]#    cat /var/named/roger.com.zone
$TTL 86400 ; 1 day
roger.com.      IN SOA  ns1.roger.com. admin.roger.com. (
               16         ; serial
               86400      ; refresh (1 day)
               3600       ; retry (1 hour)
               604800     ; expire (1 week)
               3600       ; minimum (1 hour)
               )
@           NS  ns1.roger.com.
ns1 A 172.16.100.101
www CNAME web
web A 172.16.100.101
ftp A 172.16.100.101
* A 172.16.100.101
[root:named]#    ll
total 32
...
-rw-r----- 1 root  named  352 Dec  6 19:38 roger.com.zone
##重啟服務

D、電信服務器的配置 
安裝完bind軟件包后,將指定”.“的文件named.ca里面的內容修改成:

[root:~]#    cat /var/named/named.ca
.           518400  IN  NS  a.root-servers.net.
a.root-servers.net. 3600000 IN  A   172.16.252.81  ##根域IP地址
##測試能否找到www.roger.com
[root:~]#    dig www.roger.com @127.0.0.1

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.roger.com @127.0.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22996
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.roger.com.         IN  A

;; ANSWER SECTION:
www.roger.com.      84917   IN  CNAME   web.roger.com.
web.roger.com.      84917   IN  A   172.16.100.101

;; AUTHORITY SECTION:
roger.com.      84917   IN  NS  ns1.roger.com.

;; ADDITIONAL SECTION:
ns1.roger.com.      84917   IN  A   172.16.100.101

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 06 21:10:00 CST 2016
;; MSG SIZE  rcvd: 110
##能夠解析到

最后,在用戶的機器上使用

[root:~]#    dig www.roger.com @172.16.200.200  ##可以將172.16.200.200設置為該主機的DNS,就可以不加后面的@...,本次只能實驗。

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> www.roger.com @172.16.252.5
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28905
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.roger.com.         IN  A

;; ANSWER SECTION:
www.roger.com.      84818   IN  CNAME   web.roger.com.
web.roger.com.      84818   IN  A   172.16.100.101

;; AUTHORITY SECTION:
roger.com.      84818   IN  NS  ns1.roger.com.

;; ADDITIONAL SECTION:
ns1.roger.com.      84818   IN  A   172.16.100.101

;; Query time: 1 msec
;; SERVER: 172.16.252.5#53(172.16.252.5)
;; WHEN: Tue Dec 06 21:11:39 CST 2016
;; MSG SIZE  rcvd: 110
##解析完成

注意:在整個實驗中,每臺服務器的”.“文件都應該指向根服務器(172.16.252.81),建立的域配置文件要使用root的屬主,named的屬組,權限為640,設置好防火墻。

原創文章,作者:王更生,如若轉載,請注明出處:http://www.www58058.com/62960

(0)
王更生王更生
上一篇 2016-12-07
下一篇 2016-12-08

相關推薦

  • LVM創建實例及相關注釋

    LVM創建    pv—>vg—->lv—->快照 創建前準備了四塊1g硬盤分別為:sdb  sdc sdd  sde,并分別給四塊盤劃分了1G的空間,并指定了分區系統類型為8e(即Linux LVM) [root@localhost ~]# fdisk /dev/…

    Linux干貨 2015-06-08
  • 馬哥教育網絡班20期 第9周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash #the purpose of program : # #08/11/2016  PATH=/bin:/sbin:…

    Linux干貨 2016-08-15
  • httpd服務歸納:淺談I/O模型

    1. 四種理論的I/O模型      1) 調用者(服務進程):         阻塞:  進程發起I/O調用,如果調用為完成,進程被掛起休眠,不能再執行其他功能    …

    Linux干貨 2015-05-27
  • 文本處理三劍客之sed

    文本處理三劍客之sed 一、處理文本的工具sed 概念: Stream EDitor, 行編輯器 v sed是一種流編輯器,它一次處理一行內容。處理時,把 當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容 ,處理完成后,把緩沖區的內容送往屏幕。接著處理下一 行,這樣不斷重復,直到文件末尾。文…

    Linux干貨 2016-08-12
  • 馬哥教育網絡班22期+第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     [root@director2 ~]# cp -a /etc/skel /home/tuser1   &n…

    Linux干貨 2016-08-29
  • DevOpsDays大會,818坐標上海,我們來啦?。?!

    DevOpsDays 818, 坐標上海, DevOpsDays上海大會, 我們來啦?。?! 我們來啦?。?! 我們來啦?。?! 重要的事情說三遍。 標簽: 運維  移動開發  IT技術  DevOps  2008年的敏捷會議上,Andrew Clay Shafer 和 Patrick Debois 討論了關于“敏…

    Linux干貨 2017-08-10
欧美性久久久久