DNS服務和BIND

今天咱們來介紹一下DNS服務,在你們的印象中DNS可能只是將域名解析爲IP地址,可能其餘的暫時還不太瞭解,但願本篇內容能幫助你們。linux

一、什麼是DNS?

        DNS( Domain Name System)是「域名系統」的英文縮寫,是一種組織成域層次結構的計算機和網絡服務命名系統,使用的是UDP協議的53號端口,它用於TCP/IP網絡,它所提供的服務是用來將主機名和域名轉換爲IP地址的工做。DNS就是這樣的一位「翻譯官」,它的基本工做原理可用下圖來表示。web

二、DNS服務基本概念

  在介紹DNS服務器工做原理以前咱們先來了解幾個DNS相關的概念:數據庫

  一、FQDN:Full Qualified Domain Name,徹底限定域名,即每一個域在全球網絡都是惟一的;另外值得提到的一點是域並非指諸如www.google.com這樣的域名,而google.com纔是域;vim

  二、域的分類windows

  (1)根域 :世界有13個ip地址管理,有10個在美國,1個在日本,3個在歐洲,荷蘭,瑞典centos

  (2)頂級域:頂級域(Top Level Domain,簡稱TLD)分爲三類瀏覽器

     1> 通用頂級域:諸如 .com(商業機構) .org(非營利性組織) .net(網絡服務機構)等緩存

     2> 國家頂級域:諸如 .cn(中國) .uk(英國) .us(美國) .jp(小日本)安全

     3> 反向域(基礎建設頂級域):.arpa,即從IP到FQDN的反向解析bash

223.5.5.5  阿里DNS地址
223.6.6.6  阿里DNS地址
8.8.8.8  谷歌提供的DNS地址
8.8.4.4  谷歌提供的DNS地址
1.1.1.1   澳大利亞DNS地址
119.29.29.29  騰訊DNS地址

  三、DNS服務器查詢的類型:

   (1)遞歸查詢:

        遞歸查詢是最多見的查詢方式,域名服務器將代替提出請求的客戶機(下級DNS服務器)進行域名查詢,若域名服務器不能直接回答,則域名服務器會在域各樹中的各分支的上下進行遞歸查詢,最終將返回查詢結果給客戶機,在域名服務器查詢期間,客戶機將徹底處於等待狀態。

   當收到DNS工做站的查詢請求後,DNS服務器在本身的緩存或區域數據庫中查找,如找到則返回結果,如找不到,返回錯誤結果。即DNS服務器只會向DNS工做站返回兩種信息:要麼是在該DNS服務器上查找到的結果,要麼是查詢失敗。該DNS工做站自行向該DNS服務器詢問。「遞歸」的意思是有來有往,而且來、往的次數是一致的。
通常由DNS工做站提出的查詢請求便屬於遞歸查詢。

因爲遞歸查詢是二者之間的,因此一般查詢起來高效快捷,能最快應答成功或失敗的解析,然而沒法成功解析全部域名。通常發生在客戶端與服務器間,也特殊狀況是dns服務器與dns服務器之間。同時與迭代查詢相對.

   (2)迭代查詢:

         迭代查詢又稱重指引,當服務器使用迭代查詢時能使其餘服務器返回一個最佳的查詢點提示或主機地址,若此最佳的查詢點中包含須要查詢的主機地址,則返回主機地址信息,若此時服務器不可以直接查詢到主機地址,則是按照提示的指引依次查詢,直到服務器給出的提示中包含所須要查詢的主機地址爲止,通常每次指引都會更靠近根服務器(向上),查尋到根域名服務器後,則會再次根據提示向下查找。B訪問C、D、E、F、G,
都是迭代查詢,首先B 訪問C,獲得了提示訪問D的提示信息後,開始訪問D,D又返回給B提示信息,告訴B應該訪問E,依次類推。

 四、DNS名稱解析方式:

   (1)正向解析:即將FQDN轉化爲IP。

   (2)反向解析:即將IP轉化爲FQDN。

  每臺 DNS 服務器都負責管理一個有限範圍(一個或幾個域)內的主機域名和 IP 地址的對應關係,這些特定的 DNS 域或 IP 地址段稱爲「zone」(區域)。

  五、DNS服務器類型:

   (1)主DNS服務器:負責解析至少一個域。

   (2)輔助(從)DNS服務器:負責解析至少一個,是主DNS服務器的輔助。

   (3)緩存DNS服務器:不負責解析域,只是緩存域名解析結果。

  六、DNS返回的結果類型:

   (1)確定答案:查詢的域存在,會被緩存下來。

   (2)否認答案:不存在查詢的域名,所以不存在與其查詢的域名對應的IP;會被緩存下來。

   (3)權威答案:所查詢的域名的結果是由負責解析這個域的DNS服務器所返回的答案。

   (4)非權威答案:在緩存中查詢的結果。

  七、DNS的監聽端口:tcp的53號端口,udp的53號端口。

三、DNS解析原理

