DNS是域名服務(Domain Name Service),負責把域名解析成IP地址(正向解析)或者把IP地址解析爲域名(反向解析)。linux
DNS查詢過程:web
假設咱們要訪問www.abc.com,dns解析請求會發送給咱們配置dns服務器,若是當前已有緩存則直接把結果返回給咱們的終端,若是沒有則向dns的根查詢負責解析.com的服務器的IP,找到負責.com域的服務器後再向其查詢負責abc.com這個域的服務器的IP,獲得結果後再向其查詢www.abc.com的IP地址,查詢到結果後再返回給咱們。緩存
在這個過程當中,咱們只須要向咱們指向的dns發起一次dns請求,他就會把最終的結果返回給咱們,這個過程稱爲遞歸查詢,而當其緩存中沒有咱們要查詢的記錄時,他須要一級一級的分別向根,.com, abc.com查詢,每一次的查詢請求都是他本身發起的,這個過程稱爲迭代查詢。服務器
因爲abc.com這個域的解析不是由咱們指向的dns服務器負責的,因此他返回給咱們的答案爲非權威應答,而他經過迭代從負責abc.com的dns服務器查詢到的結果則爲權威應答。網絡
在互聯網上總共有13個根服務器,在linux系統上能夠dig -t NS .查看dom
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@bob ~]# dig -t NS . | awk
'$4=="A" {print $0}'
d.root-servers.net. 5 IN A 199.7.91.13
b.root-servers.net. 5 IN A 192.228.79.201
a.root-servers.net. 5 IN A 198.41.0.4
c.root-servers.net. 5 IN A 192.33.4.12
j.root-servers.net. 5 IN A 192.58.128.30
f.root-servers.net. 5 IN A 192.5.5.241
k.root-servers.net. 5 IN A 193.0.14.129
l.root-servers.net. 5 IN A 199.7.83.42
e.root-servers.net. 5 IN A 192.203.230.10
g.root-servers.net. 5 IN A 192.112.36.4
i.root-servers.net. 5 IN A 192.36.148.17
m.root-servers.net. 5 IN A 202.12.27.33
h.root-servers.net. 5 IN A 128.63.2.53
|
DNS資源記錄類型: 測試
FQDN --> IP A IPv4 FQDN(Fully Qualified Domain Name)spa
FQDN --> IP AAAA IPv6.net
Domain --> DNS Server NS code
Domain --> Master DNS SOA(Start Of Authority)起始受權記錄:準確說明誰是主dns服務器,主輔之間如何同步
FQDN --> FQDN CNAME(Canonical Name) 別名記錄
Domain --> Mail Server MX (Mail eXchanger) 郵件服務器,有優先級,0-99,數字越小,優先級越高
IP --> FQDN PTR(Pointer) 反向解析記錄
注:正向解析和反向解析使用不一樣的名稱解析庫,每個名稱解析庫叫作一個zone(區域)
正向解析的根是 .(一個點)
反向解析的根是 .in-addr.arpa.
DNS安裝配置:
做爲DNS緩存服務器
全球使用最普遍的dns服務器軟件bind,由www.isc.org維護,同時dhcp軟件也由他維護,能夠去官網下載軟件源碼和文檔
安裝過程很簡單 yum install -y bind
主配置文件/etc/named.conf,默認配置是監聽在127.0.0.1上的且只容許本機查詢,只須要更改成主機的對外地址或者直接註釋(監聽在全部網絡接口、容許全部主機查詢),啓動服務就可做爲一臺DNS緩存服務器了。
bind9是C語言寫的,配置文件也是C語言風格,// 是註釋符,每一個語句結束要加;分號,bind10聽說用C++和Python寫的,options段定義的是全局參數
1
2
3
|
// listen-on port 53 { 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
// allow-query { localhost; };
|
rpm包給咱們提供了啓動腳本named, service named start便可
配置正向解析
在named.conf中
1
2
|
directory
"/var/named"
;
include
"/etc/named.rfc1912.zones"
;
|
編輯named.rfc1912.zones添加如下內容以增長對域bob.org的管理
1
2
3
4
5
|
zone
"bob.org"
IN {
type master;
// 類型爲主服務器
file
"bob.org.zone"
;
// 指定資源解析庫存放位置,這個路徑是相對
// named.conf中定義的directory的,即實際位置爲/var/named/bob.org.zone
};
|
建立文件/var/named/bob.org.zone添加以一內容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
$TTL 43200;
// 這裏能夠定義全局變量,若是沒有定義TTL則繼承這裏的43200單位秒
// 第一條記錄必須爲SOA記錄
bob.org.
/*區域名稱,能夠寫成@直接引用當前區域名稱*/
86400
/*TTL,可不定義,會直接繼承全局的*/
IN
/*Internet,固定格式*/
SOA
/*記錄類型*/
ns.bob.org.
/*主服務器的FQDN*/
admin.bob.org
/*管理員郵箱,由於@有特殊意義用點代替*/
$TTL 43200;
@ 86400 IN SOA ns.bob.org. admin.bob.org (
201410070001;
//serial number序列號
1h;
// refresh time 主輔之間刷新時間
5m;
// retry time 拉取信息不成功的重試時間
7d;
// expire time 過時時間,過時後輔服務器也將放棄解析
1d; )
// 否認答案的TTL
@
/*引用當前域名,可省略*/
IN NS ns.bob.org.
IN MX 10 mail1.bob.org.
IN MX 20 mail2
/*至關於mail2.bob.org.*/
ns IN A 172.16.100.10
www IN A 172.16.100.11
webmail IN CNAME mail2
mail1.bob.org. IN A 172.16.100.12
mail2.bob.org. IN A 172.16.100.13
|
1
2
3
4
5
6
|
[root@localhost named]# named-checkconf
// 檢查配置文件
[root@localhost named]# chown :named /var/named/bob.org.zone
[root@localhost named]# named-checkzone
"bob.org"
"/var/named/bob.org.zone"
// 檢查區域文件是否正確
zone bob.org/IN: loaded serial 3841574385
OK
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@localhost named]# dig -t NS bob.org @172.16.100.10
// 測試是否可解析
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t NS bob.org @172.16.100.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34365
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
// 標誌aa(authority answer)權威答案
;; QUESTION SECTION:
;bob.org. IN NS
;; ANSWER SECTION:
bob.org. 43200 IN NS ns.bob.org.
;; ADDITIONAL SECTION:
ns.bob.org. 43200 IN A 172.16.100.10
;; Query
time
: 0 msec
;; SERVER: 172.16.100.10#53(172.16.100.10)
;; WHEN: Wed Aug 27 14:13:38 2014
;; MSG SIZE rcvd: 58
|
3. 配置反向解析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$TTL 43200;
@ 86400 IN SOA ns.bob.org. admin.bob.org. (
201410070001;
1h;
5m;
7d;
1d;)
IN NS ns.bob.org.
// NS記錄是必須的
IN MX 10 mail1.bob.org.
IN MX 20 mail2.bob.org.
10 IN PTR ns.bob.org.
10 IN PTR www.bob.org.
11 IN PTR mail1.bob.org.
12 IN PTR mail2.bob.org.
12 IN PTR webmail.bob.org.
|
1
2
3
4
|
zone
"100.16.172.in-addr.arpa"
IN {
type master;
file
"172.16.100.zone"
;
};
|
在區域配置文件/etc/named.rfc1912.zones新建一個區域
建立反向資源解析庫文件/var/named/172.16.100.zone
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
|
// 測試反向解析
[root@localhost named]# dig -x 172.16.100.10 @172.16.100.10
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 172.16.100.10 @172.16.100.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11785
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; QUESTION SECTION:
;10.100.16.172.in-addr.arpa. IN PTR
;; ANSWER SECTION:
10.100.16.172.in-addr.arpa. 43200 IN PTR www.bob.org.
10.100.16.172.in-addr.arpa. 43200 IN PTR ns.bob.org.
;; AUTHORITY SECTION:
100.16.172.in-addr.arpa. 43200 IN NS ns.bob.org.
;; ADDITIONAL SECTION:
ns.bob.org. 43200 IN A 172.16.100.10
;; Query
time
: 0 msec
;; SERVER: 172.16.100.10#53(172.16.100.10)
;; WHEN: Wed Aug 27 19:35:57 2014
;; MSG SIZE rcvd: 116
[root@localhost named]# host -t PTR 172.16.100.10
10.100.16.172.in-addr.arpa domain name pointer ns.bob.org.
10.100.16.172.in-addr.arpa domain name pointer
|