DNS

DNS是什麼web

DNS:Domain Name System,域名系統數據庫

DNS做爲域名和IP地址相互映射的一個分佈式數據庫,可以讓用戶更方便的訪問互聯網。它的正向映射是把一個主機和IP地址關聯起來,它的反向映射則是IP地址到主機名。DNS使用TCP和UDP的53號端口。當前,對於每一級域名長度的限制是63個字符,域名總長度不能超過253個字符。緩存

爲何要用DNS
bash

鏈接到互聯網的主機不可勝數。當我要訪問www.magedu.com這個網站。因爲底層網絡只能理解IP地址,而個人電腦不知道www.magedu.com這臺主機的IP地址。DNS服務器收到查詢請求以後,把查詢到的結果(IP:101.200.188.230)再返還給個人電腦。而後個人電腦再經過IP地址進行訪問。  服務器

wKioL1ddI8iROCm-AADp5FlwnmU856.png

如圖所示:網絡

    一、本機向DNS服務器發送查詢請求。dom

    二、DNS服務器將查詢的結果返還給本機。
tcp

    三、本機經過IP地址訪問www.magedu.com。分佈式

域名:ide

    DNS名稱空間被組織成一個「樹」形結構。每一個完成的域名(例如,www.magedu.com)是這顆樹的分支上的一個節點。完整限定域名(FQDN,Fully Qualified Domain Name)是到一個DNS對象的完整路徑,包括最後一個點。

wKioL1ddJB3QeZ4SAAEIGxahSug847.png


以上述的域名爲例說明,magedu網址是由兩部分組成,標號magedu是這個域名的主體,而最後的標號com則是該域名的後綴,表明的這是一個com國際域名,是頂級域名。而前面的www是網絡名,爲www的域名。DNS規定,域名中的標號由英文字母和數字組成,每一個組成部分(標號)不能超過63個字符,整個FQDN(完整域名)全長不超過256個字符。FQDN不區分大小寫,可是他們一般都採用小寫。RFC2181對域名放開了限制。


域名級別

域名分爲:

國際頂級域名:.com, .net, .org, .edu等

國家地區頂級域名:.cn, .de, .jp, .hk, .uk, .us等

除了頂級域名外,還有二級域名,就是靠近頂級域名左側的字段。如:www.magedu.com中,.magedu就是二級域名。接下來還有三級域名,即靠近二級域名的左側的字段,以此類推還有四級域名等。


DNS查詢類型:

遞歸查詢:客戶端向根服務器發送請求,根服務器並不返回真實的答案,而是推薦它下級的服務器,以此類推,直到查詢IP地址返回給客戶機。

迭代查詢:客戶機向DNS服務器發送請求,DNS服務器直接回復答案給客戶機。


域名解析

正向解析:FQDN到IP地址的解析。

反向解析:IP地址到FQDN的解析。


域名服務器的分類

服務器的類型 說明
主服務器 維護所負責解析的域內解析庫的服務器
從服務器 從主DNS服務器或其它從DNS服務器「複製」(區域傳送)一份解析庫
緩存服務器

緩存之前的查詢,一般沒有本地的區

轉發服務器 負責非本地域名的本地查詢


一次完整的查詢過程

以上述域名www.magedu.com爲例。客戶機向最近的遠端DNS服務器發送查詢請求,DNS服務器首先查看緩存中是否有www.magedu.com這條記錄。若是沒有就向根服務器發送查詢請求,根服務器會告訴你要去請求.com頂級服務器。以後DNS服務器再向頂級域名服務器發送查詢請求,獲得的回覆是向.magedu這個二級域名服務器發送查詢請求。最終,DNS服務器向二級域名發送請求並獲得正確答案返回給客戶機。同時將這次查詢的結果寫入緩存之中,以便下次的查詢。

wKioL1ddLoSic0jUAACaGXDjeEQ223.png

資源記錄

DNS層次結構中的每個區(zone),都有與之相關的一組資源記錄。資源記錄的基本格式是:

name [TTL] IN rr_type value


記錄的類型

類型 名稱 功能
SOA Start Of Authority

定義一個DNS區

NS Name Server 標識服務器,受權子域
A IPv4 Address 名稱到地址的轉換
AAAA IPv6 Address 名稱到IPv6地址的轉換
PTR Pointer 地址到名字的轉換
MX Mail Exchanger 控制郵件的路由
CNAME Canonical Name 主機的呢稱或別名

記錄的類型解釋

SOA