(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服務器是屬於遞歸查詢,而DNS服務器之間的交互查詢就是迭代查詢。

四、DNS配置文件

/etc/named.conf          主配置文件 服務器主要運行參數

/etc/named.rfc1912.zones  區域文件,主要指定要解析哪一個域名

/var/named/xxx.xx        數據文件,用來正向和反向的解析

五、資源記錄

區域解析庫:由衆多RR組成:
資源記錄:Resource Record, RR
記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
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,郵件交換器
TXT:對域名進行標識和說明的一種方式,通常作驗證記錄時會使用此項,如:
SPF(反垃圾郵件)記錄,https驗證等
示例:_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x

六、資源記錄定義的格式:

語法:name [TTL] IN rr_type value
注意:
(1) TTL可從全局繼承
(2) @可用於引用當前區域的名字
(3) 同一個名字能夠經過多條記錄定義多個不一樣的值;此時DNS服務器會以輪詢
方式響應
(4) 同一個值也可能有多個不一樣的定義名字;經過多個不一樣的名字指向同一個值
進行定義;此僅表示經過多個不一樣的名字能夠找到同一個主機
$TTL(主標題定義,下面能夠省略TTL格式) 1D(默認一天)
@(表明管理的域名,例如:baidu.com)   IN(internet) SOA(當前區域名稱)  dns1(主DNS服務器名稱,註釋名稱,必須用A記錄解析成IP,對應本機的IP地址)  admin.baidu.com.(管理員的郵箱地址) (
                                                                                                           0       ; serial (數據庫版本號,要將數據遞增,纔會生效下面的數據)
                                                                                                           1D      ; refresh (刷新間隔)
                                                                                                           1H      ; retry    (重試時間間隔) 
                                                                                                           1W      ; expire  (過時時長)
                                                                                                           3H )    ; minimum (緩存時長)
(能夠繼承前面的內容) NS    dns1    
dns1 A 192.168.34.101 (必須將上面的dns1主服務器名稱須要定義解析成IP地址)

七、SOA記錄

 name: 當前區域的名字,例如「baidu.com.」
 value: 有多部分組成
 (1) 當前區域的主DNS服務器的FQDN,也可使用當前區域的名字;
 (2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,通常用.替換
例如:admin.baidu.com
 (3) 主從服務區域傳輸相關定義以及否認的答案的統一的TTL
 例如:
baidu.com. 86400 IN SOA ns.baidu.com.
nsadmin.baidu.com. (
2015042201 ;序列號
2H ;刷新時間
10M  ;重試時間
1W  ;過時時間
1D  ;否認答案的TTL值
)

八、NS記錄

name: 當前區域的名字
value: 當前區域的某DNS服務器的名字,例如ns.baidu.com.
注意:一個區域能夠有多個NS記錄
例如:
baidu.com. IN NS ns1.baidu.com.
baidu.com. IN NS ns2.baidu.com.

 注意:
(1) 相鄰的兩個資源記錄的name相同時,後續的可省略 
(2) 對NS記錄而言,任何一個ns記錄後面的服務器名字,都應該在後續有
一個A記錄 

九、MX記錄

name: 當前區域的名字
value: 當前區域的某郵件服務器(smtp服務器)的主機名
一個區域內,MX記錄可有多個;但每一個記錄的value以前應該有一個數字(0-99),表示此服務器的優先級;數字越小優先級越高
例如:
baidu.com. IN MX 10 mx1.baidu.com.
IN MX 20 mx2.baidu.com.

注意:對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有
一個A記錄  

十、A記錄

name: 某主機的FQDN,例如www.baidu.com.
value: 主機名對應主機的IP地址
例如:
www.baidu.com. IN A 1.1.1.1
www.baidu.com. IN A 2.2.2.2
mx1.baidu.com. IN A 3.3.3.3
mx2.baidu.com. IN A 4.4.4.4
$GENERATE 1-254 HOST$ A 1.2.3.$
*.baidu.com. IN A 5.5.5.5
baidu.com. IN A 6.6.6.6

注意:避免用戶寫錯名稱時給錯誤答案,可經過泛域名解析進行解析至某特定地址,好比:@,  * 兩個關鍵寫法。

十一、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.baidu.com.
如1.2.3爲網絡地址,可簡寫成:
4 IN PTR www.baidu.com. 

十二、AAAA記錄

name: FQDN
value: IPv6

1三、CNAME(別名記錄)

name: 別名的FQDN
value: 真正名字的FQDN
例如:
www.baidu.com. IN CNAME websrv.baidu.com.

注意:網絡地址及後綴可省略;主機地址依然須要反着寫。

1四、測試命令及rndc命令:

一、dig

dig [-t type] name [@SERVER] [query options]  

  dig 只用於測試dns 系統,不會查詢hosts 文件進行解析

查詢選項:

  +[no]trace程 :跟蹤解析過程 : dig +trace baidu.com

  +[no]reurse :進行遞歸解析

  測試反向解析:dig -x IP = dig -t ptr reverseip.in-addr.arpa

  模擬區域傳送:

  dig -t axfr ZONE_NAME @SERVER    抓區域數據庫,能夠被allow-transfer  { 192.168.30.106;}; 防止

  dig -t axfr baidu.com @10.10.10.11

  dig -t axfr 100.1.10.in-addr.arpa @172.16.1.1

  dig -t NS . @114.114.114.114  測試郵件記錄

  dig -t NS . @a.root-servers.net  查根的服務器,13個

二、host,查詢沒有dig詳細

    host [-t type] name [SERVER]

    host -t NS baidu.com 172.16.0.1

    host -t soa baidu.com

    host -t mx baidu.com

    host -t axfr baidu.com

    host 1.2.3.4

三、nslookup: (windows和linux都有這個命令)

命令: nslookup [-option] [name | -] [server]

交互式模式:

  nslookup>

  server IP: 指明使用哪一個DNS server 進行查詢

  set q=RR_TYPE: 指明查詢的資源記錄類型

  NAME: 要查詢的名稱

四、rndc命令

rndc:

  rndc --> rndc (953/tcp)

  rndc COMMAND

COMMAND:

  reload: 重載主配置文件和區域解析庫文件

  reload zonename: 重載區域解析庫文件

  retransfer zonename: 手動啓動 區域傳送, 而無論序列號是否增長

  notify zonename: 從新對區域傳送發通知,當主從同步過程發生意外時,

    例:rndc notify baidu.com

  reconfig: 重載主配置文件

  querylog: 開啓或關閉查詢日誌文件/var/log/message(默認不啓用日誌),排錯的時候纔開啓,要不訪問一條加一條記錄,量太大了;關閉,執行一樣的命令

    tail -f /var/log/messages 動態查詢日誌

  trace: 遞增debug 一個級別

  trace LEVEL: 指定使用的級別,日誌級別,日誌的詳細程度

  notrace:爲將調試級別設置爲 0

  flush :清空DNS 服務器的全部緩存記錄

主從服務器數據同步方式的方式:

  • 推:push,主服務發生變化,從服務器隨之變化
  • 拉: pull

1四、驗證linux的DNS服務具備緩存功能:

首先:咱們拿一臺linux主機A做爲DNS服務端,另外一臺linux主機B做爲客戶端:

看一下主機A的當前網絡配置:

安裝bind軟件:yum install bind -y

啓動bind服務: systemctl start named(centos7啓動)

                            service named start (centos6啓動)

[root@ansiblenetwork-scripts]#vim ifcfg-ens33 

DEVICE=ens33
BOOTPROTO=static
IPADDR=192.168.34.101
PREFIX=24
GATEWAY=192.168.34.2
ONBOOT=yes
DNS1=127.0.0.1

而後在主機A上ping網址,如ping www.baidu.com,此時能夠看到能ping通:

[root@ansiblenetwork-scripts]#ping www.baidu.com
PING www.a.shifen.com (112.80.248.75) 56(84) bytes of data.
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=1 ttl=128 time=1003 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=2 ttl=128 time=16.8 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=3 ttl=128 time=14.6 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=4 ttl=128 time=19.7 ms
64 bytes from 112.80.248.75 (112.80.248.75): icmp_seq=5 ttl=128 time=17.6 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 8649ms
rtt min/avg/max/mdev = 14.634/214.418/1003.120/394.354 ms, pipe 2

修改配置文件: 

註釋掉第一個,是由於他默認是監聽在本地端口上,這樣是不能提供服務的。
能夠改爲把IP改爲localhost,或是你指定的某個IP。註釋後默認監聽在全部本地端口上。
註釋掉第二個,是由於它裏面寫了localhost,指明瞭只能被本機所使用查詢功能,
註釋後默認全部IP均可以使用,也能夠把localhost改爲any。

vim /etc/named.conf

[root@ansible~]#vim /etc/named.conf
options {
        listen-on port 53 { localhost; }; 本地端口進行鏈接

        allow-query { any; }; 改成any,是容許全部人進行鏈接此計算機

將主機B的DNS地址寫成主機A的IP地址,即192.168.34.101當作主機B的DNS,指向主機A:

[root@centos6~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
PROTOBOOT=static
IPADDR=192.168.34.105
GATEWAY=192.168.34.2
ONBOOT=yes
DNS1=192.168.34.101

此時將主機A的鏈接外網的一個網卡down掉,而後在主機B上ping www.baidu.com,此時能夠ping通:

[root@ansible~]#ifconfig ens37 down  將A主機的外網網卡去掉
[root@centos6~]#ping www.baidu.com  此時仍是能夠經過192.168.34.101主機能夠ping到外網
PING www.a.shifen.com (112.80.248.76) 56(84) bytes of data.
64 bytes from 112.80.248.76: icmp_seq=1 ttl=128 time=20.2 ms
64 bytes from 112.80.248.76: icmp_seq=2 ttl=128 time=15.0 ms
64 bytes from 112.80.248.76: icmp_seq=3 ttl=128 time=39.5 ms
64 bytes from 112.80.248.76: icmp_seq=4 ttl=128 time=17.2 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3419ms
rtt min/avg/max/mdev = 15.076/23.020/39.545/9.713 ms
[root@centos6~]#dig www.baidu.com   也能夠查詢到當前的執行結果

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15097
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5

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

;; ANSWER SECTION:
www.baidu.com.		361	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	110	IN	A	112.80.248.75
www.a.shifen.com.	110	IN	A	112.80.248.76

;; AUTHORITY SECTION:
a.shifen.com.		362	IN	NS	ns1.a.shifen.com.
a.shifen.com.		362	IN	NS	ns3.a.shifen.com.
a.shifen.com.		362	IN	NS	ns4.a.shifen.com.
a.shifen.com.		362	IN	NS	ns2.a.shifen.com.
a.shifen.com.		362	IN	NS	ns5.a.shifen.com.

;; ADDITIONAL SECTION:
ns5.a.shifen.com.	362	IN	A	180.76.76.95
ns2.a.shifen.com.	362	IN	A	220.181.33.32
ns3.a.shifen.com.	362	IN	A	112.80.255.253
ns4.a.shifen.com.	362	IN	A	14.215.177.229
ns1.a.shifen.com.	362	IN	A	61.135.165.224

;; Query time: 4 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)   鏈接通的IP地址來自於192.168.34.101
;; WHEN: Wed Nov  6 20:46:45 2019
;; MSG SIZE  rcvd: 260

1五、實現正向解析DNS服務器

在主配置文件中定義區域:

type類型有 主:從:根:轉發。 
file指區域解析庫文件的文件名,默認放在/var/named/目錄下,修改當前配置文件:

vim /etc/named.rfc1912.zones

[root@ansiblenamed]#vim /etc/named.rfc1912.zones

zone "baidu.com" { 將文件內容寫入當前文件中 type master; file "baidu.com.zone"; }; 

將 /var/named/目錄下的默認配置文件複製一份,並修改區域數據解析庫文件

注意:named.localhost的屬性,尤爲是屬組,必定要是named所屬組。

[root@ansiblenamed]#cd /var/named
[root@ansiblenamed]#cp -p named.localhost  baidu.com.zone

修改裏邊的區域數據解析庫內容:

[root@ansiblenamed]#vim baidu.com.zone 

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
dns1    A   192.168.34.101
www    CNAME    webs
webs   A      6.6.6.6
webs   A      8.8.8.8
webs   A      7.7.7.7
@      MX   10 mailser1
@      MX   20 mailser2
mailser1 A     11.9.9.9
mailser2 A     9.9.9.9
@        A     8.8.8.8  此寫法能夠省略前面的www寫法
*        A     8.8.8.8  此寫法避免用戶只知道域名,www前面的輸入錯誤也能打開頁面。
$GENERATE  1-200  server$ A 192.168.34.$ 將一個服務生成最大200條記錄

注意:以上的SOA記錄裏面小括號裏面的那五行分別指的是 序列號;刷新時間;重試時間; 
過時時間;否認答案時間的TLL值。

 

檢測配置文件內容是否有誤:

named-checkzone  baidu.com  /var/named/baidu.com.zone

rncd reload  從新加載服務。

[root@ansiblenamed]#named-checkzone baidu.com  /var/named/baidu.com.zone
zone baidu.com/IN: loaded serial 0
OK
[root@ansiblenamed]#rndc reload  讓此配置文件生效,或者直接重啓named也能夠,systemctl restart named
server reload successful

主機B此時的DNS配置信息仍是主機A的IP地址:

[root@centos6~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
PROTOBOOT=static
IPADDR=192.168.34.105
GATEWAY=192.168.34.2
ONBOOT=yes
DNS1=192.168.34.101

在主機B上驗證當前6.6.6.6的解析結果來自於主機A(192.168.34.101),結果以下:

一、dig www.baidu.com   host www.baidu.com   nslokup www.baidu.com 均可以查詢

[root@centos6named]#dig www.baidu.com

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

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

;; ANSWER SECTION:
www.baidu.com.		86400	IN	A	6.6.6.6

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	baidu.com.

;; ADDITIONAL SECTION:
baidu.com.		86400	IN	A	127.0.0.1
baidu.com.		86400	IN	AAAA	::1

;; Query time: 4 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Wed Nov  6 21:05:59 2019
;; MSG SIZE  rcvd: 105

此時能夠看到當前的7.7.7.7解析結果也是來自於192.168.34.101:

dig blog.baidu.com   host blog.baidu.com   nslokup blog.baidu.com 

[root@centos6named]#dig blog.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> blog.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46754
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;blog.baidu.com.			IN	A

;; ANSWER SECTION:
blog.baidu.com.		86400	IN	A	7.7.7.7

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	baidu.com.

;; ADDITIONAL SECTION:
baidu.com.		86400	IN	A	127.0.0.1
baidu.com.		86400	IN	AAAA	::1

;; Query time: 1 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Wed Nov  6 21:06:57 2019
;; MSG SIZE  rcvd: 106

不輸入www驗證解析內容:

[root@ansiblenamed]#dig baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28766
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

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

;; ANSWER SECTION:
baidu.com.		86400	IN	A	8.8.8.8

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 23:39:16 CST 2019
;; MSG SIZE  rcvd: 89

用戶輸入錯誤解析文件信息:

[root@ansiblenamed]#dig adsds.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> adsds.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34813
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

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

;; ANSWER SECTION:
adsds.baidu.com.	86400	IN	A	8.8.8.8

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 23:40:39 CST 2019
;; MSG SIZE  rcvd: 95

解析當前的A記錄:

[root@ansiblenamed]#dig www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20270
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 2

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

;; ANSWER SECTION:
www.baidu.com.		86400	IN	CNAME	webs.baidu.com.
webs.baidu.com.		86400	IN	A	7.7.7.7
webs.baidu.com.		86400	IN	A	8.8.8.8
webs.baidu.com.		86400	IN	A	6.6.6.6

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 22:03:38 CST 2019
;; MSG SIZE  rcvd: 144

查詢域中的MX記錄:

[root@ansiblenamed]#dig -t mx  baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> -t mx baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62611
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 4

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

;; ANSWER SECTION:
baidu.com.		86400	IN	MX	10 mailser1.baidu.com.
baidu.com.		86400	IN	MX	20 mailser2.baidu.com.

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
mailser1.baidu.com.	86400	IN	A	11.9.9.9
mailser2.baidu.com.	86400	IN	A	9.9.9.9
dns1.baidu.com.		86400	IN	A	192.168.34.101

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 22:04:16 CST 2019
;; MSG SIZE  rcvd: 155

驗證當前生成最大200條記錄的信息內容:

[root@centos6named]#dig server20.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> server20.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5853
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;server20.baidu.com.		IN	A

;; ANSWER SECTION:
server20.baidu.com.	86400	IN	A	192.168.34.20

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101

;; Query time: 3 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Wed Nov  6 23:47:27 2019
;; MSG SIZE  rcvd: 87

[root@centos6named]#dig server10.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> server10.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61484
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;server10.baidu.com.		IN	A

;; ANSWER SECTION:
server10.baidu.com.	86400	IN	A	192.168.34.10

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101

;; Query time: 2 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Wed Nov  6 23:47:33 2019
;; MSG SIZE  rcvd: 87

查詢郵件服務器:

dig -t mx easthome.com 查找一個域的郵件服務器。

[root@ansiblenamed]#dig -t  mx easthome.com

; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> -t mx easthome.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50719
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 19

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

;; ANSWER SECTION:
easthome.com.		1200	IN	MX	1 mail.easthome.com.

;; AUTHORITY SECTION:
easthome.com.		172749	IN	NS	dns20.hichina.com.
easthome.com.		172749	IN	NS	dns19.hichina.com.

;; ADDITIONAL SECTION:
dns19.hichina.com.	172749	IN	A	140.205.41.17
dns19.hichina.com.	172749	IN	A	140.205.41.27
dns19.hichina.com.	172749	IN	A	140.205.81.17
dns19.hichina.com.	172749	IN	A	140.205.81.27
dns19.hichina.com.	172749	IN	A	106.11.141.117
dns19.hichina.com.	172749	IN	A	106.11.141.127
dns19.hichina.com.	172749	IN	A	106.11.211.57
dns19.hichina.com.	172749	IN	A	106.11.211.67
dns19.hichina.com.	172749	IN	AAAA	2400:3200:2000:38::1
dns20.hichina.com.	172749	IN	A	140.205.81.18
dns20.hichina.com.	172749	IN	A	140.205.81.28
dns20.hichina.com.	172749	IN	A	106.11.141.118
dns20.hichina.com.	172749	IN	A	106.11.141.128
dns20.hichina.com.	172749	IN	A	106.11.211.58
dns20.hichina.com.	172749	IN	A	106.11.211.68
dns20.hichina.com.	172749	IN	A	140.205.41.18
dns20.hichina.com.	172749	IN	A	140.205.41.28
dns20.hichina.com.	172749	IN	AAAA	2400:3200:2000:39::1

;; Query time: 274 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Nov 06 22:10:52 CST 2019
;; MSG SIZE  rcvd: 422

1六、實現反向解析DNS服務器  

修改當前配置文件:vim /etc/named.rfc1912.zones

[root@ansiblenamed]#vim /etc/named.rfc1912.zones 
zone "34.168.192.in-addr.arpa"IN {
        type master;
        file "192.168.34.zone";
};

 修改反向區域解析庫文件: 

[root@ansiblenamed]#vim 192.168.34.zone 

$TTL 1D
@ IN  SOA  dnsserver admin.baidu.com. ( 20191110 3H 10M 1D 1H )
      NS   dnsserver
dnsserver   A      192.168.34.101
7           PTR    dnsserver.baidu.com.
100         PTR    www.baidu.com
200         PTR    blog.baidu.com

將配置文件生效:

[root@ansiblenamed]#rndc reload

檢查區域庫文件反向解析結果:

[root@centos6named]#dig -x 192.168.34.100

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

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

;; ANSWER SECTION:
100.34.168.192.in-addr.arpa. 86400 IN	PTR	www.baidu.com.34.168.192.in-addr.arpa.

;; AUTHORITY SECTION:
34.168.192.in-addr.arpa. 86400	IN	NS	dnsserver.34.168.192.in-addr.arpa.

;; ADDITIONAL SECTION:
dnsserver.34.168.192.in-addr.arpa. 86400 IN A	192.168.34.101

;; Query time: 4 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Wed Nov  6 22:38:10 2019
;; MSG SIZE  rcvd: 113

[root@centos6named]#dig -x 192.168.34.200

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

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

;; ANSWER SECTION:
200.34.168.192.in-addr.arpa. 86400 IN	PTR	blog.baidu.com.34.168.192.in-addr.arpa.

;; AUTHORITY SECTION:
34.168.192.in-addr.arpa. 86400	IN	NS	dnsserver.34.168.192.in-addr.arpa.

;; ADDITIONAL SECTION:
dnsserver.34.168.192.in-addr.arpa. 86400 IN A	192.168.34.101

;; Query time: 1 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Wed Nov  6 22:38:18 2019
;; MSG SIZE  rcvd: 114

[root@centos6named]#dig -x 192.168.34.7

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

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

;; ANSWER SECTION:
7.34.168.192.in-addr.arpa. 86400 IN	PTR	dnsserver.baidu.com.

;; AUTHORITY SECTION:
34.168.192.in-addr.arpa. 86400	IN	NS	dnsserver.34.168.192.in-addr.arpa.

;; ADDITIONAL SECTION:
dnsserver.34.168.192.in-addr.arpa. 86400 IN A	192.168.34.101

;; Query time: 1 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Wed Nov  6 22:38:22 2019
;; MSG SIZE  rcvd: 116

 1七、實現主從複製

主從複製:
一、應該爲一臺獨立的名稱服務器;
二、主服務器的區域解析庫文件中必須有一條NS記錄是指向從服務器;
三、從服務器只須要定義區域,而無須提供解析庫文件;解析庫文件應該放置於/var/named/slaves/目錄中;
四、主服務器得容許從服務器做區域傳送;
五、主從服務器時間應該同步,可經過ntp進行;
六、bind程序的應該保持一致;不然,應該從高,主低;

實驗前準備:

主服務器:A (IP地址爲192.168.34.101)

從服務器:B  (IP地址爲192.168.34.103)

客戶端:C      (IP地址爲192.168.34.105)

 

配置主服務器相關文件:

(1)在主服務器A中配置文件信息:vim /etc/named.conf

修改完以後並從新啓動DNS服務:rndc reload

options {
        listen-on port 53 { localhost; }; 將此行寫成localhost或者註釋掉(//),不寫的話會,默認只能本機訪問
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };   寫成any或者註釋掉(//)均可以
        allow-transfer  { 192.168.34.103; }; 將從服務器的IP地址寫入,默認只能103地址做爲當前主服務器的備用服務器,即:從服務器,否則任何主機均可以作爲從服務器訪問主服務器,抓取重要信息

(2)修改主服務器A區域庫文件的內容:

vim /var/named/baidu.com.zone

[root@ansiblenamed]#vim /var/named/baidu.com.zone

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1           
        NS      dns2           #主要是修改了這部份內容,給從服務器添加一個NS標記
dns1    A   192.168.34.101     # 主服務器IP地址 
dns2    A   192.168.34.103     # 將從服務器的IP地址寫入
www    CNAME    webs
webs   A      6.6.6.6
webs   A      8.8.8.8
webs   A      7.7.7.7
@      MX   10 mailser1
@      MX   20 mailser2
mailser1 A     11.9.9.9
mailser2 A     9.9.9.9
@       A      8.8.8.8
*       A      8.8.8.8
$GENERATE  1-200  server$ A 192.168.34.$

配置從服務器的文件:

(1)在從服務器B上安裝DNS:yum install bind

在配置文件中修改/etc/named.conf相關配置文件

[root@centos7_1 ~]# vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; #將此行註釋掉
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
// allow-query { localhost; }; 將此行註釋掉 allow-transfer { none;}; 此行必需寫入,不寫會不安全,並且其餘任何主機均可以做爲從服務器進行訪問,抓取IP地址

注意:將第一行的listen-on port 53端口註釋掉,或者寫成localhost,否則只能爲本機服務,allow-query那行業註釋掉。  

(2)將從服務器B的/etc/named.rfc1912.zones配置文件加以修改

[root@centos7_1 ~]# vim /etc/named.rfc1912.zones 
zone "baidu.com" { # 域名要與主服務器的域名一致 type slave; # 類型爲「奴隸的意思」 masters {192.168.34.101;}; #將主服務器的IP地址寫入 file "slaves/baidu.com.zone.slave"; # 將從服務器的數據放到slaves路徑內
};

(3)從新加載主服務器A的DNS服務:

[root@ansiblenamed]#rndc reload
server reload successful

(4)查詢當前從服務器B的同步的數據文件,此時咱們能夠看到/var/named/slaves目錄下已經同步了主服務器的數據內容:

[root@centos7_1 ~]# ls /var/named/slaves
baidu.com.zone.slave

  配置客戶端: 

(5)下來我在客戶端C配置兩個DNS地址,將主從服務器的IP地址都關聯起來:

[root@centos6network-scripts]#vim ifcfg-eth0
DEVICE=eth0
PROTOBOOT=static
IPADDR=192.168.34.105
GATEWAY=192.168.34.2
ONBOOT=yes
DNS1=192.168.34.101  # 主服務器的DNS IP地址
DNS2=192.168.34.103  #  從服務器的DNS IP地址

(6)在客戶端C查看當前配置好的DNS服務地址

[root@centos6network-scripts]#cat /etc/resolv.conf  查看當前的配置DNS信息
# Generated by NetworkManager
search 10.localdomain
nameserver 192.168.34.101
nameserver 192.168.34.103 

(7)咱們在客戶端C用dig命令查看當前的baidu.com 網址,查看當前DNS解析IP地址是來自哪一個服務器:

[root@centos6network-scripts]#dig www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24163
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2

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

;; ANSWER SECTION:
www.baidu.com.		86400	IN	CNAME	webs.baidu.com.
webs.baidu.com.		86400	IN	A	6.6.6.6
webs.baidu.com.		86400	IN	A	8.8.8.8
webs.baidu.com.		86400	IN	A	7.7.7.7

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.
baidu.com.		86400	IN	NS	dns2.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 6 msec
;; SERVER: 192.168.34.101#53(192.168.34.101) #此時能夠看到解析的IP地址來自於主服務器
;; WHEN: Thu Nov  7 09:38:55 2019
;; MSG SIZE  rcvd: 168

(8)咱們將主服務器A的網卡down掉(ifconfig ens33 down),而後在客戶端C查看當前內容:

[root@centos6network-scripts]#dig www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54362
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2

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

;; ANSWER SECTION:
www.baidu.com.		86400	IN	CNAME	webs.baidu.com.
webs.baidu.com.		86400	IN	A	8.8.8.8
webs.baidu.com.		86400	IN	A	7.7.7.7
webs.baidu.com.		86400	IN	A	6.6.6.6

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.
baidu.com.		86400	IN	NS	dns2.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 12 msec
;; SERVER: 192.168.34.103#53(192.168.34.103) #此時,咱們看到的是從服務器的IP地址,訪問網站是經過從服務器訪問。
;; WHEN: Thu Nov  7 10:24:16 2019
;; MSG SIZE  rcvd: 168

(9)此時,咱們來驗證當前的服務器同步狀況,修改主服務器區域庫文件內容:/var/named/baidu.com.zone

[root@ansible~]#vim /var/named/baidu.com.zone 

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
dns1    A   192.168.34.101
dns2    A   192.168.34.103
www    CNAME    webs
webs   A      6.6.6.6
webs   A      8.8.8.8
webs   A      7.7.7.7
@ MX 10 mailser1 #刪除此條配置 @ MX 20 mailser2 #刪除此條配置 
mailser1 A     11.9.9.9
mailser2 A     9.9.9.9
@       A      8.8.8.8
*       A      8.8.8.8
$GENERATE  1-200  server$ A 192.168.34.$

(10)刪除以後,將DNS服務重啓:rndc reload

[root@ansible~]#rndc reload
server reload successful

 (11)而後咱們在客戶端C上dig查詢同步信息,此時,咱們分別在主從服務器上均可以看到MX的配置記錄,這是爲何呢?這是由於咱們修改後同步不一樣步,不是隻修改配置文件,而是要修改上面的序列號(serial),纔會生效,請看第12步:

[root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.101

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.101
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50791
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;baidu.com.			IN	MX

;; AUTHORITY SECTION:
baidu.com.		10800	IN	SOA	dns1.baidu.com. admin.baidu.com. 0 86400 3600 604800 10800

;; Query time: 7 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 10:33:31 2019
;; MSG SIZE  rcvd: 74

[root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.103

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.103
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48437
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4

;; QUESTION SECTION:
;baidu.com.			IN	MX

;; ANSWER SECTION:
baidu.com.		86400	IN	MX	10 mailser1.baidu.com.
baidu.com.		86400	IN	MX	20 mailser2.baidu.com.

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.
baidu.com.		86400	IN	NS	dns2.baidu.com.

;; ADDITIONAL SECTION:
mailser1.baidu.com.	86400	IN	A	11.9.9.9
mailser2.baidu.com.	86400	IN	A	9.9.9.9
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 10 msec
;; SERVER: 192.168.34.103#53(192.168.34.103)
;; WHEN: Thu Nov  7 10:33:34 2019
;; MSG SIZE  rcvd: 179

(12)將序列號(serial)修改成1,改完以後從新加載DNS服務,rndc reload:

[root@ansible~]#vim /var/named/baidu.com.zone 

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        1       ; serial  #此處的0已經改成1
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
dns1    A   192.168.34.101
dns2    A   192.168.34.103
www CNAME webs 此處也作了修改 webs A 66.66.66.66 此處也作了修改
mailser1 A     11.9.9.9
mailser2 A     9.9.9.9
@       A      8.8.8.8
*       A      8.8.8.8
$GENERATE  1-200  server$ A 192.168.34.$

(13)修改完配置後,重啓DNS服務,並在客戶端進行dig驗證,此時的IP地址已經同步,而且沒有了MX配置文件的記錄:

[root@ansible~]#rndc reload  重啓DNS服務
server reload successful
[root@centos6network-scripts]#dig www.baidu.com

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

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

;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com. webs.baidu.com. 86400 IN A 66.66.66.66   此時已經同步爲新的IP地址

;; AUTHORITY SECTION:
baidu.com.	86400	IN	NS	dns2.baidu.com.
baidu.com.	86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.	86400	IN	A	192.168.34.101
dns2.baidu.com.	86400	IN	A	192.168.34.103

;; Query time: 1 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 10:41:43 2019
;; MSG SIZE rcvd: 136

(小實驗)驗證TCP和UDP的53端口做用:

將從服務器B的/var/named/slaves/目錄下的文件刪掉:

[root@centos7_1 slaves]# rm -rf /var/named/slaves/baidu.com.zone.slave   刪除slaves目錄下的文件
[root@centos7_1 slaves]# systemctl restart named  重啓DNS服務
[root@centos7_1 slaves]# ls  還能夠複製主服務器的文件
baidu.com.zone.slave
[root@ansible~]#iptables -A INPUT -p tcp --dport 53 -j REJECT  將目標tcp的53端口拒絕。
[root@centos7_1 slaves]# systemctl restart named 重啓服務
[root@centos7_1 slaves]# ls  此時不能複製主服務器的文件

在客戶端C上dig能夠查詢到當前的53信息內容,此時的內容是來自於UDP的53端口

[root@centos6network-scripts]#dig www.baidu.com

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

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

;; ANSWER SECTION:
www.baidu.com.		86400	IN	CNAME	webs.baidu.com.
webs.baidu.com.		86400	IN	A	66.66.66.66

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.
baidu.com.		86400	IN	NS	dns2.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 10 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 11:14:25 2019
;; MSG SIZE  rcvd: 136

總結:TCP 的53端口影響了主從複製、UDP的53端口是供查詢

建立子域:

子域和父域在同一臺主機上

(1)建立子域,在主服務器A(主域)上將beijing.baidu.com域寫入到/etc/named.rfc1912.zones配置文件內:

[root@ansiblenamed]#vim /etc/named.rfc1912.zones 

zone  "baidu.com" {
        type master;
        file "baidu.com.zone";
};

zone "beijing.baidu.com" { type master; file "beijing.baidu.com.zone"; }; 

建立一個beijing.baidu.com區域庫文件,配置完以後啓動DNS,systemctl start named:

[root@ansible~]#cd /var/named
[root@ansiblenamed]#ls
192.168.34.zone  beijing.baidu.com.zone  dynamic   named.empty      named.loopback
baidu.com.zone   data                    named.ca  named.localhost  slaves
[root@ansiblenamed]#vim beijing.baidu.com.zone 

$TTL 1D
@       IN SOA  dns1  admin (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
dns1    A   192.168.34.101  當前的IP地址指向頂級域的IP地址
www    CNAME    webs
webs   A      88.88.88.88

(2)在客戶端C上dig查詢配置好後的子域信息:

[root@centos6network-scripts]#dig www.baidu.com  查看主服務器的baidu.com域

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

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

;; ANSWER SECTION:
www.baidu.com.		86400	IN	CNAME	webs.baidu.com.
webs.baidu.com.		86400	IN	A	66.66.66.66

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns2.baidu.com.
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 0 msec
;; SERVER: 192.168.34.103#53(192.168.34.103)
;; WHEN: Thu Nov  7 11:57:45 2019
;; MSG SIZE  rcvd: 136

[root@centos6network-scripts]#dig www.beijing.baidu.com  查看當前的子域內容

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.beijing.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59333
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.beijing.baidu.com.		IN	A

;; ANSWER SECTION:
www.beijing.baidu.com.	86400	IN	CNAME	webs.beijing.baidu.com.
webs.beijing.baidu.com.	86400	IN	A	88.88.88.88

;; AUTHORITY SECTION:
beijing.baidu.com.	86400	IN	NS	dns1.beijing.baidu.com.

;; ADDITIONAL SECTION:
dns1.beijing.baidu.com.	86400	IN	A	192.168.34.101

;; Query time: 4 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 11:57:54 2019
;; MSG SIZE  rcvd: 109

實現子域委派(父域和子域在不一樣主機上):

(1)將主服務器A的配置文件/var/named/baidu.com.zone進行修改,添加一個shenzhen域:

[root@ansiblenamed]#vim /var/named/baidu.com.zone 

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
shenzhen NS     dns3
dns1    A   192.168.34.101
dns2    A   192.168.34.103
dhs3    A   192.168.34.102

www    CNAME    webs
webs   A      66.66.66.66

(2)重啓主服務器A的DNS服務:

[root@ansiblenamed]#rndc reload
server reload successful

注意:檢查配置文件是否書寫錯誤

named-checkconf 查看配置文件是否有誤
named-checkzone  baidu.com  /var/named/baidu.com.zone  檢查域文件是否有誤

(3)在服務器D(子域上)上安裝DNS服務,並DNS配置相關文件,

yum  install bind

[root@centos102 ~]# vim /etc/named.conf
options {
//      listen-on port 53 { 127.0.0.1; };
        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; };

(4)修改服務器D(子域)的/etc/named.rfc1912.zones配置文件:

[root@centos102 ~]# vim /etc/named.rfc1912.zones 
zone "shenzhen.baidu.com" { type master; file "shenzhen.baidu.com.zone";
};

(5)在服務器D(子域)上遠程複製主服務器A的區域庫文件,並將所屬組屬性進行修改:

[root@centos102 ~]# scp 192.168.34.103:/var/named/baidu.com.zone  /var/named/shenzhen.baidu.com.zone
[root@centos102 named]# ll
total 32
drwxrwx--- 2 named named 4096 Mar 23  2017 data
drwxrwx--- 2 named named 4096 Mar 23  2017 dynamic
-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 Dec 15  2009 named.loopback
-rw-r----- 1 root  root   296 Nov  7 12:11 shenzhen.baidu.com.zone  此時的文件所屬組屬性有問題
drwxrwx--- 2 named named 4096 Mar 23  2017 slaves
[root@centos102 named]# chgrp named shenzhen.baidu.com.zone   修改當前的shenzhen.baidu.com.zone所屬組屬性

(6)修改服務器D(子域)當前的shenzhen.baidu.com.zone配置文件:

[root@centos7-2 named]# vim shenzhen.baidu.com.zone 
$TTL 1D
@       IN SOA  dns1  admin (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
dns1    A   192.168.34.102

www    CNAME    webs
webs   A      7.7.7.7

注意:須要檢查配置文件和域文件是否有誤。

named-checkconf 查看配置文件是否有誤
named-checkzone  baidu.com  /var/named/baidu.com.zone  檢查域文件是否有誤

(7)啓動(子域)的DNS服務:

[root@centos7-2 named]# systemctl start named

(8)此時,咱們的客戶端C並無配置執行shenzhen.baidu.com.zone子域的DNSIP地址,

   在客戶端執行dig查看當前的shenzhen.baidu.com.zone子域狀況:

[root@centos6~]#cat /etc/resolv.conf  查看當前的DNS指向的IP地址
# Generated by NetworkManager
search 10.localdomain
nameserver 192.168.34.101
nameserver 192.168.34.103
[root@centos6~]#dig www.shenzhen.baidu.com   此時已經實現了迭代查詢功能

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.shenzhen.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15796
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;www.shenzhen.baidu.com.		IN	A

;; ANSWER SECTION:
www.shenzhen.baidu.com.	86266	IN	CNAME	webs.shenzhen.baidu.com.
webs.shenzhen.baidu.com. 86266	IN	A	7.7.7.7

;; AUTHORITY SECTION:
shenzhen.baidu.com.	86266	IN	NS	dns1.shenzhen.baidu.com.

;; ADDITIONAL SECTION:
dns1.shenzhen.baidu.com. 86266	IN	A	192.168.34.102

;; Query time: 4 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 16:35:25 2019
;; MSG SIZE  rcvd: 110

 實現DNS服務轉發:

原理:要訪問www.magedu.com網址,先在本地的緩存DNS服務器尋找,若是就能夠訪問,若是沒有,根將DNS服務器的緩存放入到北京,將北京做爲一個轉發(做爲指望的DNS轉發服務器),上海和重慶直接指向北京尋找答案,節約了廣域上的網絡帶寬。

only用法:客戶端發起請求在A服務器上找,A服務器轉發到B(103IP)的服務器上,B服務器返回最終的結果,若是B服務器沒有不去詢問根。

建立一個轉發服務器B(192.168.34.103),將/etc/named.rfc1912.zones配置文件進行修改:

[root@centos7-1~]#vim /etc/named.rfc1912.zones
zone "wang.com" {
        type master;
        file "wang.com.zone";
};

在/var/named/目錄下建立一個wang.com.zone配置文件:

vim /var/named/www.wang.com.zone
$TTL 1D
@ IN SOA dns1 admin ( 1 1H 1M 1D 3H )
   NS dns1
dns1 A 192.168.34.102
www  A 6.6.6.6

注意將 wang.com.zone配置文件的所屬組改成named,權限改成640  

[root@centos7-1named]#ll
total 32
-rw-r--r-- 1 root  root   230 Nov  6 22:53 192.168.34.zone
-rw-r----- 1 root  named  296 Nov  7 15:35 baidu.com.zone
drwxrwx--- 2 named named   23 Oct 31  2018 data
drwxrwx--- 2 named named   31 Nov  7 16:21 dynamic
-rw-r----- 1 root  named 2281 May 22  2017 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 Dec 15  2009 named.loopback
-rw-r----- 1 root  named  198 Nov  7 15:59 shenzhen.baidu.com.zone
drwxrwx--- 2 named named    6 Oct 31  2018 slaves
-rw-r--r-- 1 root  root    94 Nov  7 20:33 wang.com.zone
[root@centos7-1named]#chgrp named wang.com.zone 
[root@centos7-1named]#chmod 640 wang.com.zone 

配置完以後從新加載DNS服務:

dndc reload

在主服務器A上修改相應的配置文件,/etc/named.conf

[root@ansible~]#vim /etc/named.conf
options {
//      listen-on port 53 { localhost; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//      allow-query     { any; };
   allow-transfer { 192.168.34.103; }; forward only ; 將轉發服務器的IP地址寫到主服務器上面,保證只轉發此IP地址 forwarders {192.168.34.103;}; dnssec-enable no; 將此兩個功能關掉 dnssec-validation no; 關掉此功能 

配置完以後從新加載DNS服務:

rndc  reload  從新加載DNS服務

最後在客戶端C上驗證轉發功能:

[root@centos6~]#dig www.wang.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wang.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41040
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

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

;; ANSWER SECTION: www.wang.com. 86063 IN A 6.6.6.6

;; AUTHORITY SECTION:
wang.com.		86063	IN	NS	dns1.wang.com.

;; ADDITIONAL SECTION:
dns1.wang.com.		86063	IN	A	192.168.34.102

;; Query time: 2 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 20:54:11 2019
;; MSG SIZE  rcvd: 81

查看當前沒有配置的域名,此時客戶端發起請求,A服務器上沒有,就會轉發到服務器B IP地址爲103機器上,此時B服務器若是有網絡,就會在網上尋找答案

[root@centos6~]#dig www.wange.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wange.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28947
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

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

;; ANSWER SECTION:
www.wange.com. 7200 IN A 93.90.145.101此時IP地址103在網上返回的答案

;; Query time: 2356 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 21:36:54 2019
;; MSG SIZE  rcvd: 47

第二種方式服務器轉發方式:

first用法:當客戶端去訪問服務器A時,此時A不知道結果會轉發給B,B不知道結果,此時A會本身去詢問根去反饋結果:

(1)在服務器A上寫配置文件/etc/named.conf,將端口轉發給服務器B(103IP地址)

[root@ansible~]#vim /etc/named.conf
options {
//      listen-on port 53 { localhost; };
        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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
//      allow-query     { any; };
        allow-transfer  { 192.168.34.103; };
 forward first ; forwarders {192.168.34.103;}; 

從新加載A服務器的DNS服務:

rndc reload

(2)將服務器B的網絡斷掉,此時B沒法訪問網絡。  

(3)在客戶端進行訪問當前的一個未知的網址,A主機若是不知道,先會轉發給B服務器,B服務器不知道結果,A服務器主動去網上尋找答案:

[root@centos6~]#dig www.wange.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.wange.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52394
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 10

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

;; ANSWER SECTION:
www.wange.com.		7200	IN	A	93.90.145.101

;; AUTHORITY SECTION:
wange.com.		172755	IN	NS	ns01.crystone.se.
wange.com.		172755	IN	NS	ns05.crystone.se.
wange.com.		172755	IN	NS	ns03.crystone.se.
wange.com.		172755	IN	NS	ns04.crystone.se.
wange.com.		172755	IN	NS	ns02.crystone.se.

;; ADDITIONAL SECTION:
ns01.crystone.se.	884	IN	A	194.58.193.60
ns01.crystone.se.	884	IN	AAAA	2a01:3f1:460::53
ns02.crystone.se.	86382	IN	A	185.42.137.108
ns02.crystone.se.	884	IN	AAAA	2a01:3f0:400::60
ns03.crystone.se.	884	IN	A	194.58.193.124
ns03.crystone.se.	86382	IN	AAAA	2a01:3f1:460:1::53
ns04.crystone.se.	884	IN	A	185.42.137.126
ns04.crystone.se.	884	IN	AAAA	2a01:3f0:400::190
ns05.crystone.se.	884	IN	A	93.90.145.25
ns05.crystone.se.	884	IN	AAAA	2a06:1003:1:1::5d5a:9119

;; Query time: 2247 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 21:50:10 2019
;; MSG SIZE  rcvd: 373

智能DNS 

 

 

咱們來準備兩臺主機,A主機的有兩個網卡,一個IP地址是192.168.34.101,第二個網卡地址是172.18.0.7:讓其都能訪問網絡。 

B主機上也有兩個網卡,將IP地址分別設置爲192.168.34.105h和172.18.0.6

在A主機上製做三個區域庫文件,分別爲北京、上海、深圳,複製過程當中,注意保留屬性

[root@ansiblenamed]#vim baidu.com.zone.bj

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
shenzhen  NS    dns3
dns1    A   192.168.34.101
dns2    A   192.168.34.103
dns3    A   192.168.34.102

www    CNAME    webs
webs   A      6.6.6.6

 複製過程當中注意保留文件原有屬性:

[root@ansiblenamed]#cp -p  baidu.com.zone.bj baidu.com.zone.sh

 製做上海數據庫文件:

[root@ansiblenamed]#vim baidu.com.zone.sh

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
shenzhen  NS    dns3
dns1    A   192.168.34.101
dns2    A   192.168.34.103
dns3    A   192.168.34.102

www    CNAME    webs
webs   A      7.7.7.7

製做深圳數據庫文件:

[root@ansiblenamed]#cp -p  baidu.com.zone.sh baidu.com.zone.sz
[root@ansiblenamed]#vim baidu.com.zone.sz

$TTL 1D
@       IN SOA  dns1  admin.baidu.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
shenzhen  NS    dns3
dns1    A   192.168.34.101
dns2    A   192.168.34.103
dns3    A   192.168.34.102

www    CNAME    webs
webs   A      8.8.8.8

定義ACL

[root@ansiblenamed]#vim /etc/named.conf
acl beijingnet {
        192.168.34.0/24;  北京訪問網段
};
acl shanghainet {
        172.18.0.0/16;  上海訪問網段
};
acl shenzhennet {
        any;   含義是剩餘其餘的網段均可以訪問
};

啓用view,關聯ACL和zone:

方法一:直接調用配置文件/etc/named.rfc1912.zones,並將默認的zone配置文件寫入此view配置內:  

[root@ansiblenamed]#vim /etc/named.conf
view view_beijing {
        math_clients {beijingnet;};
        include "/etc/named.rfc1912.zones";     

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

在配置文件中將以前的規劃baidu.com.zone.bj配置文件寫入:

vim /etc/named/rfc1912.zones
zone  "baidu.com" {
        type master;
        file "baidu.com.zone.bj";
};

方法二:將默認的/etc/named.conf下面的zone配置文件寫入到/etc/named.rfc1912.zones配置文件中,起到包含做用:

將zone的配置文件包含在include  "/etc/named.rfc1912.zones"

 下來,咱們定義三個/etc/named.rfc1912.zones配置文件:

(1)將第一個定義好的配置文件複製一份,用來定義beijing和shenzhen的配置文件,複製時,注意屬性:

cp -p /etc/named.rfc1912.zones  /etc/named.rfc1912.zones.shanghai

cp -p /etc/named.rfc1912.zones  /etc/named.rfc1912.zones.shenzhen

而後修改shanghai的配置文件:

[root@ansiblenamed]#vim /etc/named.rfc1912.zones.shanghai 
zone  "baidu.com" {
        type master;
        file "baidu.com.zone.sh";
};

編寫shenzhen的配置文件:

[root@ansiblenamed]#vim /etc/named.rfc1912.zones.shenzhen 
zone  "baidu.com" {
        type master;
        file "baidu.com.zone.sz";
};

(2)咱們接着來修改/etc/named.conf主配置文件內容:

[root@ansiblenamed]#vim /etc/named.conf 
view view_beijing {
        match-clients {beijingnet;};
        include "/etc/named.rfc1912.zones";     
};

view view_shanghai {
        match-clients {shanghainet;};
        include "/etc/named.rfc1912.zones.shanghai";     
};

view view_shenzhen {
        match-clients {shenzhennet;};
        include "/etc/named.rfc1912.zones.shenzhen";     
};

(3)定義完以後就加載DNS服務器:

[root@ansiblenamed]#rndc reload
server reload successful

 (4)開始驗證不一樣網址對應的不一樣區域:

192.168.34.0/24網段是北京區域

127.18.0.0/16是上海區域

其餘地址是屬於深圳區域

驗證一:在主機B上dig,獲取的的結果是6.6.6.6,返回的就是北京的IP地址信息

[root@centos6~]#dig www.baidu.com   #在B主機上dig,此時B主機上的IP地址默認是192.168.34.105,是北京的網址

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

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

;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com. webs.baidu.com. 86400 IN A 6.6.6.6

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.
baidu.com.		86400	IN	NS	dns2.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 1 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov  7 23:33:05 2019
;; MSG SIZE  rcvd: 136

驗證二:在主機B上dig www.baidu.com @172.18.0.7,輸入對方的IP地址,會從本機去訪問對方,從而獲取當前的區域信息:

得知 7.7.7.7,返回上海區域信息

[root@centos6network-scripts]#dig www.baidu.com @172.18.0.7

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com @172.18.0.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31631
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

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

;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com. webs.baidu.com. 86400 IN A 7.7.7.7

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns1.baidu.com.
baidu.com.		86400	IN	NS	dns2.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 3 msec
;; SERVER: 172.18.0.7#53(172.18.0.7)
;; WHEN: Thu Nov  7 23:41:20 2019
;; MSG SIZE  rcvd: 136

 驗證三:

 在配置相關數據的主機A上dig一個其餘的IP地址,獲得最終獲得8.8.8.8的IP地址,返回的的是深圳的地址

[root@ansiblenetwork-scripts]#dig www.baidu.com @127.0.0.1

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

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

;; ANSWER SECTION:
www.baidu.com.		86400	IN	CNAME	webs.baidu.com.
webs.baidu.com.		86400	IN	A	8.8.8.8

;; AUTHORITY SECTION:
baidu.com.		86400	IN	NS	dns2.baidu.com.
baidu.com.		86400	IN	NS	dns1.baidu.com.

;; ADDITIONAL SECTION:
dns1.baidu.com.		86400	IN	A	192.168.34.101
dns2.baidu.com.		86400	IN	A	192.168.34.103

;; Query time: 2 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Nov 07 23:46:12 CST 2019
;; MSG SIZE  rcvd: 147
相關文章
相關標籤/搜索