Linux 篇| DNS服務器

DNS服務器

DNS介紹:

DNS( Domain Name System)是“域名系統”的英文縮寫,提供域名解析服務。即將域名(網址)和IP地址進行相互轉換,使用TCP和UDP協議的53端口。DNS屬於應用層協議。

Linux 篇| DNS服務器

一.DNS基本概念

1.完全限定域名FQDN:Full Qualified Domain Name

  • 即每個域在全球網絡都是唯一的;另外值得提到的一點是:域並不是指諸如www.google.com這樣的域名,而google.com纔是域,請看下面域的空間結構。
  • FQDN的組成:主機名+域名。
    如www(主機名是www).baidu.com(域名是baidu.com)
  • 還需要注意的是:域名和IP不是完全一一對應的,即一個域名對應一個IP地址。其實一個域名可以對應多個IP地址;多個域名可以對應一個IP地址。目的很多,如高效率、冗餘等。

2.域的空間結構

  • 域分類:根域,頂級域,二級域,三級域。
  • 域結構:根域最大,頂級域次之,二、三級以此類推

Linux 篇| DNS服務器

(1) 根域(.)

表示爲“.”,全球13組根域名服務器以英文字母A到M依序命名,域名格式爲“字母.root-servers.net”。

我們訪問域名,根域默認不顯示。例如:百度真實域名“www.baidu.com.”,而不是“www.baidu.com”

(2) 頂級域(如.com)

頂級域(Top Level Domain,簡稱TLD)分爲三類

1> 通用頂級域:如 .com(商業機構) .org(非營利性組織) .net(網絡服務機構)等
2> 國家頂級域:如 .cn(中國) .uk(英國) .us(美國) .jp(日本)
3> 反向域(基礎建設頂級域):.arpa,即從IP到FQDN(域名)的反向解析

(3) 二級域名(如baidu.com)

baidu.com
google.com
taobao.com
注意:二級域名是taobao.com,不是taobao

(4) 三級域名(如www.baidu.com)

www: www.baidu.com
mail: mail.aliyun.com

3. DNS服務器查詢的類型

  • 遞歸查詢:客戶端僅發出一次請求,讓DNS服務器去查詢返回結果;
  • 迭代查詢:要發出多次請求去分別查詢不同的DNS服務器;
總結:
從客戶端到本地DNS服務器是屬於遞歸查詢,而DNS服務器之間的交互查詢就是迭代查詢。

4.DNS域名解析方式

(1) 正向解析

將FQDN(域名)轉化爲IP的解析。

例如:www.mage.com(域名) 轉化爲 192.168.36.7(IP)

Linux 篇| DNS服務器

(2) 反向解析

將IP轉化爲FQDN(域名)的解析。

例如:7.36.168.192.in-addr.arpa.(IP) 轉化爲 www.magedu.com(域名)

Linux 篇| DNS服務器

5. DNS服務器類型

  • 主DNS服務器:負責解析至少一個域。
  • 輔助(從)DNS服務器:負責解析至少一個,是主DNS服務器的輔助。
  • 緩存DNS服務器:不負責解析域,只是緩存域名解析結果。
  • 權威DNS服務器:存放域名和IP地址相對應的記錄信息

6. DNS的監聽端口

TCP協議53端口實現DNS主、從同步
UDP協議53端口實現DNS解析,及主、從同步。


二.DNS的域名解析過程

三.DNS和BIND

  • Linux使用DNS服務,需要安裝軟件包,有:
    • bind:字符界面、配置簡單
    • powerdns:WEB界面、配置較複雜
    • nbound:CentOS7系統新出現的DNS服務軟件

下面主要是bind軟件的說明

  • 查看系統已有BIND程序包:rpm -ql bind
  • 查看BIND相關程序包:yum list all bind*
    • bind:服務器軟件包
    • bind-libs:相關庫
    • bind-utils:客戶端
    • bind-chroot: /var/named/chroot/
安裝bind後,會新生成一個“named用戶”和“named用戶組”,用來專門啓用、管理bind服務(DNS服務)。查看“named用戶”命令“cat /etc/passwd”,家目錄在“/var/named”,shell類型是“/bin/false”。安裝bind軟件包後,解壓的“/var/named/named.ca”文件存放了互聯網中13個根服務器,幫助提供域名解析。  

安裝:yum -y install bind
啓動服務:systemctl start named
開機自啓:systemctl enable named
查看DNS服務使用的端口是TCP和UDP的53,命令是ss -ntlup
查看DNS進程所使用的用戶:"ps aux|grep named"會看到是“named用戶”  
DNS數據庫路徑:/var/named  
DNS服務配置文件:/etc/named.conf

修改DNS服務配置文件後,生效有兩種辦法:方法一,重啓named服務;方法二,加載配置文件而不關掉服務在啓動服務,這樣避免對當前正在訪問的用戶產生干擾。生效命令:rndc reload 或者 systemctl reload named

1.DNS服務配置文件:/etc/named.conf

  • 每行以分號“;”結尾
  • 註釋行用兩個斜線“//”
  • “options”爲選項,配置DNS很多需要在選項裏修改
  • “logging”爲DNS的日誌
  • “zone”爲DNS的區域信息。用來解析“域名和域名存放在某個DNS數據庫之間的映射關係”。

(1) “options”爲選項

1> listen-on port 53 { XXX };

  • 上面行表示53段口綁定本機的哪個IP地址進行DNS解析,可把“XXX”配置成192.168.36.7,表示53端口綁定本機的192.168.36.7進行DNS解析服務。
  • 表示本機所有IP地址:把“XXX”配置成“localhost”,或者註釋此行(行首加兩個斜線)。

2> allow-query { localhost; };

  • 上面行表示“允許誰向我查詢”。“localhost”表示只允許本機查詢。
  • 想要其它電腦通過本機查詢,即DNS解析,就把“localhost”改爲:
    • “對方網段”---適用局域網進行DNS解析
    • “對方網絡”---適用局域網進行DNS解析
    • “any”--------適用互聯網進行DNS解析
      注意:any表示所有,把此行用兩個斜線註釋,也表示所有主機查詢

(2)"zone"爲區域

  • 解析 “域名” 和 “域名存放在某個DNS數據庫(就是一個文件)” 之間的映射關係
    例如有:域名(magedu.com)、DNS數據庫名(magedu.com.zone)。他們兩個一一對應,這種映射關係就寫到“zone”裏。(說明:DNS數據庫magedu.com.zone存放了magedu.com域名對應的IP地址)
  • zone區域分爲:正向區域(正向解析) 和 反向區域(反向解析)
    
    域名 和 反向區域數據庫 的映射關係:
    例:36.168.192.in-addr.arpa.(域名) 和 192.168.36.zone(數據庫名)

域名 和 正向區域數據庫 的映射關係:
例:magedu.com(域名) 和 magedu.com.zone(數據庫名)

四.DNS測試工具

除了系統提供的一些名稱解析命令外,DNS的客戶端軟件包“bind-utils”當中提供了一些測試命令,這些命令是:dig、host、nslookup。

1. 測試工具

1. dig用於測試dns系統,因此,不會查詢hosts 文件進行解析;

    1> dig命令的語法: dig[-t type]name[@SERVER][query options]

        查詢選項:+[no]trace 跟蹤解析過程 / +[no]recurse 進行遞歸解析

        測試反向解析: dig -x IP@SERVER

        模擬區域傳送: dig -t axfr ZONE_NAME @SERVER

    2> 示例1:dig www.baidu.com

        顯示結果中:

        DNS是否解析成功,查看“ANSWER SECTION”部分
        提供DNS解析主機的IP地址,查看“顯示結果底部SERVER行”

    3> 示例3:dig www.magedu.com @192.168.36.7  
        本機向192.168.36.7請求解析www.magedu.com(適用臨時測試)
        顯示結果中:

        可看到www.magedu.com的權威服務器是101.200.188.230,
        因爲域名和IP的對應關係存放在此服務器,而192.168.36.7沒有
        存放對應關係,所以不是www.magedu.com的權威服務器。

        如果192.168.36.7是www.magedu.com的權威服務器,在顯示結果中,
        上面部分的“flags行”後面,會出現“aa”

2. host命令語法:  host [-a] name [SERVER]

    示例1:host www.baidu.com

    示例2:host www.baidu.com 192.168.36.7 
            本機向192.168.36.7請求解析www.baidu.com(適用臨時測試)

3. nslookup [-option][name |-] [server]

        交互式模式:

            nslookup>

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

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

        NAME:要查詢的名稱;

檢查命令

檢查主DNS服務器的配置文件是否錯誤:named-checkconf
說明:檢查/etc/named.conf文件和/etc/named.rfc1912.zones文件

