搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

1基本知識點

DNS服務

DNS:Domain Name System 應用層協議
C/S,53/udp, 53/tcp
BIND:Bekerley Internat Name Domain
ISC (www.isc.org)
本地名稱解析配置文件:hosts

DNS域名

根域
一級域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,arpa
三類:組織域、國家域(.cn, .ca, .hk, .tw)、反向域
二級域名
三級域名
最多127級域名
ICANN(The Internet Corporation for Assigned Names and Numbers)
互聯網名稱與數字地址分配機構,負責在全球範圍內對互聯網通用頂級域名
(gTLD)以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統
的管理

DNS域名結構

搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

DNS解析

DNS查詢類型:
遞歸查詢
迭代查詢
名稱服務器:域內負責解析本域內的名稱的主機
根服務器:13組服務器
解析類型:
FQDN --> IP
IP --> FQDN
注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹

DNS服務器類型

DNS服務器的類型:
主DNS服務器
從DNS服務器
緩存DNS服務器(轉發器)

  • 主DNS服務器:管理和維護所負責解析的域內解析庫的服務器
  • 從DNS服務器:從主服務器或從服務器“複製”(區域傳輸)解析庫副本
    序列號:解析庫版本號,主服務器解析庫變化時,其序列遞增
    刷新時間間隔:從服務器從主服務器請求同步解析的時間間隔
    重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔
    過期時長:從服務器聯繫不到主服務器時,多久後停止服務
  • “通知”機制:主服務器解析庫發生變化時,會主動通知從服務器

資源記錄

區域解析庫:由衆多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

2基本環境安裝

root:~ # yum install -y bind
root:~ # vim /etc/named.conf
  • 修改這兩行,讓所有主機都可訪問

    listen-on port 53 { localhost; };
    allow-query { any; }
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

root:/etc/named # systemctl start named.service

3主從服務器搭建

搭建主服務器

  • 修改bind 配置文件
vim /etc/named.conf
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };  
allow-transfer {從服務器IP;};          #只允許從服務器同步

vim /etc/named.rfc1912.zones
添加
zone "qh.com" IN {
        type master;
        file "qh.com.zone";
}
  • 編輯DNS區域數據庫文件
