DNS基礎

DNS:地址解析服務應用層協議

udp 53 : 主從同步和查詢(現在大部分使用53/udp

tcp 53: 主從同步

953 端口爲rndc的管理端口


本地解析文件

本地名稱解析配置文件:hosts

Linux  :  /etc/hosts

windows :  C:\Windows\System32\drivers\etc\hosts


關於緩存

LINUX客戶端無緩存

服務端清空緩存 :rndc flush

WINDOWS客戶端

ipconfig/displaydns 查看緩存

ipconfig/flushdns 清空緩存 

-------------------------------------------------


DNS查詢類型:

        遞歸查詢:發出一次請求就能得到最終結果的查詢

        迭代查詢:服務器在發出請求後,有可能得到參考答案,也有可能得到最終答案,通常得到一個最終答案需要發送多次請求,任何主機都不支持迭代查詢,所以需要通過dns,幫助主機去查詢。
名稱服務器:城內負責解析城內的名稱的主機;

        根服務器:13組服務器

解析類型:


Name  ----> IP  (正向)

IP  ---->  Name (反向)

注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹;


 /etc/resolv.conf    #DNS客戶機配置文件

用於設置DNS服務器的IP地址及DNS域名,還包含了主機的域名搜索順序


[root@markpain ~]# cat /etc/resolv.conf  //查看該文件中的內容
# Generated by NetworkManager
nameserver 8.8.8.8      //google服務器
nameserver 8.8.4.4      //google備用服務器

resolv.conf關鍵字

nameserver    //定義DNS服務器的IP地址
domain       //定義本地域名
search        //定義域名的搜索列表
sortlist        //對返回的域名進行排序

示例:

domain  qq.com       //定義本地域名
search  www.qq.com  qq.com     //定義域名的搜索列表
nameserver 172.18.22.222     //定義DNS服務器的IP地址
nameserver 172.18.22.111     //定義DNS服務器的IP地址

DNS查詢類型:

        遞歸查詢:發出一次請求就能得到最終結果的查詢

        迭代查詢:服務器在發出請求後,有可能得到參考答案,也有可能得到最終答案,通常得到一個最終答案需要發送多次請求,任何主機都不支持迭代查詢,所以需要通過dns,幫助主機去查詢。
名稱服務器:城內負責解析城內的名稱的主機;

        根服務器:13組服務器

解析類型:

Name  ----> IP  (正向)

IP  ---->  Name (反向)

注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹;


DNS服務器類型

DNS查詢類型:遞歸查詢和迭代查詢

主DNS服務器:管理和維護所負責解析的域內解析庫的服務器,主要用於管理

從DNS服務器:從主服務器或從服務器上覆制,他是以主DNS的SOA記錄中的序列號來判斷是否更新記錄

緩存DNS服務器(轉發器,不做任何解析,只是幫助客戶端去根服務器上問地址,並且緩存)

轉發DNS服務器


主DNS服務器:管理和維護所負責解析的域內解析庫的服務器 ;解析庫由管理維護;

從DNS服務器:從主服務器或其他的從服務器哪裏“複製”(區域傳輸)解析 庫副本;

序列號:解析庫版本號,前提: 主服務器解析庫變化時,其序列遞增;

刷新時間間隔:從服務器從主服務器請求同步解析的時間間隔;

重試時間間隔:從服務器請求同步失敗時,再次嘗試時間間隔;

過期時長:從服務器聯繫不到主服務器時,多久後停止服務;

        

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

區域傳輸:

完全傳輸:傳送整個解析庫

增量傳輸:傳遞解析庫變化的那部分內容

  DNS:

Domain: 

正向:FQDN --> IP(域名--->IP地址)

反向: IP --> FQDN

        各需要一個解析庫來分別負責本地域名的正向和反向解析

正向區域

反向區域

FQDN: Fully Qualified Domain Name(完全合格域名或完全限制域名)

             例如:www.baidu.com.   或www.magedu.com.


一次完整的查詢請求經過的流程: 

Client -->hosts文件 -->DNS Service   (遞歸)

                Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> 頂級域名DNS-->二級域名...---vvvv

    解析答案:

    肯定答案:{    權威答案:區域負責人的答案

    {    非權威答案

    否定答案:請求的條目不存在等原因導致無法返回結果;


區域解析庫:由衆多RR組成:

資源記錄:Resource Record, RR

記錄類型:A(IPv4 -->域名,正向解析), AAAA(IPv6), PTR(反向解析), SOA(定義域是由誰負責的), NS(定義解析域的DNS服務器), 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,郵件交換器


資源記錄定義的格式:

語法:name [TTL] IN rr_type value

注意:

(1) TTL可從全局繼承

(2) @可用於引用當前區域的名字

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

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

SOA記錄

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

 value: 有多部分組成

(1) 當前區域的主DNS服務器的FQDN,也可以使用當前區域的名字;

(2) 當前區域管理員的郵箱地址;但地址中不能使用@符號,一般用.替換,例如linuxedu.magedu.com

(3) 主從服務區域傳輸相關定義以及否定的答案的統一的TTL


例如:

 

magedu.com.     86400     IN     SOA     ns.magedu.com.    nsadmin.magedu.com. (
                                       2018042201             ;序列號
                                       2H                     ;新時間
                                       10M                    ;重試時間
                                       1W                     ;過期時間
                                       1D                     ;否定答案的TTL值
                                       )

NS記錄

name: 當前區域的名字

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

                    注意:一個區域可以有多個NS記錄

例如:

#S記錄
magedu.com.     IN     NS     ns1.magedu.com.
magedu.com.     IN     NS     ns2.magedu.com.    
#記錄
(mx1.magedu.com.             IN         A         3.3.3.3 )
(mx2.magedu.com.             IN         A         4.4.4.4 )


注意:

(1) 相鄰的兩個資源記錄的name相同時,後續的可省略

(2) 對NS記錄而言,任何一個ns記錄後面的服務器名字 ,都應該在後續有一個A記錄

MX記錄

 name: 當前區域的名字

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

 一個區域內,MX記錄可有多個;但每個記錄的value之前應 該有一個數字(0-99),表示此服務器的優先級;數字越小優 先級越高 

         例如:

#MX記錄
magedu.com.     IN     MX     10     mx1.magedu.com.
magedu.com.     IN     MX     20     mx2.magedu.com.
#A記錄
(mx1.magedu.com.             IN         A         3.3.3.3 )
(mx2.magedu.com.             IN         A         4.4.4.4 )


  注意:

(1) 對MX記錄而言,任何一個MX記錄後面的服務器名字 ,都應該在後續有一個A記錄

A記錄

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

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

例如:

#記錄  
---"名字可以通過多條記錄定義多個不同的值;此時 DNS服務器會以輪詢方式響應 "
www.magedu.com.             IN         A         1.1.1.1 #一個域名有多個dns主機,兩個dns服務器輪詢解析。
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
注意:
#A記錄
---  "免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解 析至某特定地址"
$GENERATE 1-254 HOST$        A    1.2.3.$  #定義“$”爲變量,變量值爲1-254,代表 HOST1對應4.5.6.1 - HOST100對應的 4.5.6.100
$GENERATE 1-100 server$      A    4.5.6.$  #定義“$”爲變量,變量值爲1-100,代表server1對應 4.5.6.1-server100對應的 4.5.6.100
*.magedu.com.               IN         A         5.5.5.5  #加“*”爲泛域名解析
magedu.com.                 IN         A         6.6.6.6


 其它記錄

 AAAA:(用法與A相同)

name: FQDN

value: IPv6

PTR:

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

value: FQDN

例如:


#PTR記錄(反向解析)
4.3.2.1.in-addr.arpa.     IN     PTR     www.magedu.com.
    "如1.2.3爲網絡地址,可簡寫成:"    
4                         IN     PTR     www.magedu.com.



注意:網絡地址及後綴可省略;主機地址依然需要反着寫


CNAME:---  別名記錄

name: 別名的FQDN

value: 真正名字的FQDN

 例如:(別名----->真名


#CNAME記錄
www.baidu.com.      IN     CNAME     www.a.shifen.com.
"別名"                 IN     CNAME        "真名"
#A記錄
(www.shifen.com.    IN         A       6.6.6.6)


子域授權:每個域的名稱服務器,都是通過其上級名稱服務器在解析庫進 行授權

類似根域授權tld:"
# NS記錄
.com.             IN         NS         ns1.com.
.com.             IN         NS         ns2.com.
# A記錄
ns1.com.          IN         A          2.2.2.1
ns2.com.          IN         A          2.2.2.2
"magedu.com. 在.com的名稱服務器上,解析庫中添加資源記錄"
# NS記錄
magedu.com.       IN        NS         ns1.magedu.com. #指明名稱服務器
magedu.com.       IN        NS         ns2.magedu.com.
magedu.com.       IN        NS         ns3.magedu.com.
# A記錄
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:粘合記錄,父域授權子域的記錄 (用於將上級服務器和下級服務器建立起來關聯關係,由上級服務器把對某個子域的解析能力,授予給域內的某個服務器即名稱服務器,並指明服務器IP地址)

BIND的安裝配置

dns服務程序包:bind,unbound(兩個軟件)

程序名:named,unbound

程序包:yum list all bind*

bind:服務器

bind-libs:相關庫

bind-utils:客戶端(測試工具)

bind-chroot: /var/named/chroot/  僞跟、監獄(早期不建議安裝)

bind服務器

服務腳本和名稱:/etc/rc.d/init.d/named

/usr/lib/systemd/system/named.service

主配置文件:/etc/named.conf, /etc/named.rfc1912.zones,(rfc:請求註解文檔)   /etc/rndc.key (輔助配置文檔,前提使用rpm包安裝)

解析庫文件:/var/named/ZONE_NAME.ZONE

區域配置文件:/etc/named.rfc1912.zones,

腳本配置文件:/etc/sysconfig/name

日誌文件:var/log/name.log

根目錄:cd /var/named/

存儲13跟服務器地址:  /var/named/named.ca

提供本地迴環地址解析文件 /var/named/named.localhost    和  /var/named/named.loopback


注意:

(1) 一臺物理服務器可同時爲多個區域提供解析

(2) 必須要有根區域文件;/etc/named.ca

(3) 應該有兩個(如果包括ipv6的,應該更多)實現localhost(本地主機) 和本地迴環地址的解析庫 

 rndc :  (remote name domain controller,)遠程管理工具,默認與bind安裝在同一主機,且只能通過127.0.0.1連接 named進程 : 提供輔助性的管理功能;rndc也是一個服務、也需要監聽在套接字上,默認使用 953/tcp 端口,“/etc/rndc.key ”就是rndc 連接ndmed 時的共享密鑰(域共享密鑰)。


配置文件

 主配置文件: "/etc/named.conf"   和  "/etc/named.rfc1912.zones"

全局配置:options {}; 

日誌子系統配置:logging {};

區域定義:本機能夠爲哪些zone進行解析,就要定義哪 些zone

                        zone "ZONE_NAME" IN {};

        注意:任何服務程序如果期望其能夠通過網絡被其它主機訪 問,至少應該監聽在一個能與外部主機通信的IP地址上 。


"區域類型"

"主master"

"從slave"

"跟hint"

"轉發 forward"


"監聽端口類型:"

# localhost(本機所有地址)

# any(所有)

# none (什麼也沒有)

# localnet 相同子網


主配置文件語法檢查:(檢查/named.conf和named.rfc1912.zones文件的語法錯誤)

~]#  named-checkcof

 解析庫文件語法檢查: ("域名" 文件

 ~]#  named-checkzone "magedu.com" /var/named/magedu.com.zone


更改完配置文件,從讀配置文件

~]#  rndc status | reload ;

~]#  service named reload ;從新載讀配置文件,不需要重啓,(能使用此命令,就不要從起服務)

~]#  rndc reload #重新讀取配置文件,有時候會無效,需要重新啓動服務