檢查區域數據庫的文件是否錯誤:named-checkzone 域名 域名對應數據庫的文件
例如:named-checkzone magedu.com /var/named/magedu.com.zone
說明:檢查magedu.com域對應的數據庫文件magedu.com.zone是否有錯誤

2. rndc命令

rndc --> rndc (953/tcp端口)

格式:rndc COMMAND

常用COMMAND如下:
reload: 重載主配置文件和區域解析庫文件
reload zonename: 重載區域解析庫文件
retransfer zonename: 手動啓動區域傳送,而不管序列號是否增加
notify zonename: 重新對區域傳送發通知(“推”同步)
reconfig: 重載主配置文件
querylog: 開啓或關閉查詢日誌文件/var/log/message
trace: 遞增debug一個級別(級別調試的越高,跟蹤日誌就更詳細)
trace LEVEL: 指定使用的級別(級別越高,跟蹤日誌就更詳細)
notrace:將調試級別設置爲 0
flush:清空DNS服務器的所有緩存記錄

五.資源記錄(RR)

  • 資源記錄:Resource Record, RR
  • 區域(zone)解析(數據)庫:由衆多RR組成
  • 記錄類型:A, AAAA, PTR, SOA, NS, CNAME, MX
  • 作爲一個DNS區域數據庫文件,必須有SOA、A、NS記錄,其他記錄根據企業情況來加
SOA:Start Of Authority,起始授權記:
    一個區域解析庫有且僅能有一個SOA記錄,必須位於解析庫的第一條記錄

A:internet Address,作用:域名正向解析成IPv4地址

AAAA:作用:域名正向解析成IPv6地址

PTR:PoinTeR,作用:IPv4地址反向解析成域名  

NS:Name Server,專用於標明當前區域的DNS服務器

CNAME : Canonical Name,別名記錄

MX:Mail eXchanger,郵件交換器

TXT:對域名進行標識和說明的一種方式,一般做驗證記錄時會使用此項。
    如:SPF(反垃圾郵件)記錄,https驗證等

1. 資源記錄定義的格式

語法:name [TTL] IN rr_type value

說明:
(1)name:表示主機名。如blog.magedu.com.默認magedu.com.可不寫,因爲域名就是它,而資源記錄是域名對應數據庫,當中的某一行。“name”寫blog會默認爲blog.magedu.com.(注意blog後面不可加“.”,不然表示結束)  
(2)TTL:表示“DNS緩存時長,一般TTL會統一設置,如“$TTL 1D”表示1天(全局繼承);也可在每行記錄的“TTL”位置自己設置時間,默認單位是秒
(3) IN:表示Internet(互聯網)
(4) rr_type:表示記錄的類型
(5) value:記錄對應的值。如A記錄對應的值是IP地址

注意:
(1) @可用於引用當前區域(即域名)的名字。如 :magedu.com.(@常用在SOA記錄的“name”位置)
(2) 同一個名字可以通過多條記錄定義多個不同的值;此時DNS服務器會以輪詢方式響應
(3) 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機

2. SOA記錄

SOA記錄示例:@ TTL IN SOA dns1.magedu.com.

name: 當前區域的名字,例如“magedu.com.”或者用“@”表示當前區域名字

value(值): 有多部分組成。如下

(1) 這個域的主DNS服務器的域名。如dns1.magedu.com.

注意:
     配置SOA記錄後,必須有一條A記錄,因爲SOA的值,即域名,要有對應的IP。
     (對於SOA記錄,任何一個SOA記錄後面的服務器名字,都應該在後續有一個A記錄)

示例:DNS區域數據庫文件中:SOA記錄和對應的A記錄
    SOA:@ TTL IN SOA dns1(“.magedu.com.”不用寫,默認它存在)
      A:master TTL IN A IP地址(如192.168.36.7)

(2) 這個域的管理員的郵箱地址。注意地址中不能使用@符號,一般用.替換。
    示例:admin.magedu.com(對應郵箱是[email protected])

(3) 當前數據庫和從DNS服務器的同步策略
    同步策略類型:推和拉

  1>推:以主服務器爲主,當主服務器發生變化,推送消息給從服務器

        數據庫版本號寫在SOA記錄的value(值)後面的括號裏的第一個位置。
        例:@ TTL IN SOA dns1 (201904221015)

    說明:
        觸發條件:主服務器的數據庫更新。
        當數據庫的版本號(必須是整數)發生變化,視爲更新;
        而不是數據庫內容發生變化。

  2>拉:以從服務器爲主,主動問主服務器是否發生變化

        輪詢的時間間隔寫在版本號後面,默認單位是秒。
        也可寫其他時間,如10m(10分鐘)。表示每10分鐘詢問一次。
        例:@ TTL IN SOA dns1 (201904221015 10m)

    說明:
        以輪詢(過一會問一下,過一會問一下)的方式,
        詢問主服務器的數據庫文件是否發生變化。

  3>重試時間間隔:

        重試時間間隔寫在輪詢間隔後面,默認單位是秒。
        例:@ TTL IN SOA dns1 (201904221015 10m 2m)

    說明:
        假如輪詢間隔是10分鐘。當第一次輪詢,沒有同步,
        又不想等一下次輪詢(即不想等10分鐘後在詢問),
        可設置重試時間間隔,默認單位是秒。如設置2分鐘。
        即第一次沒結果後,2分鐘後在詢問主DNS數據庫是否變化(版本號是否改變)。

  4>從DNS服務器對應數據庫記錄的過期時長

        從服務器數據庫記錄的過期時長,寫在重試時間間隔後面,默認單位是秒。
        例:@ TTL IN SOA dns1 (201904221015 10m 2m 1D)-->"1D"爲1天

    說明:
        如果第一次輪詢,數據庫沒有同步,
        第二次重試時間及2分鐘後也沒有同步,
        那麼會認爲從DNS服務器的數據庫記錄老舊

  5>不存在的記錄的緩存時長

        不存在的記錄的緩存時長,
        寫在“從DNS服務器的數據庫記錄,的過期時長”後面,默認單位是秒。
        例:@ TTL IN SOA dns1 (201904221015 10m 2m 1D 6H)-->"6H"爲6小時

    說明:
        當訪問某個域名,www寫成wwwww,用戶的本地DNS服務器會返回此記錄不存在。
        因爲數據庫沒有這樣的記錄。但不能不管,因爲有可能其他人犯這樣的錯誤,
        所以設置不存在記錄的緩存時長,過了時間後,就會清除。

3. NS記錄

  • 由NS記錄可以知道網絡中有幾個DNS服務器
  • NS記錄:指明當前區域裏,誰是主DNS服務器、誰是從DNS服務器
  • name: 當前區域的名字,例如“magedu.com.”或者用“@”表示當前區域名字
  • value(值): 當前區域的某DNS服務器的名字,例如ns2.magedu.com
注意:

(1)對於NS記錄,任何一個ns記錄後面的服務器名字,都應該在後續有一個A記錄

    示例:
        NS:magedu.com. TTL IN NS ns2.magedu.com.
        A:ns2.magedu.com. TTL IN A IP地址(如192.168.36.8)

(2)相鄰的兩個資源記錄的name相同時,後續的可省略

(3)一個區域可以有多個NS記錄

    例如:
    NS記錄
        magedu.com. IN NS ns1.magedu.com.(TTL沒寫,就繼承全局的TTL)
        magedu.com. IN NS ns2.magedu.com.(TTL沒寫,就繼承全局的TTL)
    對應的A記錄
        ns1.magedu.com. TTL IN NS IP地址
        ns2.magedu.com. TTL IN NS IP地址

    從上面的NS記錄可以知曉,網絡中有三個DNS服務器,分別是:
        主DNS服務器:magedu.com
        從DNS服務器:ns1.magedu.com
        從DNS服務器:ns2.magedu.com

4. A記錄

  • name: 某主機的FQDN(域名),例如:www.magedu.com.
  • value: 主機名對應主機的IP地址

示例1:

A記錄示例:
    www.baidu.com. TTL IN A IP地址
    也可以寫成:
    www TTL IN A IP地址
    (因爲baidu.com.會默認存在,因爲這是baidu.com域的數據庫文件)

示例2:

通過A記錄可以實現:一個域名對應多個IP地址。例如一個網站的頁面由3個服務器提供,並且內容一致。當一個服務器壞掉,不影響用戶訪問網頁的解析服務,因爲有另一個服務器。

在magedu.com區域的DNS數據庫文件裏,添加A記錄,使得一個域名對應多個IP地址,進行解析,實現冗餘功能。

webserver TTL IN A 192.168.1.2

webserver TTL IN A 192.168.1.3

webserver TTL IN A 192.168.1.4

示例3:泛域名解析