root:/etc/named # cp -p /var/named/named.localhost /var/named/qh.com.zone
root:/var/named $ vi /var/named/qh.com.zone
$TTL 1D
@       IN SOA  master qh.com. (
                                        2019042210      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS       master
master      A    192.168.64.151
dbserver1   A    1.1.1.1
dbserver2   A    2.2.2.2

root:~ # systemctl restart named.service #重啓服務

  • 測試
root:~ $ dig dbserver1.qh.com @192.168.64.151

搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

搭建從服務器

yum install bind 
vim /etc/named.conf
//  listen-on port 53 { 127.0.0.1; };
//  allow-query     { localhost; };  
allow-transfer {none;};                                        #不允許任何機器同步
vim /etc/named.rfc1912.zones
zone "qh.com" {
    type slave;
    masters {主服務器IP;};                                                                                         
    file "slaves/qh.com.slave";
};
root:~ # systemctl start named.service 
  • 從服務器進行同步
root:/var/named/slaves # cp -p /var/named/named.localhost /var/named/slave/qh.com.slave
root:/var/named # cd slaves/
root:/var/named/slaves # chmod g+w qh.com.slave 
root:/var/named/slaves # rndc reload
server reload successful
root:/var/named/slaves # ll
total 4
-rw-rw---- 1 root named 152 Jun 21  2007 qh.com.slave
  • 測試
    root:~ $ vi /etc/sysconfig/network-scripts/ifcfg-ens33

    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

root:~ $ service network restart 
Restarting network (via systemctl):                        [  OK  ]
root:~ $ cat /etc/resolv.conf
; generated by /usr/sbin/dhclient-script
search localdomain
nameserver 192.168.64.151
nameserver 192.168.64.152
  • 斷開151網卡
  • 在客戶機測試
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 說明是從從服務器解析地址的,主從服務器已成功

4搭建反向主服務器

  • 配置文件
zone "64.168.192.in-addr.arpa" IN {
        type master;    
        file "192.168.64.zone";
};
  • 區域數據庫文件
root:/var/named $ cp -p qh.com.zone 192.168.64.zone
root:/var/named $ vim 192.168.64.zone
$TTL 1D
@ IN SOA master qh.com. ( 1 1H 10M 12H 1D )
     NS  master
master A 192.168.64.151
7    PTR websrv.qh.com.
6    PTR  websrv.qh.com.
100  PTR mail.qh.com.
root:~ $ rndc reload
root:~ $ systemctl restart named.service
  • 測試
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

5父域委派子域到另一臺服務器上

  • 主服務器
    yum install bind 
    vim /etc/named.conf
    //  listen-on port 53 { 127.0.0.1; };
    //  allow-query     { localhost; };
  • 在子域的DNS服務器上192.168.64.153
root:/var/named # vi /etc/named.rfc1912.zones 
zone "beijing.qh.com" IN {
        type master;
        file "beijing.qh.com.zone";
};

root:/var/named # cp -p named.empty beijing.qh.com.zone
root:/var/named # chmod g+w beijing.qh.com.zone
root:~ $ vim /var/named/beijing.qh.com.zone
$TTL 1D
@   IN SOA  master beijing.qh.com. (
                    2019042214  ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
            NS   master
master      A    192.168.64.153
websrv     A    3.3.3.3
www       CNAME  websrv    #此處可使用別名

root:~ $ systemctl start named.service
  • 測試成功
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

    6實現智能DNS

  • 主DNS
root:~ # vim /etc/named.conf #三個不同地區網段
acl beijingnet{
        192.168.64.0/24;
};
acl shanghainet{
        192.168.65.0/24;
};
acl othernet{
        any;
};
view beijingview{
        match-clients {beijingnet;};
        include "/etc/named/named.rfc1912.zones.bj";
};
view shanghaiview{
        match-clients {shanghainet;};
        include "/etc/named/named.rfc1912.zones.sh";
};
view otherview{
        match-clients {othernet;};
        include "/etc/named.rfc1912.zones";
};

############################## zone開頭的記錄要放到includ包含的/etc/named.rfc1912.zones文件裏

搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

root:/var/named # cp -p qh.com.zone qh.com.bj    ##創建北京與上海數據庫
root:/var/named # cp -p qh.com.zone qh.com.sh

root:/var/named # cat qh.com.bj 
$TTL 1D
@   IN  SOA master qh.com ( 1 1D 1H 1W 3H )
        NS master
master  A  192.168.64.151
www     A  6.6.6.6

root:/var/named # vi qh.com.sh
$TTL 1D
@   IN  SOA master qh.com ( 1 1D 1H 1W 3H )
        NS master
master  A  192.168.64.151
www     A  7.7.7.7

root:/var/named # cp qh.com.sh qh.com.zone  #其他地區數據庫
cp: overwrite ‘qh.com.zone’? y

root:/var/named # vi qh.com.zone 
$TTL 1D
@   IN  SOA master qh.com ( 1 1D 1H 1W 3H )
        NS master
master  A  192.168.64.151
www     A  8.8.8.8
  • 共三個數據庫,對應不同地區
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
root:~ $ cp -p /etc/named.rfc1912.zones /etc/named/named.rfc1912.zones.bj
root:~ $ cp -p /etc/named.rfc1912.zones /etc/named/named.rfc1912.zones.sh
  • 共三個區域數據庫文件
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 開始關聯數據庫
root:/etc/named # vi named.rfc1912.zones.bj

搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

root:/etc/named # vi named.rfc1912.zones.sh

搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
原有named.rfc1912.zones配置不變
搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

  • 語法檢查

搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

  • 重啓服務
#報錯
root:/var/named # rndc reload
rndc: connect failed: 127.0.0.1#953: connection refused
# 嘗試先重啓服務在加載

搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

  • 測試
    必須把DNS指向所配服務器
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • DNS服務器 有兩個ip段
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 以64網段
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

  • 以65網段
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 其他網段
    臨時加一個網段
    服務器:ip a a 192.168.63.1/24 dev ens33
    客戶端:ip a a 192.168.63.2/24 dev ens33
  • 測試均已成功
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

    7互聯網DNS架構實驗

  • 架構圖
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 共7臺主機,聯合實現互聯網dns架構
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 1將客戶端dns服務器指向本地dns服務器
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 2將網站搭建好
root:~ # yum install httpd
root:~ # cd /var/www/html/
root:/var/www/html # echo 192.168.64.57,hello >index.html
root:/var/www/html # chmod a+r index.html
root:/var/www/html # service httpd restart
  • 3客戶端測試
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

  • 4配置主masterDNS
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
allow-transfer {192.168.64.47;}; 
root:~ # vi /etc/named.rfc1912.zones
zone "qh.com" IN {
        type master;
        file "qh.com.zone";
};

root:~ # cd /var/named/
root:/var/named # vi qh.com.zone
$TTL 1D
@ IN SOA ns1 qh.mail.com. ( 1 1H 10M 1D 3H )
        NS ns1
        NS ns2

ns1 A 192.168.64.37
ns2 A 192.168.64.47
www A 192.168.64.57

root:/var/named # chgrp named qh.com.zone
root:/var/named # chmod 640 qh.com.zone
#### 語法檢查
root:/var/named # named-checkconf
#### 啓動服務
root:/var/named # systemctl start named.service
  • 5客戶端測試master服務器
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 6搭建從服務器
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
allow-transfer {none;}; 
root:~ # vi /etc/named.rfc1912.zones
zone "qh.com" {
    type slave;
    masters {192.168.64.37;};                                              
    file "slaves/qh.com.slave";
};
root:/var/named/slaves # systemctl start named.service 
root:/var/named/slaves # rndc reload                   
root:/var/named/slaves # ll
total                                  #已同步
-rw-r--r-- 1 named named 269 Apr 23 16:34 qh.com.slave
  • 7測試從服務器
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 8配置com域服務器
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
allow-transfer {none;}; 
------------------------------------------------
root:~ # vi /etc/named.rfc1912.zones
zone "com" IN {
        type master;
        file "com.zone";
};
---------------------------------------------------------
root:~ # cd /var/named/
root:/var/named # vim com.zone
$TTL 1D
@ IN SOA NS1 qh.mail.com. (1 1D 1H 1W 3D )
        NS ns1
qh      NS qhns1
qh      NS qhns2
ns1 A 192.168.64.27
qhns1 A 192.168.64.37   #主服務器
qhns2 A 192.168.64.47   #從服務器

root:/var/named # chgrp named com.zone 
root:/var/named # chmod g+w com.zone 
root:/var/named # systemctl start named.service 
root:/var/named # rndc reload
server reload successful
  • 9測試 (通過父域192.168.64.27測試)
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 10搭建根DNS
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
zone "." IN {
        type master;          #改爲master自己做根
        file "root.zone";
};

root:~ # cd /var/named/
root:/var/named # vim root.zone
$TTL 1D
@ IN SOA ns1 qh.mail.com. (1 1D 1H 1W 3D )
        NS ns1
com     NS comns1
ns1 A 192.168.64.17
comns1 A 192.168.64.27

root:/var/named # chgrp named com.zone 
root:/var/named # chmod g+w com.zone 
root:/var/named # systemctl start named.service 
  • 11測試(通過主根服務器測試)
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗
  • 12配置本地dns服務器
root:~ # yum install bind
root:~ # vi /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };

root:/etc/sysconfig/network-scripts # vi /var/named/named.ca #改爲下面配置
.                       518400  IN      NS      a.root-servers.net.

a.root-servers.net.     3600000 IN      A       192.168.64.17
  • 13清緩存
    root:/var/named # rndc flush #清理所有dns緩存
  • 14在本地dns修改安全配置
root:~ # vi /etc/named.conf 
dnssec-enable no;
dnssec-validation no;
  • 15測試
    搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網DNS架構實驗

一些過程中可能遇到的錯誤

root:/var/named # systemctl start named.service
Job for named.service failed because the control process exited with error code. See "systemctl status named.service" and "journalctl -xe" for details.

一般可以通過systemctl status named.service -l 命令可以查看當前錯誤類型
搭建DNS主從服務器實現反向解析,子域,轉發,智能DNS及排錯和互聯網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.
• 可使用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記錄,可能產生迴環
•est.example.com. IN CNAME lab.example.com.
•lab.example.com. IN CNAME test.example.com.
•正確配置PTR記錄,許多服務依賴PTR,如sshd,MTA
•正確配置輪詢round-robin記錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章