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地址進行訪問。 服務器
如圖所示:網絡
一、本機向DNS服務器發送查詢請求。dom
二、DNS服務器將查詢的結果返還給本機。
tcp
三、本機經過IP地址訪問www.magedu.com。分佈式
域名:ide
DNS名稱空間被組織成一個「樹」形結構。每一個完成的域名(例如,www.magedu.com)是這顆樹的分支上的一個節點。完整限定域名(FQDN,Fully Qualified Domain Name)是到一個DNS對象的完整路徑,包括最後一個點。
以上述的域名爲例說明,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服務器向二級域名發送請求並獲得正確答案返回給客戶機。同時將這次查詢的結果寫入緩存之中,以便下次的查詢。
資源記錄
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
|
例如:
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 |
寫的比較亂,參考了其餘文檔,你們能夠看看作個參考,後面還會繼續更新的。