DNS和BIND

weixin_33807284發表於2018-07-25

DNS

DNS:Domain Name Service 應用層協議(C/S,53/udp, 53/tcp)

域名

分類:最多可以有127級域名

  • 根域
  • 一級域名:Top Level Domain(tld)頂級域
    • 組織域:.com,。gov,.edu,.mil,.net
    • 國家域:.cn,.jp
    • 反向域:arpa
  • 二級域名
  • 三級域名
12374416-f8849390e43cb5cc.jpg
域名.jpg

解析

查詢型別:

  • 遞迴查詢:DNS 伺服器接收到客戶機請求,必須使用一個準確的查詢結果回覆客戶機。如果DNS 伺服器本地沒有儲存查詢DNS 資訊,那麼該伺服器會詢問其他伺服器,並將返回的查詢結果提交給客戶機。
  • 迭代查詢:DNS 伺服器接收到客戶機請求,會向客戶機提供其他能夠解析查詢請求的DNS 伺服器地址,當客戶機傳送查詢請求時,DNS 伺服器並不直接回複查詢結果,而是告訴客戶機另一臺DNS 伺服器地址,客戶機再向這臺DNS 伺服器提交請求,依次迴圈直到返回查詢的結果為止

FQDN:Fully Qualified Domain Name,完全合格域名

解析型別:

  • 正向解析:FQDN --> IP
  • 反向解析:IP --> FQDN

型別

  • 主DNS伺服器:管理和維護所負責解析的域內解析庫的伺服器
  • 從DNS伺服器:從主伺服器或其他的從伺服器“複製”(區域傳送)解析庫副本
  • 快取DNS伺服器
  • 轉發伺服器

區域傳送

利用“通知”機制,來保證主從伺服器能及時同步

通知機制:主伺服器解析庫發生變化時,會主動通知從伺服器

同步時一些必要引數:

  • 序列號:解析庫版本號,主伺服器解析庫變化時,其序列遞增
  • 重新整理時間間隔:從伺服器從主伺服器請求同步解析的時間間隔
  • 重試時間間隔:從伺服器請求同步失敗時,再次嘗試時間間隔
  • 過期時長:從伺服器聯絡不到主伺服器時,多久後停止服務

型別

  • 主區域:master
  • 主區域:master
  • 提示區域:hint 定義根域的位置
  • 轉發區域:forward 例如:直接告訴.com的位置

資源記錄

resource record,簡稱RR

格式

name [TTL] IN rr_type value

  • TTL可從全域性繼承

    TTL(Time-To-Live),簡單的說它表示一條域名解析記錄在DNS伺服器上快取時間.當各地的DNS伺服器接受到解析請求時,就會向域名指定的DNS伺服器發出解析請求從而獲得解析記錄;在獲得這個記錄之後,記錄會在DNS伺服器中儲存一段時間,這段時間內如果再接到這個域名的解析請求,DNS伺服器將不再向DNS伺服器發出請求,而是直接返回剛才獲得的記錄;而這個記錄在DNS伺服器上保留的時間,就是TTL值。

  • @可用於引用當前區域的名字

  • 同一個名字可以通過多條記錄定義多個不同的值;此時DNS伺服器會以輪詢方式響應

  • 同一個值也可能有多個不同的定義名字;通過多個不同的名字指向同一個值進行定義;此僅表示通過多個不同的名字可以找到同一個主機

SOA

Start Of Authority,起始授權記錄,表明一個區域內部,主從DNS服務是如何同步資料以及起始授權物件是誰

注意:一個區域解析庫有且僅能有一個SOA記錄,必須位於解析庫的第一條記錄

name:當前區域的名字,例如“magedu.com.”

value:有多部分組成

  • 當前區域的主DNS伺服器的FQDN,也可以使用當前區域的名字;
  • 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如:admin.magedu.com
  • 主從服務區域傳輸相關定義以及否定的答案的統一的TTL
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
    2015042201      ;序列號,serail number
    2H              ;重新整理時間,refresh
    10M             ;重試時間,retry
    1W              ;過期時間,expire
    1D              ;否定答案的TTL值,nigative answer TTL
)

NS

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

name:當前區域的名字

value: 當前區域的某DNS伺服器的名字,例如ns.magedu.com.

magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.