~]#  rndc flush #清除DNS緩存


配置主DNS服務器(正向)

主DNSserver負責的域,解析不到就會發起迭代查詢,

= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
"主從結構圖"                                                                               
master(主)      push(主,更新推送)           slave(從)                                 
l- - - - l      - - - - > - - - - - >     l- - - - l                                                  
l          l                                       l          l     DNS解析請求         l- -l
l- - - - l      <- - - - - - <- - - -     l- - - - l         < - - - <- -         l- -l
ns1.server        pull(從,週期性下載)     ns2.server                 客戶端(pc)
 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
"DNS解析結構圖"
www.magedu.com(wed)           DNS.server(主)
l- - - - l                    l- - - - l           DNS解析請求                
l        l                      l          l                 < - - - <- -                         l- -l
l- - - - l                    l- - - - l                 - - > - - ->                          l- -l
ns1.server                    ns1.server         DNS解析結果           客戶端(pc)
   ^^^                                                                   vvv
  -    -    -    -    -    -    -    -    -    -    -    -    -    -    -    -  
                      收到DNS解析結果,有了地址再去訪問wed服務
 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =


1) 在主配置文件中定義區域

~]# vim /etc/named.conf  #修改以下部分即可
options {
        listen-on port 53 { localhost; } #監聽端口類型
        ...                      
        allow-query     { any; }; #允許所有人訪問
        recursion yes;    #默認開啓轉發功能,如果僅提供內網服務,關閉即可“no”,我們這裏開啓否則不能實現迭代查詢。
        allow-transfer {172.16.100.12;}; #安全加固,允許誰從我這複製區域數據,允許輔助DNS
};
~]# vim /etc/named.conf  文件 或 "/etc/named.rfc1912.zones" 文件 (操作文檔前做好備份,建議在後者操作)
格式:
zone "ZONE_NAME" IN {
    type { master; };
    file "ZONE_NAME.zone";
};
區域類型:
主master
從slave
跟hint
轉發 forward

 ~]# cp /etc/named.rfc1912.zones{,.bak}   #操作文檔前做好備份
 -----------------------------
 ~]# vim /etc/named.rfc1912.zones