一個SOA記錄標記出一個區,即位於DNS域名空間中相同位置的一組資源記錄的開始位置。一個DNS域的數據一般至少包括兩個區:一個區用來把主機名轉換成IP地址,稱爲正向區,其餘一些區把IP地址反向映射到主機名,稱爲反向區。

1
2
3
4
5
6
7
8
例如:
magedu.com.    86400    IN  SOA    ns.magedu.com.  admin.magedu.com.    (
                2018041401    ; 序列號
                2H    ;刷新時間
                10M    ;重試時間
                1W    ;過時時間
                1D    ;否認答案的TTL值
)

NS

NS(域名服務器)記錄標識一個區的權威服務器(主服務器和從服務器),並把子域受權給其餘機構。NS記錄一般直接放在這個區的SOA記錄後面。

注意:一個區域能夠有多條NS記錄
1
2
3
4
5
6
7
例如:
magedu.com.  IN  NS  ns1.magedu.com.
magedu.com.  IN  NS  ns2.magedu.com.
  
注意:
相鄰的兩個資源記錄的name相同時,後續的能夠省略。
對NS記錄而言,任何一個NS記錄後面的服務器名字,都應該在後續有一個A記錄。

MX

電子郵件系統使用MX記錄來更有效地路由郵件。MX記錄優先於郵件發送方所指定的目的地址,在大多數狀況下,它將郵件指向接收方網點的郵件主機。

1
2
3
4
5
6
7

一個區域內,MX記錄可有多個,可是每一個記錄的value以前應該有一個數字(0-99)。表示此服務器的優先級,

數字越小優先級越高。

例如:
magedu.com.  IN  MX 10  mx1.magedu.com.
              IN  MX 20  mx2.magedu.com.
  
注意:
     對MX記錄而言,任何一個MX記錄後面的服務器名字,都應該在後續有一個A記錄。

A

A記錄是DNS數據庫的核心。它們提供了主機名到IP地址的映射,而這之前是在/etc/hosts文件中指定的。一個主機一般給它的每一個網絡端口都有一條A記錄。

1
2
例如:
ns1  IN  A  101.200.188.230

AAAA

AAAA記錄提供主機名到IPv6地址的映射。

PTR

PTR記錄提供IP地址到主機名的反向映射。反向映射記錄存在於in-addr.arpa這個域,而且以IP地址各字節逆序的形式命名。

1
2
例如:
101  IN  PTR  www.magedu.com.

CNAME

CNAME記錄爲以前多分配幾個名字。一般,這些別名要麼用來將某項功能與主機關聯起來,要麼用來縮短一個長主機名。

1
2
例如:
web.magedu.com.  IN  CNAME  www.magedu.com.


BIND

BIND指Berkeley Internet Name Domain(伯克利因特網域名)系統,它是ISC提供的一種開源軟件包,爲Linux、Unix、Mac OS和Windows系統實現了DNS協議。


BIND安裝

1
# yum -y install bind bind-utils


BIND簡介

    dns:協議

    bind:dns協議的一種實現

    named:bind程序運行的進程名

    bind-libs:被bind和bind-utils包中的程序共同用到的庫文件

    bind-utils:bind客戶端程序集,例如:dig,host,nslookup等

    bind:提供的dns server程序,已經幾個經常使用的測試程序

    bind-chroot:選裝,讓named運行於jail模式下

主配置文件:/etc/named.conf

  或包含進來的其它文件

    /etc/named.iscdly.key

    /etc/named.rfc1912.zones

    /etc/named.root.key

  區域配置文件通常在/etc/named.rfc1912.zones,全局配置在/etc/named.conf中

    一、主配置文件格式:

    全局配置段:

      options { ... }; #注意內容先後有空格,分號結尾

    日誌配置段:

      logging { ... };

    區域配置段:

      zone { ... };

      配置那些由本機負責解析的區域,或轉發的區域

    注意:每一個語句必須以分號結尾

    二、緩存名稱服務器的配置:(注意此處的配置應該在使用前操做)

    監聽能與外部主機通訊的地址:

      listen-on port 53 { 192.168.168.158; };

    通常狀況,建議關閉dnssec(基本上用不到,並且很麻煩,反正我是不知道。。)

       dnssec-enable no;

      dnssec-validation no;

      dnssec-lookaside no;   #或者在前面加倆個//;

    修改僅容許本地查詢:

      allow-query { any; };  #或者註釋掉