泛域名概念:當用戶訪問www.baidu.com時,把www寫成wwwwwww,通過設置泛域名即可把本域(這裏是baidu.com)寫錯的域名指定某一web主機的web頁面,這裏起個名字叫“錯誤頁面”。目的是:達到不會訪問不了,在“錯誤頁面”指定本域首頁  

泛域名和上面的某某記錄在一個文件,格式是:

*(表示所有) TTL IN A IP地址

示例4:指定訪問二級域名

直接寫二級域名,有些網站訪問不了。如www.boc.cn(中國銀行),不寫www訪問不了。

解決方法:
和上面的某某記錄在一個文件,格式是:
    @ TTL IN A IP地址

記得重新加載DNS的配置文件“rndc reload”

示例5:GENERATE語句

功能:生成多條A記錄。
    如:訪問server1,返回結果是1.1.1.1;訪問server2,返回結果是1.1.1.2;訪問server100,返回結果是1.1.1.100等等,如下面的示例

和上面的某某記錄一樣,書寫在同一個文件,格式是:
    $GENERATE 1-100 server$(名稱) A 1.1.1.$(IP地址)

    添加上面記錄後,修改版本號,使用“rndc reload”生效,在DNS客戶端使用“dig 域名”驗證

5. 別名記錄CNAME

  • name: FQDN(域名)的別名名稱
  • value: 真正FQDN(域名)的名字
  • 別名記錄經常用於CDN加速。
  • 設置別名,可以把本機解析委託給其他主機進行解析
    • 例如:www TTL IN CNAME dns.aliyun.com(將本機解析,委託主機名是“dns.aliyun.com”的解析)
在企業裏,部署的域名其實很長,通過設置別名,讓用戶更容易訪問,如下:

域名:bj-tam-web-node1-100-23.magedu.com
說明:北京拼音字母首寫--天安門區域拼音字母首寫--web服務器--節點1--IP地址的後兩位--域名

magedu.com域名的DNS數據庫文件中的別名記錄,如下:
www TTL IN CNAME bj-tam-web-node1-100-23

實現:訪問www.magedu.com其實是訪問bj-tam-web-node1-100-23.magedu.com

注意

一般設置某DNS服務器的A記錄,添加兩個A記錄,對應IP地址不同,可實現均衡負載的作用。而且,在主配置文件,添加一條別名記錄,用戶訪問DNS服務器更簡單。而管理員最好訪問DNS服務器真正的名字,因爲存在節點、地域等標識,可以清楚知道是哪臺DNS服務器。

6. MX 郵件記錄

  • MX: Mail eXchanger,郵件交換器
  • 郵件發送需要域內DNS服務器的幫助,根據DNS配置,找到MX記錄,就找到郵件轉發器。
  • name: 當前區域的名字
  • value: 當前區域的某郵件服務器(smtp服務器)的主機名
  • 一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-
    99),表示此服務器的優先級;數字越小優先級越高
    • 例如:
      magedu.com. TTL IN MX 10 mx1.magedu.com.
      magedu.com. TTL IN MX 20 mx2.magedu.com
  • 注意: 對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有一個A記錄
    查詢某域名的郵件服務器:dig -t mx 二級域名

六.DNS服務器的ACL

1. 概述

  • bind(DNS服務器)中基礎的安全相關的配置:
    • acl: 把一個或多個地址歸併爲一個集合,並通過一個統一的名稱調用
  • bind有四個內置的acl:none,any,localhost,localnet
  • 注意:只能先定義ACL後使用;因此一般定義在配置文件中,處於options模塊的前面
總結:
在DNS服務器裏,內置了一些訪問控制列表(ACL)。功能:定義地址集合。系統自帶的ACL如localhost(本機所有IP)、any(所有任意IP0)、none(沒有一個IP)、localnet(DNS服務器屬於哪個網段,這個網段就是localnet)  

2. 格式和示例

格式:
acl acl_name {
ip;
net/prelen;
……
};

示例:
acl mynet {
172.16.0.0/16;
10.10.10.10;
};

3. 訪問控制的指令

  • allow-query {}: 允許查詢的主機;白名單
  • allow-transfer {}:允許區域傳送的主機;白名單
  • allow-recursion {}: 允許遞歸的主機,建議全局使用
  • allow-update {}: 允許更新區域數據庫中的內容

4. 示例

只在局域網使用DNS,並且只給局域網的某些網段提供解析服務

(1)打開文件“/etc/named.conf”

(2)在options模塊的前面,添加ACL,如下:
acl lannet(局域網名) {  
    192.168.238.0/24(網段);
    192.168.234.0/24(網段);
};

(3)在options模塊的“allow-query”添加局域網名和本機的所有IP(不添加本機所有IP,你自己就不會解析自己),如下:
allow-query { lannet;localhost; };

(4)使配置生效
rndc reload

七.智能CDN

1. 概述

CDN:Content Delivery Network內容分發網絡
提供CDN服務商:藍汛,網宿,帝聯等都是專做CDN服務

CDN又稱爲智能DNS,意思是:上海用戶查詢網站A(存放網站A的服務器上海和北京都有),“網站A公司”的主DNS服務器會讓“存放在上海的子DNS服務器”查詢上海用戶的請求,返回給客戶端結果,即離客戶端最近的DNS服務器給客戶端解析。注意:此公司在北京和上海的服務器上,網頁內容都一致。  

如果你的公司在全國各地沒有機房,就無法進行DNS解析和提供WEB頁面的瀏覽。所以一般是大公司(如阿里)纔會搭建智能DNS,大多數普通的公司,都是購買大公司的服務,來實現公司的智能DNS。即:把WEB文件放到租用的CDN節點服務器上(CDN服務商的電腦),並定義域名的別名,別名的IP地址是租用的CDN節點服務器的IP地址。  

2. 用戶訪問具有智能DNS網站的過程:

Linux 篇| DNS服務器

1.將我的網站文件放到租用CDN機房的某些服務器上,並定義別名
2.用戶訪問http:www.a.com,請求發送到用戶網絡的本地DNS服務器(LDNS)
3.本地DNS服務器(LDNS)查詢有沒有http:www.a.com的IP地址,沒有就從根服務器進行迭代查詢
4.查詢到a.com服務器的權威服務器(網站授權DNS),而權威服務器不會把IP地址給用戶,而是返回域名的別名(www.a.tbcdn.com)
5.本地DNS服務器(LDNS)就認爲http:www.a.com是http:www.a.tbcdn.com的別名,就會查詢http:www.a.tbcdn.com的IP地址
6.http:www.a.tbcdn.com其實是CDN服務商的服務器(DNS調度系統),這個服務器有智能功能,裏面記錄了全國或全世界,各地對應的IP地址。收到北京用戶的請求後,會返回北京CDN對應的IP地址(2.2.2.2),收到上海用戶的請求後,會返回上海CDN對應的IP地址(9.9.9.9)
7.北京用戶知道IP後,就會請求在北京CDN的節點服務器(2.2.2.2),改服務器返回內容給用戶
8.當租用CDN服務器上的網頁沒來得及更新數據,北京用戶訪問時,北京CDN服務器會請求WEB頁面的源服務器,更新數據後在返回給北京的用戶。

3. 示例:企業網站內部實現智能CDN功能(即下面的實驗6)

八.壓力測試

  • /root/bind-xxx/contrib/scripts
  • 編譯壓力測試工具

    [root@centos7dns ~]# cd /root/bind-xxx/contrib/queryperf
    [root@centos7dns ~]# ./configure
    [root@centos7dns ~]# make
    [root@centos7dns ~]# cp queryperf /usr/local/bind9/bin
    [root@centos7dns ~]# queryperf -h

  • 壓力測試:

    [root@centos7dns ~]# vim test.txt

    www.magedu.com A
    magedu.com NS
    magedu.com MX
    pop3.magedu.com A
    web.magedu.com A

    [root@centos7dns ~]# queryperf -d test.txt -s 127.0.0.1

  • 打開日誌功能:

    [root@centos7dns ~]# rndc querylog
    [root@centos7dns ~]# rndc status
    [root@centos7dns ~]# queryperf -d test.txt -s 127.0.0.1
    [root@centos7dns ~]# wc -l /var/log/message

九. DNS排錯

  • [root@centos7dns ~]# dig A example.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> A example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30523
...
SERVFAIL:The nameserver encountered a problem while processing the query. 
* 可使用dig +trace排錯,可能是網絡和防火牆導致  
  • NXDOMAIN:The queried name does not exist in the zone.

    可能是CNAME對應的A記錄不存在導致

  • REFUSED:The nameserver refused the client's DNS request due to policy restrictions.

    可能是DNS策略導致

  • NOERROR不代表沒有問題,也可以是過時的記錄
  • 查看是否爲權威記錄,flags:aa標記判斷
  • 被刪除的記錄仍能返回結果,可能是因爲*記錄存在
  • 如:*.example.com. IN A 172.25.254.254
  • 注意“.”的使用
  • 避免CNAME指向CNAME記錄,可能產生迴環

    test.example.com. IN CNAME lab.example.com.
    lab.example.com. IN CNAME test.example.com.

  • 正確配置PTR記錄,許多服務依賴PTR,如sshd,MTA
  • 正確配置輪詢round-robin記錄