zone "magedu.com" IN {  #域名
        type master;   #類型,主人
        file "magedu.com.zone";  # 區域拓展數據庫名字
};
----------------------------------
主配置文件語法檢查:(檢查/named.conf和named.rfc1912.zones文件的語法錯誤)
~]#  named-checkco


(2) 定義區域解析庫文件

出現的內容

宏定義

資源記錄

~]#  cp -p  /var/named/named.loopback  /var/named/magedu.com.zone  #複製模板文件進行操作,-p 保留原文件權限,和所屬組。
 如果沒有加 -p 執行下面兩條命令
~]# chmod 640 magedu.com.zone
~]# chown :named  magedu.com.zone
-rw-r----- 1 root  named 152 Jun 21  2007 magedu.com
 ------------------------------------------
 ~]# vim  /var/named/magedu.com.zone
$TTL 86400  
$ORIGIN magedu.com.
@       IN       SOA    ns1.magedu.com.  admin.magedu.com (
(magedu.com.zone)                                        1       ; serial  (序列號,主要作用是標識主服務器的數據庫文件發生變化,數字遞增,若不變,輔助DNS不會更新數據庫文件)
                                        1D      ; refresh   #每隔多久推送數據庫文件
                                        1H      ; retry     #發生錯誤多少時間重試
                                        1W      ; expire    #多長時間後過期
                                        0 )     ; minimum   #錯誤記錄緩存多少時間
        IN      NS              ns1
        IN      NS              ns2
        IN      MX      10      mx1
        IN      MX      20      mx2