解析庫文件

    /var/nanmed/目錄下:

                通常名字爲:ZONE_NAME.zone

                        例如:bjwf.com.zone

                                    192.168.168.zone

                注意:

                        一、一臺DNS服務器可同時爲多個區域提供解析

                        二、必需要有跟區域解析庫文件:named.ca

                        三、還應該有兩個區域解析庫文件:localhost和127.0.0.1的正反向解析庫

                                正向:named.localhost            

                                反向:named.loopback

檢查配置文件語法錯誤

    named-checkconf [/etc/named.conf]

    named-checkzone ZONE_NAME ZONE_FILE

1
2
3
4
# named-checkconf
# named-checkzone bjwf.com /var/named/bjwf.com.zone 
zone bjwf.com /IN : loaded serial 2018041202
OK
測試及管理工具

 dig命令:

        語法:dig [ -t RR_TYPE] name [@SERVER] [query options]

        做用:用於測試DNS系統,所以其不會查詢hosts文件

            查詢選項:

                    +[no]trace:跟蹤解析過程

                    +[no]recurse:進行遞歸解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#正向解析
# dig -t A ns1.bjwf.com @192.168.168.158
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -t A ns1.bjwf.com @192.168.168.158
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 5996
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ns1.bjwf.com.          IN  A
 
;; ANSWER SECTION:
ns1.bjwf.com.       86400   IN  A   192.168.168.158
 
;; AUTHORITY SECTION:
bjwf.com.       86400   IN  NS  ns2.bjwf.com.
bjwf.com.       86400   IN  NS  ns1.bjwf.com.
 
;; ADDITIONAL SECTION:
ns2.bjwf.com.       86400   IN  A   192.168.168.158
 
;; Query  time : 1 msec
;; SERVER: 192.168.168.158 #53(192.168.168.158)
;; WHEN: 一 4月 13 16:55:05 CST 2018
;; MSG SIZE  rcvd: 105
 
#反向解析
# dig -x 202.106.0.20
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -x 202.106.0.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR,  id : 41309
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;20.0.106.202. in -addr.arpa. IN  PTR
 
;; ANSWER SECTION:
20.0.106.202.IN-ADDR.ARPA. 38400 IN   PTR c1-xingfudajie-ns2.
 
;; Query  time : 6 msec
;; SERVER: 202.106.0.20 #53(202.106.0.20)
;; WHEN: 一 4月 13 17:31:52 CST 2018
;; MSG SIZE  rcvd: 111
 
#模擬徹底區域傳送
# dig -t axfr DOMAIN [@server]
# dig -t axfr bjwf.com. @192.168.168.158
 
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.3 <<>> -t axfr bjwf.com. @192.168.168.158
;; global options: +cmd
bjwf.com.       86400   IN  SOA ns1.bjwf.com. admin.bjwf.com. 2018041202 3600 300 604800 86400
bjwf.com.       86400   IN  NS  ns1.bjwf.com.
bjwf.com.       86400   IN  NS  ns2.bjwf.com.
ns1.bjwf.com.       86400   IN  A  192.168.168.158
ns2.bjwf.com.       86400   IN  A   192.168.168.158
www.bjwf.com.       86400   IN  A   192.168.168.158
bjwf.com.       86400   IN  SOA ns1.bjwf.com. admin.bjwf.com. 2018041202 3600 300 604800 86400
;; Query  time : 1 msec
;; SERVER: 192.168.168.158 #53(192.168.168.158)
;; WHEN: 一 4月 13 17:33:44 CST 2018
;; XFR size: 7 records (messages 1, bytes 192)

 host命令:

        host [ -t RR_TYPE] name SERVER_IP

1
2
3
4
# host 192.168.168.158
158.168.168.192. in -addr.arpa domain name pointer bogon.
# host -t A www.bjwf.com
www.bjwf.com has address 192.168.168.158

nslookup命令:

        nslookup [ -options] [name] [server]

1
2
3
4
5
6
# nslookup www.bjwf.com
Server:     127.0.0.1
Address:    127.0.0.1 #53
 
Name:   www.bjwf.com
Address: 192.168.168.158

rndc命令:named服務控制命令 

1
2
3
4
5
6
7
8
9
10
11
12
13
14

[root@localhost ~]# rndc status

version: 9.9.4-RedHat-9.9.4-50.el7 <id:8f9657aa>

CPUs found: 3

worker threads: 3

UDP listeners per interface: 3

number of zones: 101

debug level: 0

xfers running: 0

xfers deferred: 0

soa queries in progress: 0

query logging is OFF

recursive clients: 0/0/1000

tcp clients: 0/100

server is up and running

寫的比較亂,參考了其餘文檔,你們能夠看看作個參考,後面還會繼續更新的。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息