十.實驗

企業環境中,需要把DNS服務用到的端口在防火牆裏信任。做實驗把防火牆、selinux關掉就可以了。

在防火牆關閉TCP協議53端口:iptables -A INPUT -p tcp --dport 53 -j REJECT
在防火牆關閉UDP協議53端口:iptables -A INPUT -p udp --dport 53 -j REJECT
清空防火牆全部配置:iptables -F
  • 主、從DNS服務器可以實現冗餘備份、高效率等功能
  • 主、從DNS服務器之間是同步的,兩者之間的數據需一致
  • 主DNS服務器:負責更新(主要)數據、對用戶提供解析,管理這個域。可以帶多個從DNS服務器。
  • 從DNS服務器:負責同步(主要)數據、對用戶提供解析,備份這個域。主DNS壞掉,從DNS還可以繼續工作,實現冗餘。

1. 正向解析主服務器

(1) 安裝DNS包

yum -y install bind

(2) 啓動DNS服務

systemctl start named  

(3) 修改DNS主配置文件/etc/named.conf

vim /etc/named.conf  
1> 註釋以“listen-on”“allow-query”開頭的兩行,即在這兩行前面加兩個斜線  

2> 安全設置:
    指定哪些從DNS服務器可以同步主DNS服務器的數據,可設置多個
    示例:在allow-query的上一行添加
        allow-transfer {從DNS服務器的IP地址;};

    如果不設置此安全命令,在DNS客戶端使用“dig -t axfr magedu.com(主域名) @DNS服務器IP地址”可以直接看到DNS服務器的記錄。

(4) 打開專門存放區域(zone)數據庫文件的配置文件

vim /etc/named.rfc1912.zones

參照區域“zone”的格式,新增區域,創建域名和數據庫名的映射關係,如下:

zone "域名(如magedu.com)" IN { 
    type(類型) master(主DNS服務器);  
    file(文件) "之後創建:DNS數據庫的文件名(如magedu.com.zone)";  
};

注意:
1. magedu.com不要寫成www.magedu.com。因爲我們要解析magedu.com的很多子域(主機),而不單單是www.magedu.com這一個域(主機)。
2.DNS數據庫名的後綴“.zone”可以是任何字符,如“.abc”  

檢查錯誤

檢查主DNS服務器的配置文件是否錯誤:named-checkconf
說明:檢查/etc/named.conf文件和/etc/named.rfc1912.zones文件

(5) 創建區域(zone)數據庫文件

/var/named是專門存放DNS數據庫文件的文件夾,查看DNS主配置文件“/etc/named.conf”,其中directory行表示存放DNS數據庫文件的路徑

創建區域(zone)數據庫文件:

區域(zone)數據庫文件可根據“named.localhost”文件爲模板,複製一份進行修改,就變成自己的數據庫文件了。
[root@centos7dns ~]# ll /var/named
total 16
drwxrwx--- 2 named named   23 Apr 24 00:31 data
drwxrwx--- 2 named named   35 Apr 24 00:31 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
drwxrwx--- 2 named named    6 Jan 30 01:23 slaves
[root@centos7dns ~]#

創建區域(zone)數據庫文件,保留原有屬性
cp -p /var/named/named.localhost /var/named/magedu.com.zone

(6 ) 修改區域(zone)數據庫文件

區域(zone)數據庫文件的內容,是由一行一行的區域數據記錄而成。這一行行內容就叫“資源記錄(RR)”。

  • 區域數據庫文件裏必須包含SOA記錄、NS記錄、A記錄

修改區域數據庫文件內容如下圖

Linux 篇| DNS服務器

檢查錯誤

檢查區域數據庫的文件是否錯誤:
named-checkzone magedu.com /var/named/magedu.com.zone

(7) 使配置生效

[root@centos7dns ~]# rndc reload
server reload successful(成功)
[root@centos7dns ~]#

(8) 驗證

臨時驗證

在客戶端使用測試命令
格式:dig 域名主機 @DNS解析服務器
示例:dig dbserver1.magedu.com @192.168.238.134
dbserver1.magedu.com由數據庫文件

Linux 篇| DNS服務器

永久驗證

在客戶端的網卡配置文件裏,DNS設置爲“主DNS服務器”的IP地址


2. 反向解析主服務器

  • 使用PTR記錄。注意:考慮“將哪個IP地址段”解析成域名
  • 在區域(zone)中,注意“反向解析域名”的書寫格式

(1) 安裝DNS包

yum -y install bind

(2) 啓動DNS服務

systemctl start named  

(3) 修改DNS主配置文件/etc/named.conf

vim /etc/named.conf  
註釋以“listen-on”“allow-query”開頭的兩行,即在這兩行前面加兩個斜線  

(4) 打開專門存放區域(zone)數據庫文件的配置文件

vim /etc/named.rfc1912.zones

參照反向解析區域“zone”的格式,新增區域,創建域名和數據庫名的映射關係,如下:

 zone "域名(如238.168.192.in-addr.arpa)" IN { 
    type(類型) master(主DNS服務器);  
    file(文件) "之後創建:DNS數據庫的文件名(如192.168.238.zone)";  
};

檢查錯誤

檢查主DNS服務器的配置文件是否錯誤:named-checkconf
說明:檢查/etc/named.conf文件和/etc/named.rfc1912.zones文件

(5) 創建區域(zone)數據庫文件

/var/named是專門存放DNS數據庫文件的文件夾,查看DNS主配置文件“/etc/named.conf”,其中directory行表示存放DNS數據庫文件的路徑

創建反向解析區域(zone)數據庫文件:

區域(zone)數據庫文件可根據“named.loopback”文件爲模板,複製一份進行修改,就變成自己的數據庫文件了。
[root@centos7dns ~]# ll /var/named
total 16
drwxrwx--- 2 named named   23 Apr 24 00:31 data
drwxrwx--- 2 named named   35 Apr 24 00:31 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
drwxrwx--- 2 named named    6 Jan 30 01:23 slaves
[root@centos7dns ~]#

創建區域(zone)數據庫文件,保留原有屬性
cp -p /var/named/named.loopback /var/named/192.168.238.zone

(6 ) 修改區域(zone)數據庫文件

  • 區域數據庫文件裏必須包含SOA記錄、SOA對應的A記錄、NS記錄

修改區域數據庫文件內容如下

[root@centos7dns ~]# cat /var/named/238.168.36.zone 
$TTL 1D
@   IN SOA  master admin.magedu.com. (
                    1   ; serial
                    1H  ; refresh
                    10M ; retry
                    12H ; expire
                    1D )    ; minimum

    NS master 192.168.238.134
master A 192.168.238.134
134 PTR webserver1.magedu.com.

[root@centos7dns ~]#

(7) 使配置生效

[root@centos7dns ~]# rndc reload
server reload successful(成功)
[root@centos7dns ~]#

3. 正向從(輔助)服務器

  • 目標:實現數據的自動同步

(1) 安裝DNS包

yum -y install bind

(2) 啓動DNS服務

systemctl start named  

(3) 修改DNS主配置文件/etc/named.conf

vim /etc/named.conf  
1> 註釋以“listen-on”“allow-query”開頭的兩行,即在這兩行前面加兩個斜線

2> 安全設置:
    指定,不允許任何服務器同步DNS的數據
    示例:在allow-query的上一行添加
        allow-transfer {none;}; 
    此處配置可以指定某從DNS服務器同步本機DNS數據,即“none”改爲“從DNS服務器IP地址” 

    如果不設置此安全命令,在DNS客戶端使用“dig -t axfr magedu.com(主域名) @DNS服務器IP地址”可以直接看到DNS服務器的記錄。

(4) 打開專門存放區域(zone)數據庫文件的配置文件

vim /etc/named.rfc1912.zones

參照區域“zone”的格式,新增區域,創建域名和數據庫名的映射關係,如下:

zone "域名(如magedu.com 這裏寫的是主域名)" IN { 
    type(類型) slave(從DNS服務器);  
    masters {192.168.238.134;};《---》指定主DNS服務器
    file(文件) "之後創建:從DNS數據庫的文件名(如: slaves/magedu.com.slave)";  
};

注意:"/slaves"表示:把從DNS服務器的zone配置文件放到此文件夾,也推薦放到此文件夾

(5) 重啓DNS服務,同步主DNS服務器區域(zone)數據庫文件到“/var/named/slaves”目錄

1> 重啓DNS服務
    systemctl restart named
