DNS學習


本篇文章不咋滴,亂七八糟,把參考了


DNS術語;主從DNS服務器配置;DNS綜合實驗

權威服務器和(非)權威應答

權威服務器(權威者)能夠理解爲直接上層域的DNS服務器。例如www.baidu.com這臺主機的上層域是baidu.com,那麼對www來講,它的權威服務器就是baidu.com這個域內負責解析的DNS服務器,而對於baidu.com這個主機來講,它的權威服務器是.com這個域負責解析的DNS服務器。html

更具體的說,某域的權威服務器是能夠直接查看該域數據(即區域數據文件)的DNS服務器,主、從DNS服務器都是權威服務器。web

只有權威服務器給出的應答纔是權威應答,不然就是非權威應答。爲何呢?由於一個域中全部的主機都是在DNS服務器中的區域數據文件中記錄的,對於主機來講,它們的位置只有直接上層才知道在哪裏。數據庫

所以若是解析www.baidu.com時要得到權威應答,應該將DNS指向baidu.com這個域內負責解析的DNS服務器。vim

只有權威服務器直接給出的答案纔是永遠正確的,經過緩存獲得的答案基本都是非權威應答。固然這不是必定的,由於權威服務器給的答案也是緩存中的結果,可是這是權威答案。DNS服務器緩存解析的數據庫時間長度是由權威服務器決定的。緩存


DNS緩存

在Client和DNS服務器這些我的訂製的DNS解析系統中都會使用緩存來加速解析以減小網絡流量和查詢壓力,就算是解析不到的否認答案也會緩存。安全

可是要訪問的主機IP可能會改變,全部使用緩存獲得的答案不必定是對的,所以緩存給的答案是非權威的,只有對方主機的上一級給的答案纔是權威答案。緩存給的非權威答案應該設定緩存時間,這個緩存時間的長短由權威者指定。bash

另外訪問某個域下根本不存在的主機,這個域的DNS服務器也會給出答案,可是這是否認答案,否認答案也會緩存,而且有緩存時間。例如某個Client請求51cto.com域下的ftp主機,可是實際上51cto.com下面可能根本沒有這個ftp主機,那麼51cto.com就會給否認答案,爲了防止Client不死心的訪問ftp搞破壞,51cto.com這個域負責解析的DNS服務器有必要給Client指定否認答案的緩存時間。服務器


主、從dns服務器

dns服務器也稱爲name server,每一個域都必須有dns服務器負責該域相關數據的解析。但dns服務器要負責整個域的數據解析,壓力相對來講是比較大的,且一旦出現問題,整個域都崩潰沒法向外提供服務,這是很是嚴重的事。因此,不管是出於負載均衡仍是域數據安全可用的考慮,兩臺dns服務器已是最低要求了,多數時候應該配置多臺dns服務器。網絡

多臺dns服務器之間有主次之分,主dns服務器稱爲master,從dns服務器稱爲slave。slave上的域數據都是從master上獲取的,這樣slave和master就都能向外提供名稱解析服務。負載均衡

1568377435342

一、主DNS服務器

[root@dns-master ~]# yum install bind -y
[root@dns-master ~]# vim /etc/named.conf 
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
        allow-transfer { 192.168.38.137;};
