DNS學習


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


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

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

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

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

只有權威服務器給出的應答纔是權威應答,否則就是非權威應答。爲什麼呢?因爲一個域中所有的主機都是在DNS服務器中的區域數據文件中記錄的,對於主機來說,它們的位置只有直接上層才知道在哪裏。

因此如果解析www.baidu.com時要獲得權威應答,應該將DNS指向baidu.com這個域內負責解析的DNS服務器。

只有權威服務器直接給出的答案纔是永遠正確的,通過緩存得到的答案基本都是非權威應答。當然這不是一定的,因爲權威服務器給的答案也是緩存中的結果,但是這是權威答案。DNS服務器緩存解析的數據庫時間長度是由權威服務器決定的。


DNS緩存

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

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

另外訪問某個域下根本不存在的主機,這個域的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

1、主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

2、從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服務器設置爲轉發器,因爲轉發者轉發給轉發器的查詢是遞歸查詢

一、主從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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章