2> 查看同步的區域(zone)數據庫文件(注意權限等信息)
    ll /var/named/slaves

注意:“/var/named/slaves/magedu.com.slave”不是普通文件,看不到裏面內容,用來防止信息泄露。可用“file /var/named/slaves/magedu.com.slave”查看“magedu.com.slave”文件的類型

(6) 使配置生效

[root@centos7dns ~]# rndc reload
server reload successful(成功)
[root@centos7dns ~]#

(7) 驗證

  • 驗證:DNS的冗餘和主、從DNS服務器的同步
  • 驗證設備:主DNS服務器、從DNS服務器、DNS客戶端
DNS的冗餘:

1> 在DNS客戶端使用命令"dig dbserver1.magedu.com"查詢解析“dbserver1.magedu.com”域名的DNS服務器是誰。可以看到,在結果最下面“行SERVER”顯示DNS解析服務器是某某某

2> 關閉主DNS服務器主機或禁用網絡,在DNS客戶端使用命令"dig dbserver1.magedu.com"查詢解析。查看是不是從DNS服務器解析

3> 關閉從DNS服務器,恢復主DNS服務器,在DNS客戶端使用命令"dig dbserver1.magedu.com"查詢解析。查看是不是主DNS服務器解析

主、從DNS服務器的同步:

1> 在主DNS服務器,其“/var/named/magedu.com.zone”文件添加一個A記錄
    k8s TTL IN A 6.6.6.6

2> 主、從DNS服務器同步
    同步機制分兩種:
    推(主DNS推送給從DNS。注意:需要設置推送的命令才能實現)和
    拉(根據同步時間等待同步。注意:如果版本號沒發生變化,就不會同步)

    推:在主DNS服務器的“/var/named/magedu.com.zone”文件添加從DNS服務器
        第一步:@ TTL IN NS slave
        第二步:slave TTL IN A 192.168.238.128(從DNS服務器IP地址)
        第三步:更改版本號,加1

3> 在主DNS服務器上,重新加載DNS配置文件
    rndc reload

4> 關閉主DNS服務器網絡

5> 在DNS客戶端,使用“dig k8s.magedu.com”是否能解析成功

4. 子域服務器

  • 創建子域有兩種情況:
    • 父域和子域在同一主機。適用訪問量小的
    • 父域委派子域到另一臺服務器(不同主機,使用“粘合記錄”)。適用訪問量大的

(1) 父域和子域在同一臺主機

方法一:創建一條A記錄

  • 將父域和子域放到一個文件,缺點是父、子域的記錄混雜
在主DNS服務器(即父域magedu.com)的配置文件裏,給子域(www.shanghai.magedu.com)添加一條A記錄,如下:

第一步:vim /var/named/magedu.com.zone
    www.shanggai TTL IN A 1.1.1.1(IP地址)
第二步:更改版本號
第三步:保存退出
第四步:使用“rndc reload”命令生效
第五步:在DNS客戶端,使用“dig www.shanghai.magedu.com”驗證子域IP地址是不是1.1.1.1

方法二:創建一個獨立的域

  • 在“/etc/named.rfc1912.zones”文件裏,除了父域“magedu.com”,在新建一個父域的子域“shenzhen.magedu.com”,如下:
    第一步:編輯“/etc/named.rfc1912.zones”文件,創建子域區域(zone)
    [root@centos7dns ~]# vim /etc/named.rfc1912.zones
    zone "shenzhen.magedu.com" IN {
        type master;
        file "shenzhen.magedu.com.zone";
    };

    第二步:以父域"magedu.com"配置文件"magedu.com.zone"爲模板,複製一份,改名"shenzhen.magedu.com.zone",當做子域“shenzhen.magedu.com”的配置文件

    [root@centos7dns ~]# cp -p /var/named/magedu.com.zone /var/named/shenzhen.magedu.com.zone  

第三步:編輯子域“shenzhen.magedu.com”的配置文件,如圖:

Linux 篇| DNS服務器

第四步:使用“rndc reload”命令生效
第五步:使用DNS客戶端命令驗證,如圖:

Linux 篇| DNS服務器

(2) 父域委派子域到另一臺服務器上

  • glue record:粘合記錄,父域授權子域的記錄
  • 父域:magedu.com;子域:chengdu.magedu.com
  • 思路:在父域的配置文件,指定訪問子域“chengdu.magedu.com”的位置。

第一步:

在父域(主域)DNS數據庫的配置文件“/var/named/magedu.com.zone”裏,加入委派記錄(粘合記錄):即NS記錄和NS對應的A記錄。(如下圖紅框)

注意:下圖中,“委派DNS主機” 和 “從DNS服務器”的IP地址一樣,是因爲我把"從DNS服務器"當做新創建的“主DNS服務器”(懶得配置了)

Linux 篇| DNS服務器

第二步:

在委派主機上,創建主DNS服務器,即在IP地址是192.168.238.128的主機是創建。(可參考上面創建主DNS服務器的實驗)

第三步:

編輯委派主機的“/etc/named.rfc1912.zones”文件,添加子域的zone區域
[root@centos7 ~]# vim /etc/named.rfc1912.zones

zone "chengdu.magedu.com" IN {  
        type master;
        file "chengdu.magedu.com.zone";
};

第四步:

編輯DNS數據庫文件,即在“/var/named”目錄創建的DNS數據庫配置文件(var/named/chengdu.magedu.com.zone)。