注意:

  • 相鄰的兩個資源記錄的name相同時,後續的可省略
  • 對NS記錄而言,任何一個ns記錄後面的伺服器名字,都應該在後續有一個A記錄

A

internet Address,FQDN-->IP IPV4

name: 某主機的FQDN,例如www.magedu.com.

value: 主機名對應主機的IP地址

www.magedu.com.         IN A 1.1.1.1
www.magedu.com.         IN A 2.2.2.2
mx1.magedu.com.         IN A 3.3.3.3
mx2.magedu.com.         IN A 4.4.4.4
$GENERATE 1-254 HOST$       A 1.2.3.$       # 主機名和ip地址同名的時候可以這樣操作,避免重複操作
*.magedu.com.           IN A 5.5.5.5        # 避免使用者寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址
magedu.com.             IN A 6.6.6.6

AAAA

FQDN --> IPv6

name:FQDN

value:IPv6

MX

Mail eXchanger,郵件交換器

name:當前區域的名字

value:當前區域的某郵件伺服器(smtp伺服器)的主機名

magedu.com. IN MX 10 mx1.magedu.com.
            IN MX 20 mx2.magedu.com.

注意:

  • 一個區域內,MX記錄可有多個;但每個記錄的value之前應該有一個數字(0-99),表示此伺服器的優先順序;數字越小優先順序越高
  • 對MX記錄而言,任何一個MX記錄後面的伺服器名字,都應該在後續有一個A記錄
  • MX記錄只能定義在正向區域檔案中,不能定義到反向區域檔案中

CNAME

Canonical Name,別名記錄

name:別名的FQDN

value:真正名字的FQDN

www.magedu.com. IN CNAME websrv.magedu.com.

PTR

PoinTeR,IP --> FQDN

name:IP,有特定格式,把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而有特定字尾:in-addr.arpa.,所以完整寫法為:4.3.2.1.in-addr.arpa.

value: FQDN

4.3.2.1.in-addr.arpa. IN PTR www.magedu.com.
# 如1.2.3為網路地址,可簡寫成:
4                   IN PTR www.magedu.com.

注意:網路地址及字尾可省略;主機地址依然需要反著寫

子域授權

網路地址及字尾可省略;主機地址依然需要反著寫

類似根域授權tld:

.com.    IN NS ns1.com.
.com.    IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2

magedu.com. 在.com的名稱伺服器上,解析庫中新增資源記錄

magedu.com.     IN NS ns1.magedu.com.
magedu.com.     IN NS ns2.magedu.com.
magedu.com.     IN NS ns3.magedu.com.
ns1.magedu.com. IN A 3.3.3.1
ns2.magedu.com. IN A 3.3.3.2
ns3.magedu.com. IN A 3.3.3.3

glue record:粘合記錄,父域授權子域的記錄

BIND

BIND:Bekerley Internat Name Domain

/etc/named.conf # 主配置檔案

/etc/named.rfc1912.zones # 專門的zone配置檔案

/etc/rndc.conf # rdnc配置檔案
/etc/rndc.key # 用來遠端控制DNS服務的金鑰檔案

/usr/sbin/named # 二進位制程式
/usr/sbin/named-checkconf # 檢查配置檔案語法
/usr/sbin/named-checkzone # 檢查zone檔案語法
/usr/sbin/named-compilezone
/usr/sbin/named-journalprint # 檢視jnl檔案

/usr/sbin/rndc

/var/log/named.log # 日誌檔案
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca # 用於存放根伺服器的地址資訊
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves

/etc/named.conf

[root@centos7 ~]# cat /etc/named.conf