[root@dns-master ~]# vim /etc/named.rfc1912.zones
zone "taobao.com" IN {
        type master;
        file "db.taobao.com";                                                                                         
};
[root@dns-master ~]# cd /var/named/
[root@dns-master named]# cp -a named.localhost db.taobao.com
[root@dns-master named]# vim db.taobao.com
[root@dns-master named]# cat db.taobao.com 
$TTL 1D
@   IN SOA  master.taobao.com. admin.taobao.com. (
                    1   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  master
    NS  slave
master  A   192.168.38.130
slave   A   192.168.38.137
websrv  A   192.168.38.128
www CNAME   websrv
[root@dns-master named]# systemctl start named

測試:[root@client ~]# nslookup www.taobao.com 192.168.38.130

二、從DNS配置

[root@dns-slave ~]# yum install bind -y
[root@dns-slave ~]# vim /etc/named.conf
//      listen-on port 53 { 127.0.0.1; };
//      allow-query     { localhost; };
        allow-transfer { none; };
[root@dns-slave ~]# vim /etc/named.rfc1912.zones 
zone "taobao.com" IN {
        type slave;
        masters { 192.168.38.130; };
        file "slaves/db.taobao.com";                                  
};
[root@dns-slave ~]# systemctl restart named
[root@dns-slave ~]# ls /var/named/slaves/
db.taobao.com

測試:[root@client ~]# nslookup www.taobao.com 192.168.38.137


配置"僅緩存"dns服務器

清空緩存的命令:rndc flush

dig和nslookup均可以指定DNS服務器查詢

僅用做提供緩存的dns服務器,當有客戶端請求該dns服務器幫忙解析某個地址時,它不會直接爲外界主機提供dns解析,而是本身去找其餘dns服務器解析,並將結果緩存在本地,並將緩存結果提供給客戶端。

也就是說,僅緩存dns服務器其實扮演的角色和客戶端同樣,只不過它還未其餘客戶端提供解析查詢而已。

要配置僅緩存dns服務器,只要配置3個任什麼時候候都必要的域:根域"."、"localhost"域和"1.0.0.127.in-addr.arpa"。也就是說,任何一臺完整的dns服務器,至少都是"緩存"服務器。

因此,僅緩存dns服務器配置以下:

[root@xuexi ~]# vim /etc/named.conf
options {
    directory "/var/named";
};

#zone "jd.com" {
#    type master;
#    file "db.jd.com";
#};

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

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

配置dns轉發服務器

配置成了轉發服務器,named.conf裏全部的zone都將失效(除非配置轉發區和空轉發區),也就是不會再作任何解析(包括對根的查詢),收到的解析請求全都提交給轉發選項裏指定的機器,轉發選項所指定的機器稱爲轉發器。轉發器還能夠指定給上一層。

1568114064179

如圖:192.168.38.133爲轉發者,192.168.38.138配置方式爲:

#options中使用一個forwarders指令
options {
    directory "/var/named";
    forwarders { 192.168.38.128; }; 
//    forward only;     #默認是forward first,即先轉發,轉發失敗自行查詢;forward only即僅轉發,僅轉發的那也不須要域文件了,刪掉directory一行便可
};
include /etc/named.rfc1912.zones;

這表示將192.168.38.133收到的全部查詢請求都交給192.168.38.128這臺轉發器,由這臺轉發器幫忙查詢相關請求,而後回覆給轉發者,由轉發者回復給客戶端

轉發者轉發給轉發器的查詢是遞歸查詢,轉發器必需要親自回覆轉發者

一樣,若是forward留空的,表示該區禁止轉發

options {
    directory "/var/named";
    forwarders { 192.168.38.130; };
};

zone "taobao.com" IN {
    type master;
    forwarders {};
};

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

include /etc/named.rfc1912.zones;

ACL

顧名思義,訪問控制列表,定義一組規則,方便下面引用

acl "acl_name" { 192.168.38/24;192.168.39/24 };

此外,還有4個預約義的acl值:any、none、localhost(DNS服務器的任一IP地址)、localnets(DNS服務器任一ip地址所在網段)

遞歸查詢

dns解析器發起的查詢都是遞歸查詢,因此通常客戶端配置DNS指向誰就表示找誰幫忙作遞歸查詢。若是dns服務器接受它的遞歸查詢請求,則它會去幫助查詢,若是dns服務器不接受它的遞歸查詢請求,則會將遞歸查詢當成迭代查詢看待,讓請求者本身去查詢。

另外,容許遞歸查詢的服務器,因爲要幫忙查詢,因此在遞歸查詢服務器上老是緩存了一些非權威數據,若是是非遞歸查詢服務器,則不用緩存任何數據,只需返回其負責的域的權威數據便可,這對減輕壓力的做用是很是大的。

不要將非遞歸查詢dns服務器設置爲轉發器,由於轉發者轉發給轉發器的查詢是遞歸查詢

1、主從DNS服務器的配置

主服務器配置

1是修改/etc/named.conf

#監聽端口這一行,簡單一點註釋了
// listen-on
#將僅容許localhost查詢這一行註釋,簡單粗暴
// allow-query
#添加一行allow-transfer,簡單理解爲只容許192.168.38.130做爲從服務器獲取DNS數據,放在文件前面就是全局,放在區域中就只對區域生效,沒有這一行的話,***就能經過dig -t axfr jd.com @192.168.38.128獲取到jd.com的全部域名解析狀況
allow-transfer { 192.168.38.130; };

2是修改/etc/named.rfc1912.zones,添加域

#在/etc/named.rfc1912.zones中添加區域,固然添加/etc/named.conf也是能夠的,/etc/named.conf最下面兩行寫着include /etc/named.rfc1912.zones
zone "jd.com" {
        type master;
        file "jd.com.zone";
};

3是添加正向解析域文件/var/named/jd.com.zone

不寫了。如上面所示

DNS大實驗

不寫了。
參考:https://www.cnblogs.com/jzbgltb/p/9967063.html

參考:https://thson.blog.csdn.net/article/details/94427779

注意,這位同窗的文章某些地方仍是有些小問題的

相關文章
相關標籤/搜索