多區域DNS服務,子域授權,快取DNS及Split分離解析的原理和實現

袋鼠雲艾迪發表於2018-12-10

DNS 伺服器的功能:
正向解析:根據註冊的域名查詢其對應的 IP 地址
反向解析:根據 IP 地址查詢對應的註冊域名(不常用)
DNS(域名解析)伺服器:解析域名—>將域名解析為 IP 地址
例如:客戶端訪問 Web 網站:www.qq.com —-> DNS —-> 騰訊的 Web 伺服器 Full Qualified Domain Name(FQDN),完全合格主機名,以點結尾
站點名.域名字尾
站點名…二級域.一級域
域名分級:
根域 . 一級域 .com .cn .us .tw .kr .hk
二級域 .com.cn .net.cn .org.cn .edu.cn
三級域 .yid.com.cn .haha.com.cn .xixi.com.cn
常見的頂級(一級域名)
國家/地區域: .cn、.us、.kr、.hk、.tw …
組織域: .com、.net、.edu、.org、.gov、.mil …
BIND 域名服務
BIND(Berkeley Internet Name Daemon:伯克利大學 Internet 域名服務)

官方站點:https://www.isc.org/
安裝包名稱:bind:域名服務包 ;bind-chroot:提供虛擬根支援,籠環境
系統服務:named
預設埠:TCP/UDP 53
執行時的虛擬根環境:/var/named/chroot/         #執行時,所有的操作都在虛擬

根下

主配置檔案: /etc/named.conf             #設定本機負責解析的域名是什麼
地址庫檔案: /var/named/                 #主機名與 ip 地址的對應關係

搭建基本的 DNS 服務
服務端: 1.安裝軟體包 、

    [root@svr7 ~]# yum -y install bind bind-chroot 

2.修改配置檔案

[root@svr7 ~]# vim /etc/named.conf
options {
    //listen-on port 53 { 127.0.0.1; };         #預設監聽 127.0.0.1 的 53 埠,該行刪除或註釋
    directory "/var/named";         #指定地址庫檔案存放路徑
    //allow-query { localhost; };   #允許訪問的主機,預設為本機,該行刪除或註釋 
    };
zone "yid.cn" IN {    #指定本機負責解析的域名 
    type master;    #指定本機為權威主 DNS 伺服器 
    file "yid.cn.zone";     #指定地址庫檔案為 yid.cn.zone
};
[root@svr7 ~]# named-checkconf #檢查配置是否正確 

3.建立地址庫檔案 yid.cn.zone

DNS 資源記錄:

SOA:起始授權 
NS:名稱伺服器 A:將名稱解析為 ip 地址
PTR:將 ip 地址解析為名稱 
MX:郵件交換器 
CHAME:設定別名 

[root@svr7 ~]# cd /var/named/ 
[root@svr7 named]# cp -p named.localhost yid.cn.zone #許可權屬性不變拷貝 
[root@svr7 named]# ls -l yid.cn.zone 
-rw-r----- 1 root named 152 6 月 21 2007 yid.cn.zone #必須保證屬組是 named 
[root@svr7 named]# vim yid.cn.zone 
$TTL 1D #DNS 解析的有效時間 1 天 
@ IN SOA .... #@表示本域名,這段不修改
yid.cn. NS svr7.yid.cn. #宣告 yid.cn.域名的 DNS 伺服器為 svr7.yid.cn. 
svr7 A 192.168.4.7 #指定 svr7.yid.cn.的 ip 地址為 192.168.4.7 
www A 1.1.1.1 
ftp A 2.2.2.2 

4.重起 named,設定開機自啟動

[root@svr7 named]# systemctl restart named
[root@svr7 named]# systemctl enable named 

5.客戶端訪問測試:

[root@pc207 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf 
[root@pc207 ~]# nslookup www.yid.cn

多區域 DNS 服務(多寫幾個 zone)
配置檔案/etc/named.conf 新增如下內容:


zone "qq.com" IN { 
    type master; 
    file "qq.com.zone";
};
[root@svr7 named]# vim qq.com.zone 
        qq.com. NS svr7 
        svr7 A 192.168.4.7 
        www A 3.3.3.3 
        ftp A 4.4.4.4

基於 DNS 域名的負載均衡

[root@svr7 named]# vim qq.com.zone 
qq.com. NS svr7 
svr7 A 192.168.4.7 
www A 192.168.4.11 #DNS 伺服器會隨機從 3 個 IP 中選擇一個提供,後面的 域名可以省略
                        A 192.168.4.12 
                        A 192.168.4.13
                        

泛域名解析:以*匹配所有

    [root@svr7 named]# vim qq.com.zone 
    qq.com. NS svr7
    svr7 A 192.168.4.7
    www A 192.168.4.11 
    * A 1.2.3.4

有規律的泛域名解析

函式: $GENERATE 生成連續範圍的數字 

        [root@svr7 named]# vim qq.com.zone 
            qq.com. NS svr7
            svr7 A 192.168.4.7 
            www A 192.168.4.11 
            ftp A 4.4.4.4 
            * A 1.2.3.4 
        $GENERATE 1-50 web$ A 192.168.10.$

DNS 的子域授權

    父域 :www.yid.cn ,由 svr7 伺服器 192.168.4.7 解析 
    子域 :www.bj.yid.cn ,由 pc207 伺服器 192.168.4.207 解析 虛擬機器 A:子域授權 
    
[root@svr7 named]# vim yid.cn.zone #指定子域的 DNS 伺服器 
yid.cn. NS svr7 
bj.yid.cn. NS pc207.bj
svr7 A 192.168.4.7 
pc207.bj A 192.168.4.207 
[root@svr7 named]# systemctl restart named 

虛擬機器 B:搭建子域 DNS 負責解析 bj.yid.cn 域名
修改配置檔案/etc/named.conf

options { 
    directory "/var/named";
};
zone "bj.yid.cn" { 
    type master;
    file "bj.yid.cn.zone";
};
[root@pc207 named]# vim bj.yid.cn.zone
bj.yid.cn. NS pc207 
pc207 A 192.168.4.207 
www A 11.12.13.14 

測試:

[root@svr7 named]# nslookup www.bj.yid.cn 192.168.4.7 
Server: 192.168.4.7 
Address: 192.168.4.7#53
Non-authoritative answer: #非權威解答 
Name: www.bj.yid.cn 
Address: 11.12.13.14

遞迴查詢: 首選 DNS 伺服器到相應其他 DNS 伺服器上詢問,將最終結果帶回(客戶端與首 選 DNS 伺服器互動)
迭代查詢: 每一個 DNS 伺服器告知首選 DNS 伺服器下一個 DNS 伺服器地址(首選 DNS 服務 器與其他 DNS 伺服器互動)
遞迴查詢是預設開啟的
通過設定/etc/named.conf 開關

recursion yes/no;

快取 DNS

作用:加速解析過程,讓客戶端最快得到結果
主要適用環境:網際網路出口頻寬較低的企業區域網;ISP 服務商的公共 DNS 伺服器 
解析記錄來源:
全域性轉發:將請求轉發給指定的公共 DNS(其他快取 DNS),請求遞迴服務 
根域迭代:依次向根、一級、二級......域的 DNS 伺服器迭代 
配置:在/etc/named.conf 的 options 下增加 forwarders { 176.19.0.26; }; #新增轉發器,176.19.0.26 是公共 DNS 的 IP 地址

Split 分離解析:
當收到客戶機的 DNS 查詢請求的時候能夠區分客戶機的來源地址
為不同類別的客戶機提供不同的解析結果(IP 地址)
當不同類別的客戶機請求解析同一個域名時,得到的解析結果不同
適用場景:
訪問壓力大的網站,購買 CDN 服務商提供的內容分發服務:
在全國各地、不同網路內部部署大量映象服務節點
讓客戶端訪問網路中最近/最快的伺服器
方法:BIND 的 view 檢視
根據源地址集合將客戶機分類:
不同客戶機獲得不同結果
客戶機分類得當(所有的客戶端都要找到對應的分類:兜底)
由上到下匹配,匹配即停止
所有的 zone 都必須在 view 欄位裡面
格式:


 view "nsd" { 
     match-clients { 192.168.4.207; } #匹配客戶端的地址 
zone "yid.cn" { 
    ...... 地址庫 1; 
    };
};

 view "abc" { 
     match-clients { any; } #any 兜底 
     zone "yid.cn" { 
         ...... 地址庫 2; 
    };
};

配置 ACL 佇列庫:

acl myip { IP1;IP2;... }; 

修改配置檔案:


[root@svr7 /]# vim /etc/named.conf 
acl myip { 192.168.4.207; 192.168.4.10; 192.168.4.1; 192.168.4.123; }; 
view "nsd" {
    match-clients { 
        myip 
}; 
zone "yid.cn" { 
    type master; 
    file "yid.cn.nsd"; 
    };
};

view "abc" { 
    match-clients { any; }; 
    zone "yid.cn" { 
        type master; 
        file "yid.cn.abc"; 
        };
    };

配置地址庫檔案

[root@svr7 /]# tail -3 /var/named/yid.cn.nsd 
yid.cn. NS svr7
svr7 A 192.168.4.7 
www A 192.168.4.100
[root@svr7 /]# tail -3 /var/named/yid.cn.abc 
yid.cn. NS svr7 
svr7 A 192.168.4.7 
www A 1.2.3.4


相關文章