ns1     IN      A               172.16.100.11
ns2     IN      A               172.16.100.12
mx1     IN      A               172.16.100.13
mx2     IN      A               172.16.100.14
www     IN      CNAME           websr
websrv  IN      A               172.16.100.11
websrv  IN      A               172.16.100.12


---------------------------------------------------
 解析庫文件語法檢查: ("域名" 文件)
~]#  named-checkzone "magedu.com" /var/named/magedu.com.zone
 從新加載配置文件“systemctl reload  named ”命令也可以,建議使用“rndc reload ”
~]#  rndc reload  
本機測試 IP地址 “127.0.0.1 ”
~]#  dig  www.magedu.com   @172.16.100.11 #默認查詢A記錄
~]#  dig  -t NS  www.magedu.com   @172.16.100.11 #指定查詢NS記錄
~]#  dig  -t NS  .  @172.16.100.11 #查詢跟的NS記錄
~]#  dig  +teace  www.magedu.com  #跟蹤解析過程
~]#  dig  -t mx  magedu.com #查詢誰是magedu.com 域的郵件服務器
==========================
反向查詢,通過IP查域名
 ~]#  dig  -t prt  11.100.16.172.in-addr.arpa   @172.16.100.11 #反向解析域名的
 ~]#  dig  -x  172.16.100.11   @172.16.100.11 #反向解析域名的