[root@centos7 ~]# cat /var/named/chengdu.magedu.com.zone 
$TTL 1D
@   IN SOA  master admin.magedu.com. (
                    20190427    ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        NS  master
master      A   192.168.238.128
webserver2  A   3.3.3.3
www         CNAME   webserver2

[root@centos7 ~]#

第五步:

在主DNS服務器(192.168.238.134)執行生效命令“rndc reload”

在委派DNS服務器(192.168.238.128)執行生效命令“rndc reload”

第六步:

在DNS客戶端測試:(如下圖)

[root@centos6dns ~]# dig www.chengdu.magedu.com @192.168.238.128
[root@centos6dns ~]# dig www.chengdu.magedu.com @192.168.238.134

結論:由下面兩張圖的結果可以得知,用戶訪問“www.chengdu.magedu.com”域,用戶的主機先向“192.168.238.134”主機請求解析“www.chengdu.magedu.com”域的IP地址,“192.168.238.134”主機沒有“www.chengdu.magedu.com”域的IP地址,就查找子域,發現“192.168.238.128”主機有“www.chengdu.magedu.com”域的IP地址,就委派給“192.168.238.128”主機解析域名,從而讓用戶正常訪問網站。這就是委派主機。

Linux 篇| DNS服務器

Linux 篇| DNS服務器

5. 轉發(緩存)服務器

  • 迭代查詢是:查詢根及根下面的DNS服務器。而轉發服務器可以查詢非根的DNS服務器
  • 注意:被轉發的服務器需要能夠爲請求者做遞歸查詢,否則轉發請求不予進行

  • 轉發服務器有兩種轉發策略“first和only”
    • first:“本地DNS服務器”向“域內主、從DNS服務器”請求域名解析,如果沒有,“本地DNS服務器”自己向“根服務器”迭代查詢
    • only:“本地DNS服務器”向“域內主、從DNS服務器”請求域名解析,如果沒有就不找了
大致過程:
創建並配置DNS轉發服務器,
接着在主DNS服務器的主配置文件“/etc/named.conf”裏,添加:
    forward first(或only);  --->轉發策略
    forwarders {192.168.238.128;(轉發服務器的IP地址)}  --->轉發給誰
    說明:這兩行表示,先轉發給轉發服務器查詢,如果沒有,我自己在互聯網查詢

(1). 安裝DNS包
(2). 啓動DNS服務
(3). 修改DNS主配置文件/etc/named.conf
(4). 修改區域(zone)數據庫文件的配置文件

編輯“/etc/named.rfc1912.zones”文件  

zone "wangge.com" IN {
        type master;
        file "wangge.com.zone";
};

(5). 創建數據庫文件

vim /var/named/wangge.com.zone

$TTL 1D
@   IN SOA  master admin.wangge.com. (
                    20190427    ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        NS  master
master      A   192.168.238.128
webserver2  A   5.5.5.5
www         CNAME   webserver2

(6).使配置生效

[root@centos7dns ~]# rndc reload
server reload successful(成功)
[root@centos7dns ~]#

(7).驗證DNS轉發服務器是否安裝配置完成

首先自己本機測試,www.wangge.com是否解析是5.5.5.5
[root@centos7 named]# dig www.wangge.com @127.0.0.1

(8).在“主DNS服務器”添加“DNS轉發服務器”的記錄(全局轉發和特定轉發)

  • 建議關閉配置文件“/etc/named.conf”裏的dnssec功能
    • dnssec-enable no;
    • dnssec-validation no;
編輯配置文件“/etc/named.conf”的“Options模塊”,配置全局轉發:
    forward first(或only);  --->轉發策略
    forwarders {192.168.238.128;(轉發服務器的IP地址)}  --->轉發給誰
    說明:這兩行表示,先轉發給轉發服務器查詢,如果沒有,我自己在互聯網查詢

說明:特定轉發
特定區域轉發:僅轉發對特定的區域的請求,比全局轉發優先級高
編輯配置文件“/etc/named.rfc1912.zones”
zone "域名(如wangge.com)" IN {
type forward;
forward first|only;
forwarders { ip;};

(9).驗證DNS轉發服務器是否成功

已有設備:
主DNS服務器“192.168.238.134”
DNS轉發服務器“192.168.238.128”
DNS客戶端“192.168.238.133”

因爲使用的是“first”策略,所以DNS客戶端向主DNS服務器查詢“www.wangge.com”域名解析,主DNS服務器沒有,會轉發給“DNS轉發服務器”查詢,就會查詢到想要的結果(5.5.5.5)。如果查詢解析“www.zhangge.com”,因爲“主DNS服務器和DNS轉發服務器”都沒有記錄,所以“DNS客戶端”會自己從互聯網查詢解析,如果查詢到解析結果,就證明“DNS服務器”創建、配置成功。(前提:互聯網上真有www.zhangge.com這個域名)

1>在DNS客戶端,使用“dig www.wangge.com @192.168.238.134(主DNS服務器IP地址)”查詢“www.wangge.com”域名的解析(www.wangge.com對應的IP是否是5.5.5.5,有則成功)

2>在DNS客戶端,使用“dig www.zhangge.com @192.168.238.134”查詢“www.zhangge.com”域名的解析(www.zhangge.com對應的IP地址是否存在,有則成功)

6. 智能DNS服務器

示例:企業網站內部實現智能CDN功能(即下面的實驗6)

  • 針對三個城市:北京、上海、其他城市實現智能CDN

(1)在主DNS服務器/var/named/目錄裏,創建三個區域數據庫:magedu.com.bj(北京)、magedu.com.sh(上海)、magedu.com.zone(其他城市)

[root@centos7dns named]# ll
-rw-r----- 1 root  named  373 May  8 19:07 magedu.com.bj
-rw-r----- 1 root  named  373 May  8 19:07 magedu.com.sh
-rw-r----- 1 root  named  373 May  8 19:07 magedu.com.zone
[root@centos7dns named]#

(2).編輯區域數據庫文件

目的:北京用戶用北京的服務器返回結果;上海和其他地區同理

1.編輯北京的區域數據庫文件
[root@centos7dns named]# cat magedu.com.bj 
$TTL 1D
@   IN SOA  master admin.magedu.com. (
                    20190427    ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        NS  master
master      A   192.168.238.134
webserver2  A   6.6.6.6(北京CDN機房WEB服務器的IP地址)
www         CNAME   webserver2

[root@centos7dns named]#

2.編輯上海的區域數據庫文件
[root@centos7dns named]# cat magedu.com.sh 
$TTL 1D
@   IN SOA  master admin.magedu.com. (
                    20190427    ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        NS  master
master      A   192.168.238.134
webserver2  A   8.8.8.8(上海CDN機房WEB服務器的IP地址)
www         CNAME   webserver2

[root@centos7dns named]#

3.編輯其他地區的區域數據庫文件
[root@centos7dns named]# cat magedu.com.zone 
$TTL 1D
@   IN SOA  master admin.magedu.com. (
                    20190427    ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
        NS  master
master      A   192.168.238.134
webserver2  A   9.9.9.9(其他地區CDN機房WEB服務器的IP地址)
www         CNAME   webserver2

[root@centos7dns named]#

3.定義ACL

目錄:哪些客戶端屬於北京、上海、其他地區

打開/etc/named.conf文件,定義三個ACL
acl beijingnet(北京) {  
    192.168.238.0/24;
};
acl shanghainet(上海) {  
    172.22.0.0/16;
};
acl othernet(其他地區) {  
    any;
};
注意:把較小範圍的往前寫,會優先實現前面的acl。所以,上面其他地區的acl不能千萬不能放在前面。

4.將定義的ACL與數據庫關聯(視圖技術:將客戶端的IP地址和數據庫的關聯關係。語法有view等)

編輯/etc/named.conf文件,在最下面的“include行前面”添加:

注意:有了view,所有的區域配置都必須在view裏,不然不會生效,還報錯。格式是“客戶端的IP地址和數據庫的關聯關係--->創建view”

(1)添加內容1:

新增加行:指定客戶端 ACL(北京的ACL)---》來自北京的客戶端屬於北京view
match-clients { beijingnet;};

(2)添加內容2:

方法一:

新增加行:
北京view對應的數據庫,是專門的區域數據庫,即第一步創建的區域數據庫文件
zone "magedu.com" {  
                type master;
                file "magedu.com.bj";
};

方法二:

* 新增加行:
“include "/etc/named.rfc1912.zones.bj" ;”
* 刪除或註釋最下面的行:
“include "/etc/named.rfc1912.zones" ;”
* 將“根”的區域信息,放到“/etc/named.rfc1912.zones.bj”文件(因爲有了view後,所有的區域信息要放到view裏面)

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

    vim /etc/named.rfc1912.zones.bj
    zone "." IN {
            type hint;
            file "named.ca";
    };

    注意:“/etc/named.rfc1912.zones.bj”文件是
    根據“/etc/named.rfc1912.zones”文件爲模板複製的,
    在把上面“根區域信息”添加進去。
    之後,在“/etc/named.rfc1912.zones.bj”文件裏,
    指定區域對應的數據庫文件,就是最開始創建的文件。

總結

使用方法二的辦法,創建ACL與數據庫關聯的命令如下:

1. 編輯文件“/etc/named.conf”
vim /etc/named.conf
創建以下行:
view beijingview{  
        match-clients { beijingnet;};
        include "/etc/named.rfc1912.zones.bj";
};
view shanghaiview{  
        match-clients { shanghainet;};
        include "/etc/named.rfc1912.zones.sh";
};
view otherview{  
        match-clients {othernet;};
        include "/etc/named.rfc1912.zones";
};
刪除下面一行:
include "/etc/named.rfc1912.zones

2.複製“根的區域信息“到“/etc/named.rfc1912.zones”文件,並以此爲模板創建其它地址的區域文件,在文件裏指定各個區域的數據庫文件,之後把“/etc/named.conf”文件的“根區域信息”刪除
複製:
[root@centos7dns ~]# vim /etc/named.rfc1912.zones(其他區域)
zone "." IN {
            type hint;
            file "named.ca";
};
zone "magedu.com" IN {
        type master;
        file "magedu.com.zone";
};
創建:
[root@centos7dns ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
[root@centos7dns ~]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh

指定各個區域的數據庫文件:
北京區域:
vim /etc/named.rfc1912.zones.bj
zone "magedu.com" IN {
        type master;
        file "magedu.com.bj";

上海區域:
vim /etc/named.rfc1912.zones.sh
zone "magedu.com" IN {
        type master;
        file "magedu.com.sh";

使配置文件生效:
[root@centos7dns ~]# rndc reload
server reload successful
[root@centos7dns ~]#

3.在“/etc/named.conf”文件,搜索allow-query,內容改爲“any(所有人)”如下:
    allow-query     { any; };

4.檢查配置是否有錯誤
[root@centos7dns ~]# named-checkconf  

5.重新加載配置文件

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

6. 驗證

在DNS客戶端(兩個IP地址:192.168.238.133和172.22.0.160)使用dig命令驗證:因爲客戶端的192.168.238.0網段,屬於北京區域,如果用DNS主服務器(兩個IP地址192.168.238.134和172.22.145.195)解析www.magedu.com域,得到6.6.6.6,就證明:DNS服務器根據DNS客戶端的IP,自動分配較近區域的DNS服務器提供解析。同理,用DNS主服務器(172.22.145.195)解析www.magedu.com域,得到8.8.8.8,也能證明。

[root@centos6dns ~]# dig www.magedu.com @192.168.238.134

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

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

;; ANSWER SECTION:
www.magedu.com.     86400   IN  CNAME   webserver2.magedu.com.
webserver2.magedu.com.  86400   IN  A   6.6.6.6

;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  master.magedu.com.

;; ADDITIONAL SECTION:
master.magedu.com.  86400   IN  A   192.168.238.134

;; Query time: 1 msec
;; SERVER: 192.168.238.134#53(192.168.238.134)
;; WHEN: Thu May 16 11:34:29 2019
;; MSG SIZE  rcvd: 110

[root@centos6dns ~]#

[root@centos6dns ~]# dig www.magedu.com @172.22.145.195

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

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

;; ANSWER SECTION:
www.magedu.com.     86400   IN  CNAME   webserver2.magedu.com.
webserver2.magedu.com.  86400   IN  A   8.8.8.8

;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  master.magedu.com.

;; ADDITIONAL SECTION:
master.magedu.com.  86400   IN  A   192.168.238.134

;; Query time: 4 msec
;; SERVER: 172.22.145.195#53(172.22.145.195)
;; WHEN: Thu May 16 11:43:12 2019
;; MSG SIZE  rcvd: 110

[root@centos6dns ~]#

十一.總結性試驗

  • 實現:互聯網 DNS架構

Linux 篇| DNS服務器

說明
用戶使用瀏覽器訪問www.magedu.com網站
首先查詢本地DNS服務器是否知道這個網站,本地DNS說沒有;
接着用戶向"根服務器"遞歸查詢這個網站,“根服務器”說沒有;
接着用戶向"com服務器"查詢這個網站,“com服務器”說沒有;
接着用戶向"主、從DNS服務器"查詢這個網站,“主、從DNS服務器”說有,因爲它們是這個網站的權威服務器,解析完成後返回客戶端這個網站主機的IP地址,用戶得到後就可以訪問了。

設備

編號 設備 作用 IP地址
001 centos6 用戶客戶端 192.168.238.6
002 centos7 用戶本地DNS服務器(LDNS) 192.168.238.7
003 centos7 網絡DNS服務器(根) 192.168.238.17
004 centos7 網絡DNS服務器(com) 192.168.238.27
005 centos7 網站主DNS服務器(master) 192.168.238.37
006 centos7 網站從DNS服務器(slave) 192.168.238.47
007 centos6 網站WEB服務器(網站) 192.168.238.67

過程

  • 注意每個主機的主機名對應的命令
  • 建議按照下面順序完成實驗
  • 建議每搭建好一個主機,都用客戶端驗證,方便知道是否搭建成功,以及後面出錯好排查
  1. 設置“用戶客戶端”電腦的DNS是“192.168.238.7”。並使用“用戶客戶端”的電腦(192.168.238.6),ping其他所有主機。確保能ping通所有主機,在進行下一步。

2.搭建配置WEB網站“www.magedu.com”的頁面(192.168.238.67)

1. 安裝WEB的包httpd
centos6默認安裝了httpd的包,使用“rpm -q httpd”命令查看,所以不用再安裝httpd的包

2.啓動httpd服務
[root@centos6web ~]# service httpd start

3.創建WEB的網站頁面
[root@centos6web ~]# echo "<h1>welcome to magedu.com</h1>" > /var/www/html/index.html
[root@centos6web ~]# cat /var/www/html/index.html 
<h1>welcome to magedu.com</h1>
[root@centos6web ~]#

4.使用用戶客戶端訪問WEB的網站
[root@centos6client ~]# curl 192.168.238.67
<h1>welcome to magedu.com</h1>
[root@centos6client ~]#

發現可以訪問,之後我們就搭建DNS服務器,成功後,我們使用域名訪問,如果獲取到網頁內容,即表示DNS服務器解析域名爲IP地址成功,即實驗成功。

3.搭建配置主DNS服務器(192.168.238.37)

1.確保能聯通外網,yum源正常
配置yum源可參考https://www.cnblogs.com/renpingsheng/p/7845096.html

2.安裝DNS的軟件包bind
[root@centos7master ~]# yum -y install bind

3.編輯主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示註釋,註釋下面兩行。保存退出
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

4.編輯區域文件
[root@centos7master ~]# vim /etc/named.rfc1912.zones
添加下面的區域配置
zone "magedu.com" IN {  
        type master;
        file "magedu.com.zone";
};

5.在“/var/named”目錄創建“magedu.com區域”的數據庫文件“magedu.com.zone”
[root@centos7master ~]# cd /var/named
[root@centos7master named]# ls
data     named.ca     named.localhost  slaves
dynamic  named.empty  named.loopback
[root@centos7master named]# vim magedu.com.zone(adm.magedu.com.是郵箱)
$TTL 1D
@ IN SOA ns1 adm.magedu.com. ( 1 1H 10M 1D 3H )
        NS ns1
        NS ns2
ns1 A 192.168.238.37(主DNS服務器)
ns2 A 192.168.238.47(從DNS服務器)
www A 192.168.238.67(WEB服務器)

6.設置區域數據庫文件屬性,提高安全性
[root@centos7master named]# ll
total 20
drwxrwx--- 2 named named    6 Jan 30 01:23 data
drwxrwx--- 2 named named    6 Jan 30 01:23 dynamic
-rw-r--r-- 1 root  root   136 May 18 02:25 magedu.com.zone
-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
drwxrwx--- 2 named named    6 Jan 30 01:23 slaves
[root@centos7master named]# chgrp named magedu.com.zone 
[root@centos7master named]# chmod 640 magedu.com.zone 
[root@centos7master named]# ll
total 20
drwxrwx--- 2 named named    6 Jan 30 01:23 data
drwxrwx--- 2 named named    6 Jan 30 01:23 dynamic
-rw-r----- 1 root  named  136 May 18 02:25 magedu.com.zone
-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
drwxrwx--- 2 named named    6 Jan 30 01:23 slaves
[root@centos7master named]#

7.啓動named服務
[root@centos7master named]# systemctl start named

8.在DNS客戶端(192.168.238.6)驗證主DNS服務器是否搭建配置成功
[root@centos6client ~]# dig www.magedu.com @192.168.238.37

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

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

;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   192.168.238.67(成功)

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

;; ADDITIONAL SECTION:
ns1.magedu.com.     86400   IN  A   192.168.238.37
ns2.magedu.com.     86400   IN  A   192.168.238.47

;; Query time: 44 msec
;; SERVER: 192.168.238.37#53(192.168.238.37)
;; WHEN: Fri May 17 04:16:31 2019
;; MSG SIZE  rcvd: 116

[root@centos6client ~]# 

4.搭建配置從DNS服務器(192.168.238.47)


1.確保能聯通外網,yum源正常
配置yum源可參考https://www.cnblogs.com/renpingsheng/p/7845096.html

2.安裝DNS的軟件包bind
[root@centos7master ~]# yum -y install bind

3.編輯主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示註釋,註釋下面兩行。保存退出
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

4.編輯區域文件
[root@centos7master ~]# vim /etc/named.rfc1912.zones
添加下面的區域配置
zone "magedu.com" IN {  
        type slave;
        masters {192.168.238.37;};
        file "slaves/magedu.com.zone";
};

5.安全加固
(1)在主DNS服務器(192.168.238.37)上,進行安全設置,只允許哪些主機“同步主DNS服務器的數據”
在“/etc/named.conf”文件的“Options”模塊,"allow-query"行的上面添加下面的一行,如下:
allow-transfer {192.168.238.47;};(從DNS服務器的IP地址,表示只允許從這臺從DNS服務器同步主DNS服務器的數據)
之後重啓named服務,重新加載DNS配置
[root@centos7master named]# systemctl restart named
[root@centos7master named]# rndc reload
server reload successful
[root@centos7master named]#

(2)在從DNS服務器(192.168.238.47)進行安全設置,不允許其它主機同步DNS數據
在“/etc/named.conf”文件的“Options”模塊,"allow-query"行的上面添加下面的一行,如下:
allow-transfer {none;};
重啓named服務:[root@centos7master named]# systemctl restart named

6. 查看是否同步成功主DNS服務器的“DNS數據” 
[root@centos7slave ~]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 304 May 18 03:08 magedu.com.zone
[root@centos7slave ~]#

7.在DNS客戶端(192.168.238.6)驗證從DNS服務器是否搭建配置成功
[root@centos6client ~]# dig www.magedu.com @192.168.238.47

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

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

;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   192.168.238.67(成功)

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

;; ADDITIONAL SECTION:
ns1.magedu.com.     86400   IN  A   192.168.238.37
ns2.magedu.com.     86400   IN  A   192.168.238.47

;; Query time: 2 msec
;; SERVER: 192.168.238.47#53(192.168.238.47)
;; WHEN: Fri May 17 04:50:40 2019
;; MSG SIZE  rcvd: 116

[root@centos6client ~]#

5.搭建配置網絡DNS服務器(com)(192.168.238.27)


1.確保能聯通外網,yum源正常
配置yum源可參考https://www.cnblogs.com/renpingsheng/p/7845096.html

2.安裝DNS的軟件包bind
[root@centos7master ~]# yum -y install bind

3.編輯主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示註釋,註釋下面兩行。保存退出
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

4.編輯區域文件(創建委派)
[root@centos7master ~]# vim /etc/named.rfc1912.zones
添加下面的區域配置
zone "com" IN {  
        type master;
        file "com.zone";
};

5.創建“com區域”的數據庫文件
[root@centos7com ~]# vim /var/named/com.zone(admin.magedu.com是郵箱)
$TTL 1D
@ IN SOA ns1 admin.magedu.com. ( 1 1D 1H 1W 3D )
        NS ns1
magedu  NS mageduns1(主DNS服務器的NS記錄)
magedu  NS mageduns2(從DNS服務器的NS記錄)
ns1 A 192.168.238.27
mageduns1 A 192.168.238.37
mageduns2 A 192.168.238.47

6.重啓named服務
[root@centos7com ~]# systemctl restart named

7.在DNS客戶端(192.168.238.6)驗證網絡DNS服務器(com)是否搭建配置成功

[root@centos6client ~]# dig www.magedu.com @192.168.238.27

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

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

;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   192.168.238.67(委派成功)
;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  mageduns1.com.
magedu.com.     86400   IN  NS  mageduns2.com.

;; ADDITIONAL SECTION:
mageduns1.com.      86400   IN  A   192.168.238.37
mageduns2.com.      86400   IN  A   192.168.238.47

;; Query time: 10 msec
;; SERVER: 192.168.238.27#53(192.168.238.27)
;; WHEN: Fri May 17 05:16:35 2019
;; MSG SIZE  rcvd: 128

[root@centos6client ~]#

6.搭建配置網絡DNS服務器(根)(192.168.238.17)


1.確保能聯通外網,yum源正常
配置yum源可參考https://www.cnblogs.com/renpingsheng/p/7845096.html

2.安裝DNS的軟件包bind
[root@centos7master ~]# yum -y install bind

3.編輯主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示註釋,註釋下面兩行。保存退出
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

之後,找到“.”的區域信息,默認配置爲網絡上“根”的區域配置,我們做實驗,要把這臺機器當做“網絡上的根”,所以修改“.”區域信息如下:
zone "." IN {
        type master;
        file "root.zone";
};

4.編輯區域文件  
因爲“.”的區域信息直接在"/etc/named.conf"文件裏改了,就不用再“/etc/named.rfc1912.zones”文件裏修改了。

5.創建“.”區域的數據庫文件
[root@centos7com ~]# vim /var/named/root.zone(admin.magedu.com是郵箱)
$TTL 1D
@ IN SOA ns1 admin.magedu.com. ( 1 1D 1H 1W 3D )
        NS ns1
com     NS comns(根的子域com的NS記錄)
ns1     A       192.168.238.17
comns   A       192.168.238.27

6.設置“.”區域數據庫文件(root.zone)屬性,提高安全性
[root@centos7gen ~]# ll /var/named/
total 20
drwxrwx--- 2 named named    6 Jan 30 01:23 data
drwxrwx--- 2 named named    6 Jan 30 01:23 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--r-- 1 root  root   123 May 18 03:59 root.zone
drwxrwx--- 2 named named    6 Jan 30 01:23 slaves
[root@centos7gen ~]# chgrp named /var/named/root.zone 
[root@centos7gen ~]# chmod 640 /var/named/root.zone 
[root@centos7gen ~]# ll /var/named/
total 20
drwxrwx--- 2 named named    6 Jan 30 01:23 data
drwxrwx--- 2 named named    6 Jan 30 01:23 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  123 May 18 03:59 root.zone
drwxrwx--- 2 named named    6 Jan 30 01:23 slaves
[root@centos7gen ~]# 

7.重啓named服務
[root@centos7com ~]# systemctl restart named

8.在DNS客戶端(192.168.238.6)驗證網絡DNS服務器(根)是否搭建配置成功
[root@centos6client ~]# dig www.magedu.com @192.168.238.17

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

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

;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   192.168.238.67

;; AUTHORITY SECTION:
magedu.com.     86400   IN  NS  mageduns2.com.
magedu.com.     86400   IN  NS  mageduns1.com.

;; ADDITIONAL SECTION:
mageduns1.com.      86400   IN  A   192.168.238.37
mageduns2.com.      86400   IN  A   192.168.238.47

;; Query time: 9 msec
;; SERVER: 192.168.238.17#53(192.168.238.17)
;; WHEN: Fri May 17 05:47:48 2019
;; MSG SIZE  rcvd: 128

[root@centos6client ~]#

7.搭建配置網絡DNS服務器(根)(192.168.238.7)


1.確保能聯通外網,yum源正常
配置yum源可參考https://www.cnblogs.com/renpingsheng/p/7845096.html

2.安裝DNS的軟件包bind
[root@centos7master ~]# yum -y install bind

3.編輯主配置文件
[root@centos7master ~]# vim /etc/named.conf
“//”表示註釋,註釋下面兩行。保存退出
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

把下面兩行的“yes”改爲“no”(轉發設置)
dnssec-enable no;
dnssec-validation no;

4.根據實驗的要求,我們要把“192.168.238.17”這臺主機當做網絡上的“根”。所以要修改默認配置,把“根服務器”指定爲“192.168.238.17”這臺機器,如下:
[root@centos7ldns ~]# vim /var/named/named.ca
(清空裏面的配置,只留下下面的兩行,並修改第二行的IP地址爲我們創建的“根”服務器的IP)
.                       518400  IN      NS      a.root-servers.net.
a.root-servers.net.     3600000 IN      A       192.168.238.17

5.重啓named服務  
[root@centos7ldns ~]# systemctl restart named

8.驗證結果


1.爲了避免干擾,把除了“用戶客戶端”和“WEB服務器”,其他所有服務器(5臺)的DNS緩存清除  
清除命令:[root@centos7ldns ~]# rndc flush

2.查看用戶客戶端的DNS
[root@centos6client ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.238.7
[root@centos6client ~]#

3.使用“用戶客戶端”訪問www.magedu.com,解析到IP地址,最終獲取到網頁
[root@centos6client ~]# dig www.magedu.com

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

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

;; ANSWER SECTION:
www.magedu.com.     86400   IN  A   192.168.238.67(成功)

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

;; ADDITIONAL SECTION:
ns1.magedu.com.     86400   IN  A   192.168.238.37
ns2.magedu.com.     86400   IN  A   192.168.238.47

;; Query time: 16 msec
;; SERVER: 192.168.238.7#53(192.168.238.7)
;; WHEN: Fri May 17 06:17:53 2019
;; MSG SIZE  rcvd: 116

[root@centos6client ~]# curl www.magedu.com
<h1>welcome to magedu.com</h1>(成功)
[root@centos6client ~]#

4.爲了驗證DNS的主、從功能,我們把主DNS服務器關掉,用從DNS服務器來給用戶提供域名解析,實現訪問www.magedu.com網站的效果。
(注意:先把所有電腦(5臺)的DNS緩存清除,使用“rndc flush”命令)
第一步:清除所有服務器的DNS緩存
第二步:關閉主DNS服務器(關機或關閉網絡)
第三步:使用“用戶客戶端”訪問www.magedu.com網站
[root@centos6client ~]# curl www.magedu.com
<h1>welcome to magedu.com</h1>
[root@centos6client ~]#

十二. 編譯安裝bind

  1. 下載bind:
isc.org:
bind-9.10
bind-9.11
bind-10

2.編譯安裝bind

• tar xvf bind-9.11.0a3.tar.gz
• cd bind-9.11.0a3/
• groupadd -r -g 53 named
• useradd -r -u 53 -g 53 named

• ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --withoutopenssl --disable-ipv6 --disable-chroot --enable-threads

• make
• make install

3.vim /etc/named/named.conf

options {
directory “/var/named/”;
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file “named.localhost";
allow-update {none;};
};
zone “1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update {none;};
};

4.區域數據庫

• mkdir /var/named
• named-checkconf
• dig +norec @a.root-servers.net > /var/named/named.ca
• vim /var/named/named.localhost
$TTL 1d
@ IN SOA localhost. admin.localhost. (
2016061801
1h
5m
7d
1d)
IN NS localhost.
localhost. IN A 127.0.0.1

5.vim /var/named/named.loopback

$TTL 1d
@ IN SOA localhost. admin.localhost. (
2016061801
1h
5m
7d
1d)
NS @
 A 127.0.0.1
 PTR localhost.

6.設置權限

• chmod 640 /var/named/*
• chmod 640 /etc/named/named.conf
• chgrp -R named /var/named/
• chgrp named /etc/named/named.conf

7.啓動服務和測試

• man named
• named -u named -f -g -d 3 前端級別3方式運行
• named -u named 後臺運行
• killall named
• ss -tuln
• tail /var/log/message
• named -u named

8.支持rndc

• rndc reload 觀察錯誤提示
• rndc-confgen -r /dev/urandom > /etc/named/rndc.conf 生成key
• tail /etc/named/rndc.conf >> /etc/named/named.conf
• killall -SIGHUP named
• rndc status
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章