options {
    listen-on port 53 { 127.0.0.1; }; # IPv4地址監聽埠及監聽的主機列表
    listen-on-v6 port 53 { ::1; }; # IPv6地址監聽埠及監聽的主機列表
    directory   "/var/named"; # 伺服器的工作目錄
    dump-file   "/var/named/data/cache_dump.db"; # 當執行rndc dumpdb時伺服器dump檔案的路徑
    statistics-file "/var/named/data/named_stats.txt"; # 執行rndc stats將伺服器的統計資訊寫入檔案,預設為named.stats
    memstatistics-file "/var/named/data/named_mem_stats.txt"; # 預設為named.memestats,當退出的服務的時候將伺服器的統計資訊寫到檔案中
    allow-query     { localhost; }; # 允許查詢的主機列表,表示可以對主機列表裡的主機提供服務
    allow-transfer { any;}; # 指定哪些主機可以從伺服器上接收區域傳輸,未指定將允許傳輸到所有的主機,預設是any,極其不安全,通常修改為指定主機或none

    recursion yes; # 是否開啟遞迴查詢請求,設定為no的話,不去找根

    dnssec-enable yes; # dns安全策略,建議關閉
    dnssec-validation yes; # dns安全策略,建議關閉

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

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

    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

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

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

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

ACL

把一個或多個地址歸併為一個集合,並通過一個統一的名稱呼叫

四個內建acl:

  • none:沒有一個主機
  • any:任意主機
  • localhost:本機
  • localnet:本機的IP同掩碼運算後得到的網路地址,即本機ip所在的網段

注意:只能先定義,後使用;因此一般定義在配置檔案中,處於options的前面

訪問控制的指令:

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

測試工具

dig

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

注意:dig只用於測試dns系統,不會查詢hosts檔案進行解析

查詢選項:

  • 跟蹤解析過程:dig +trace magedu.com
  • 進行遞迴解析:dig +recurse magedu.com
  • 測試反向解析:dig -x IP
  • 模擬區域傳送:
[root@xuexi ~]# dig -t a www.longshuai.com
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7_3.1 <<>> -t a www.longshuai.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8670
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

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

;; ANSWER SECTION:
www.longshuai.com.      21600   IN      A       172.16.10.16

;; AUTHORITY SECTION:
longshuai.com.          21600   IN      NS      dnsserver.longshuai.com.

;; ADDITIONAL SECTION:
dnsserver.longshuai.com. 21600  IN      A       172.16.10.15

;; Query time: 0 msec
;; SERVER: 172.16.10.15#53(172.16.10.15)
;; WHEN: Sat Aug 12 23:38:17 CST 2017
;; MSG SIZE  rcvd: 102

在結果中:

  • QUESTION SECTION:表示所發起的查詢
  • ANSWER SECTION:表示對查詢的回覆
  • AUTHORITY SECTION:表示該查詢是權威伺服器給的答案,並給出了權威伺服器的ns記錄
  • ADDITIONAL SECTION:表示額外的回覆,回覆的內容是權威伺服器的A記錄。

host

host [-t type] name [SERVER]

nslookup

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

也可使用互動式

rndc

remote name domain controller,預設與bind安裝在同一主機,且只能通過127.0.0.1連線named程式

提供輔助性的管理功能;953/tcp

rndc COMMAND:

  • reload:過載主配置檔案和區域解析庫檔案
  • reload zonename:過載區域解析庫檔案
  • retransfer zonename:手動啟動區域傳送,而不管序列號是否增加
  • notify zonename:重新對區域傳送發通知
  • reconfig:過載主配置檔案
  • querylog:開啟或關閉查詢日誌檔案/var/log/message,排錯時可臨時開啟,長時間開啟無端增加了磁碟IO,因此一般不要開啟
  • trace:遞增debug一個級別
  • trace LEVEL:指定使用的級別
  • notrace:將除錯級別設定為 0
  • flush:清空DNS伺服器的所有快取記錄

CDN

Content Delivery Network,內容分發網路

CDN的基本原理是廣泛採用各種快取伺服器,將這些快取伺服器分佈到使用者訪問相對集中的地區或網路中,在使用者訪問網站時,利用全域性負載技術將使用者的訪問指向距離最近的工作正常的快取伺服器上,由快取伺服器直接響應使用者請求

12374416-79d192f85411429e.jpeg
CDN.jpeg

view

用於實現智慧DNS

  • 一個bind伺服器可定義多個view,每個view中可定義一個或多個zone
  • 每個view用來匹配一組客戶端
  • 多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫檔案

注意:

  • 一旦啟用了view,所有的zone都只能定義在view中
  • 僅在允許遞迴請求的客戶端所在view中定義根區域
  • 客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表,因此特別注意順序

格式:

view VIEW_NAME {
    match-clients { testacl; };
    zone “magedu.com” {
        type master;
        file “magedu.com.zone”; };
        include “/etc/named.rfc1912.zones”;
};

view VIEW_NAME {
    match-clients { testacl; };
    include “/etc/named.rfc1912.zones.VIEW_NAME”;
};

DNS排錯

# 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.
  • 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標記判斷
  • 被刪除的記錄仍能返回結果,可能是因為*記錄存在

實現只快取DNS服務

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本機所有ip繫結53埠
    allow-query     { any; }; # 修修改可以以為任何主機提供服務
    
  2. named-checkconf:主配置檔案語法檢查

  3. rndc reload

實現正向主DNS服務

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本機所有ip繫結53埠
    allow-query     { any; }; # 修修改可以以為任何主機提供服務
    
  2. vim /etc/named.rfc1912.zones

    zone "magedu.com" IN {
            type master;
            file "magedu.com.zone";
    };
    
  3. named-checkconf

  4. cp -a named.localhost magedu.com.zone:為了保證許可權,也可以自己建立,記得修改許可權

    vim magedu.com.zone

    $TTL 1D
    @       IN SOA  dns1 admin.magedu.com (
                                            2018072201      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS       dns1
    dns1           A       192.168.31.71
    web-nginx01    A       1.1.1.1
    web-nginx02    A       1.1.1.2
    app-tomcat01   A       2.2.2.2
    www           CNAME   web-nginx01
    *              A       192.168.31.71 # 泛域名解析
    @              A       192.168.31.71 # 直接解析本域
    $GENERATE 1-100 web-nginx0$ A 1.1.1.$
    
  5. named-checkzone magedu.com magedu.com.zone:如當前工作目錄不是/var/named/,需要使用絕對路徑

  6. rndc reload

實現反向主DNS服務

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本機所有ip繫結53埠
    allow-query     { any; }; # 修修改可以以為任何主機提供服務
    
  2. vim /etc/named.rfc1912.zones

    zone "39.168.192.in-addr.arpa" IN {
            type master;
            file "39.168.192.in-addr.arpa.zone";
    };
    
  3. named-checkconf

  4. cp -a named.localhost 39.168.192.in-addr.arpa.zone:為了保證許可權,也可以自己建立,記得修改許可權

    vim 39.168.192.in-addr.arpa.zone

    $TTL 86400
    @       IN SOA  dns1.magedu.com. admin.magedu.com. (
                                            2018072201      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS      dns1.magedu.com.
    71             PTR     dns1.magedu.com.
    100            PTR     www.qq.com. # 正反向解析結果最好一致
    
  5. named-checkzone 39.168.192.in-addr.arpa 39.168.192.in-addr.arpa.zone:如當前工作目錄不是/var/named/,需要使用絕對路徑

  6. rndc reload

實現遠端動態更新DNS服務

  1. vim /etc/named.rfc1912.zones:在指定zone語句塊中新增

    Allow-update {any;}; # 為了安全最好僅允許指定主機
    
  2. chmod 770 /var/named:動態更新實質上就是named使用者將指定資源記錄寫到生成的/var/named/{指定zone}.jnl檔案中,隨後再同步到指定的zone檔案中,因此需要再目錄下有w許可權

  3. nsupdate

    •>server 192.168.39.71
    •>zone magedu.com
    •>update add ftp.magedu.com 86400 IN A 8.8.8.8 # 這裡的TTL不能省略
    •>send
    •>update delete www.magedu.com A
    •>send
    

實現主從DNS服務

主DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本機所有ip繫結53埠
    allow-query     { any; }; # 修修改可以以為任何主機提供服務
    
    allow-transfer { 192.168.39.72; }; # 允許從伺服器拉取資料,注意中花括號前後均有空格
    
  2. named-checkconf

  3. vim /var/named/magedu.com.zone:將從伺服器資訊新增到指定zone檔案中

    $TTL 1D
    @    IN SOA  dns1 admin.magedu.com (
                     2018072201  ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
            NS      dns1
                   NS      dns2
    dns1           A       192.168.39.71
    dns2           A       192.168.39.72
    web-nginx01    A       1.1.1.1
    web-nginx02    A       1.1.1.2
    app-tomcat01   A       2.2.2.2
    www           CNAME   web-nginx01
    *              A       192.168.39.71
    @              A       192.168.39.71
    $GENERATE 1-100 web-nginx0$ A 1.1.1.$
    
  4. named-checkzone magedu.com. magedu.com.zone

從DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本機所有ip繫結53埠
    allow-query     { any; }; # 修修改可以以為任何主機提供服務
    
    allow-transfer { none; }; # 為了安全禁止任何主機拉取
    
  2. vim /etc/named.rfc1912.zones

    zone "magedu.com" IN {
            type slave;
            masters { 192.168.39.71; };
            file "slaves/magedu.com.slave.zone";
    };
    
  3. named-checkconf

  4. ls /var/named/slave/:檢視是否拉取成功

實現子域委派

父域DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本機所有ip繫結53埠
    allow-query     { any; }; # 修修改可以以為任何主機提供服務
    
    dnssec-enable no; # 關閉加密
    dnssec-validation no;
    
  2. vim /var/named/magedu.com.zone

    $TTL 1D
    @       IN SOA  dns1 admin (
                                            2018072209      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS      dns1
    shanghai       NS      dns2 # 新增shanghai子域資訊
    dns1           A       192.168.39.71
    dns2           A       192.168.39.72
    www.beijing    A       3.3.3.3 # 主機少的情況下,可以直接在父域直接定義子域中的主機
    www            A       1.1.1.1
    
  3. rndc reload

子域DNS:

  1. vim /etc/named.conf

    listen-on port 53 { localhost; }; # 修改本機所有ip繫結53埠
    allow-query     { any; }; # 修修改可以以為任何主機提供服務
    
  2. vim /etc/named.rfc1912.zones

    zone "shanghai.magedu.com" IN {
            type master;
            file "shanghai.magedu.com.zone";
    };
    
  3. scp 192.168.39.71:/var/named/magedu.com.zone shanghai.magedu.com.zone:由於scp預設root身份執行,導致檔案許可權出錯,一定要注意檔案許可權

    vim /var/named/shanghai.magedu.com.zone

    $TTL 1D
    @       IN SOA  dns1 admin (
                                            2018072201      ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
                   NS      dns1
    dns1           A       192.168.39.72
    www            A       2.2.2.2
    
  4. rndc reload

實現轉發DNS服務

forward first/only:表示如果 forwarders list 為非空,預設為first值,伺服器首先請求 forwarders list ,如果 forwarders list 中的DNS主機不應答,該主機將自己去找應答,如果設定值為only,伺服器將只會請求 forwarders中的DNS主機

forwarders:指定用來 forwarding的ip地址. 預設為空列(即不轉發)

全域性轉發

對非本機所負責解析區域的請求,全轉發給指定的伺服器

vim /etc/named.conf

Options {
    forward first|only;
    forwarders { ip;};
};

特定區域轉發

僅轉發對特定的區域的請求,比全域性轉發優先順序高

vim /etc/named.rfc1912.zones

zone "ZONE_NAME" IN {
    type forward;
    forward first|only;
    forwarders { ip;};
};

實現智慧DNS服務

  1. vim /etc/named.conf:acl必須在option前新增,而且注意遷移zone,因為一旦啟用view,所有的zone都必須定義裝載view中

    acl beijingnet {
            192.168.31.0/24;
            10.0.0.0/8;
    };
    acl shanghainet {
            172.18.0.0/16;
    
    };
    acl othernet {
            any;
    };
    options {
     ......
    };
    logging {
     ......  
    };
    
    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.other";
    };
    
    include "/etc/named.rfc1912.zones"; # 刪除此行,所有的zone都將定義在view中
    ......
    
  2. vim /etc/named.rfc1912.zones.bj

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

    vim /etc/named.rfc1912.zones.sh

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

    vim /etc/named.rfc1912.zones.other

    zone "magedu.com" IN {
            type master;
            file "magedu.com.zone.other";
    };
    
  3. vim /var/named/magedu.com.zone.bj

    $TTL 1D
    @    IN SOA  dns1 admin (
                     2018072209  ; serial
                     1D  ; refresh
                     1H  ; retry
                     1W  ; expire
                     3H )    ; minimum
            NS      dns1
    dns1           A       192.168.39.71
    www            A       1.1.1.1
    

    vim /var/named/magedu.com.zone.sh

    ......
    www             A       2.2.2.2
    

    vim /var/named/magedu.com.zone.other

    ......
    www             A       3.3.3.3
    

實現網際網路架構DNS服務

12374416-7ce3c9fae65d7dbd.png
DNS架構.png

注意:

  • 從後往前搭建,好測試
  • 測試時注意rndc flush,因為有快取時優先使用快取
  1. 配置www主機:

    • yum install -y httpd

    • vim /var/www/html/index.html

      Welcome to magedu!
      
    • systemctl start httpd

  2. 配置主DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      allow-transfer   { 192.168.39.75; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /etc/named.rfc1912.zones

      zone "magedu.com" IN {
              type master;
              file "magedu.com.zone";
      };
      
    • named-checkconf

    • vim /var/named/magedu.com.zone

      $TTL 1D
      @              IN  SOA  dns1  admin ( 
                              2018072401
                              1D
                              2H
                              3D
                              1D )
              NS   dns1
              NS   dns2
      dns1    A    192.168.39.74
      dns2    A    192.168.31.75
      www     A    192.168.31.76
      
    • chmod 640 magedu.com.zone

    • chown :named magedu.com.zone

    • named-checkzone magedu.com. magedu.com.zone

    • systemctl start named

  3. 配置從DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      allow-transfer   { 192.168.39.75; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /etc/named.rfc1912.zones

      zone "magedu.com" IN {
              type slave;
              masters { 192.168.39.74; };
              file "slaves/magedu.com.slave.zone";
      };
      
    • named-checkconf

    • systemctl start named

  4. 配置comDNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /etc/named.rfc1912.zones

      zone "com" IN {
              type master;
              file "com.zone";
      };
      
    • named-checkconf

    • vim /var/named/com.zone

      $TTL 1D
      @              IN  SOA  dns1  admin ( 
                              2018072401
                              1D
                              2H
                              3D
                              1D )
              NS   dns1
      magedu  NS   dns2
      magedu  NS   dns3
      dns1    A    192.168.39.73
      dns2    A    192.168.39.74
      dns3    A    192.168.39.75
      
    • chmod 640 com.zone

    • chown :named com.zone

    • named-checkzone com. com.zone

    • systemctl start named

  5. 配置根DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      dnssec-enable no;
      dnssec-validation no;
      
      zone "." IN {
              type master;
              file "root.zone";
      };
      
    • named-checkconf

    • vim /var/named/root.zone

      $TTL 1D
      @              IN  SOA  dns1  admin ( 
                              2018072401
                              1D
                              2H
                              3D
                              1D )
              NS   dns1
      com     NS   dns2
      dns1    A    192.168.39.72
      dns2    A    192.168.39.73
      
    • chmod 640 root.zone

    • chown :named root.zone

    • named-checkzone . root.zone

    • systemctl start named

  6. 配置區域網DNS:

    • vim /etc/named.conf

      listen-on port 53 { localhost; };
      allow-query     { any; };
      dnssec-enable no;
      dnssec-validation no;
      
    • vim /var/named/named.ca

      .         86400       IN   NS  dns1
      dns1      86400            A   192.168.39.72
      
    • systemctl start named

  7. 配置client:

    • vim /etc/resolv.conf

      nameserver 192.168.39.71
      

編譯安裝BIND

  1. 下載bind

    • isc.org
  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/ --without-openssl --disable-ipv6 --disable-chroot --enable-threads
    • make
    • make install
  3. 環境變數

    • vim /etc/profile.d/named.sh

      export PATH=/usr/local/bind9/bin:
      /usr/local/bind9/sbin/:$PATH
      
  4. 庫和標頭檔案

    • vim /etc/ld.so.conf.d/named.conf

      /usr/local/bind9/lib
      
    • ldconfig –v

    • ls -sv /usr/local/bind9/include /usr/include/named

  5. man幫助

    • vim /etc/man.config | /etc/man_db.conf

      MANPATH /usr/local/bind9/share/man
      
    • man named.conf

  6. 主配置檔案

    • 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;};
      };
      
  7. 區域資料庫

    • 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
      
    • 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.
      
  8. 設定許可權

    • chmod 640 /var/named/*
    • chmod 640 /etc/named/named.conf
    • chgrp -R named /var/named/
    • chgrp named /etc/named/named.conf
  9. 啟動服務和測試

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

相關文章