==========================
客戶端,更改DNSserv指向,網卡配置文件更改

 ~]# dig +bufsize=1200 +norce @a.root-servers.net 命令執行的結果就是/var/named/named/ca


反向區域

區域名稱:網絡地址反寫.in-addr.arpa.

172.16.100. --> 100.16.172.in-addr.arpa.

 (1) 在主配置文件中定義區域

~]# vim /etc/named.conf
文件配置與正向解析相同,
 -----------------------------
 ~]# vim /etc/named.rfc1912.zones
 zone "100.16.172.in-addr.arpa." IN { #域名
    type master;                     #類型,主
    file "100.16.172.in-addr.arpa.zone";  # 區域拓展數據庫名字
};
----------------------------------
主配置文件語法檢查:(檢查/named.conf和named.rfc1912.zones文件的語法錯誤)
~]#  named-checkco


 (2) 定義區域解析庫文件

注意:不需要MX,以PTR記錄爲主

~]#  cp -p  /var/named/named.loopback  /var/named/100.16.172.in-addr.arpa.zone  #複製模板文件進行操作,-p 保留原文件權限,和所屬組。
 如果沒有加 -p 執行下面兩條命令
~]# chmod 640 magedu.com.zone
~]# chown :named  magedu.com.zone
-rw-r----- 1 root  named 152 Jun 21  2007 magedu.com
 ------------------------------------------
 ~]# vim  /var/named/100.16.172.in-addr.arpa.zone
$TTL 86400
$ORIGIN 100.16.172.in-addr.arpa.
@       IN      SOA     ns1.magedu.com. admin.magedu.com. (
                                2018042201      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS          ns1.magedu.com.  #注意域名結尾加“.”否則會加上區域後綴,
        IN      NS          ns2.magedu.com.  #就會變成:ns1.magedu.com.100.16.172.in-addr.arpa.
11      IN      PTR         ns1.magedu.com.
11      IN      PTR         www.magedu.com.
12      IN      PTR         mx1.magedu.com.
12      IN      PTR         www.magedu.com.
13      IN      PTR         mx2.magedu.com.
---------------------------------------------------
 解析庫文件語法檢查: ("域名" 文件)
 ~]#  named-checkzone "100.16.172.in-addr.arpa." /var/named/100.16.172.in-addr.arpa.zone
 反向查詢,通過IP查域名
 ~]#  dig  -t prt  11.100.16.172.in-addr.arpa   @172.16.100.11 #反向解析域名的
 ~]#  dig  -x  172.16.100.11   @172.16.100.11 #反向解析域名的
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章