DNS快速入門、正反向解析……

DNS服務原理詳解

因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析。

我們在訪問一個網站的時候,只要輸入該網站的網址就會跳轉到該網站頁面,而實現這一過程就需要DNS服務器將域名解析為IP地址,進而實現數據通信。

DNS:Domain Name Service 域名解析服務

監聽端口:

udp/53,tcp/53

應用程序:

BIND:Bekerley Internat Name Domain 國際域名

DNS域名

根域

? ? 一級域名:Top Level Domain: com, edu, mil, gov, net, org, int,arpa

組織域:.com, .org, .net, .mil, .edu, .gov, .info, .cc, .me, .tv

國家域:.cn, .us, .uk, .jp, .tw, .hk, .iq, .ir

反向域:.in-addr.arpa

? ? ????? ? ??最多127 級域名

ICANN(The Internet Corporation for Assigned Names and Numbers)互聯網名稱與數字地址分配機構,負責在全球范圍內對互聯網通用頂級域名(gTLD )以及國家和地區頂級域名(ccTLD)系統的管理、以及根服務器系統的管理。

DNS樹狀結構圖

DNS快速入門、正反向解析……

DNS查詢類型:

遞歸查詢

DNS快速入門、正反向解析……

DNS請求被服務器接受后,如果屬于此服務器管轄范圍則請求上級服務器依次傳遞請求,并且依次傳遞結果給發出請求的主機。

迭代查詢

DNS快速入門、正反向解析……

DNS請求被服務器接受后,如果不是自己管轄范圍,讓客戶端訪問根域服務器,然后跟域通知客戶端去訪問下級服務器,直到最后客戶端訪問管轄請求域名的服務器為止。

名稱服務器:域內負責解析本域內的名稱的主機

根服務器:13組服務器

解析類型:

正向解析:FQDN(完全域名) –> IP ?

反向解析:IP –> FQDN(完全域名)

FQDN:(Fully Qualified Domain Name)完全限定域名

注意:正反向解析是兩個不同的名稱空間,是兩棵不同的解析樹,因此,也不是同一個解析庫

DNS服務器類型:

DNS 服務器的類型:

主DNS 服務器

從DNS 服務器

緩存DNS 服務器(轉發器)

DNS 服務器:管理和維護所負責解析的域內解析庫的服務器;讀寫均可進行

DNS 服務器:從主服務器或從服務器“復制”(區域傳輸)解析庫副本;只能進行讀操作

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

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

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

過期時長:從服務器聯系不到主服務器時,多久后停止服務

否定答案的緩存時長

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

區域傳輸:

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

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

Domain: Fully Qualified Domain Name

正向:FQDN –> IP

反向:IP –> FQDN

負責本地域名的正向和反向解析庫

正向區域

反向區域

DNS解析:

一次完整的查詢請求經過的流程:Client(客戶端) –>hosts文件–>DNS Service Local Cache(自己的本地緩存)–> DNS Server (recursion遞歸) –> Server Cache(緩存) –>iteration(迭代) –>根–>頂級域名DNS–>二級域名DNS…

解析答案:

肯定答案:

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

權威答案:由直接負責的DNS服務器返回的答案

非權威答案:

例如,DNS客戶機查詢URL地址www.fastweb.com.cn流程圖

DNS快速入門、正反向解析……

區域解析庫:

由眾多RR組成:(Resource Record資源記錄)

SOA:Start Of Authority(起始授權記錄)

一個區域解析庫有且僅能有一個SOA記錄,必須位于解析庫的第一條記錄

A:internet Address(地址記錄) ??????FQDN –> IP

AAAA: FQDN –> IPv6

PTR: PoinTeR(域名服務記錄) ???????IP –> FQDN

一個區域解析庫可以有多個NS記錄

NS: Name Server(專用于標明當前區域的DNS服務器)

CNAME:Canonical Name (別名記錄)

MX: Mail eXchanger(郵件交換器)

優先級:0-99,數字越小優先級越高

資源記錄定義的格式:

語法:name ?[TTL] ?IN ??rr_type ?value

注意:

(1) TTL可從全局繼承

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

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

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

SOA記錄

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

value:有多部分組成

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

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

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

? ?例如:

rookie.com. ? ? ? ?86400 ? ? ? ?IN ? ? ? ?SOA ? ? ? ? ?rookie.com. ? ? ? ? admin.rookie.com. ???(

2017052201 ???? ?; 序列號serial

2H?????????????????????; 刷新時間refresh

10M ???????????????? ?; 重試時間retry

1W ????????????? ? ? ?; 過期時間expire

1D ????????????????????; 否定答案的TTL值negative answer ttl

)

NS記錄:

name: 當前區域的名字

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

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

例如:

rookie.com. ??IN ??NS ??ns1.rookie.com.

rookie.com. ??IN ??NS ??ns2.rookie.com.

注意:

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

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

MX記錄:

name:當前區域的名字

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

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

例如:

rookie.com. ??IN ??MX ??10(優先級) ? mx1.rookie.com.

rookie.com. ??IN ??MX ??20(優先級) ? mx2.rookie.com.

注意:

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

A記錄:

name:某主機的FQDN ??例如www.rookie.com.

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

例如:

www.rookie.com.   IN   A   1.1.1.1
www.rookie.com.   IN   A   2.2.2.2
mx1.rookie.com.   IN   A   3.3.3.3
mx2.rookie.com.   IN   A   4.4.4.4
$GENERATE  1-254  HOST$   A   1.2.3.$
*.rookie.com.     IN   A   5.5.5.5
rookie.com.       IN   A   6.6.6.6

避免用戶寫錯名稱時給錯誤答案,可通過泛域名解析進行解析至某特定地址

AAAA記錄:

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

例如:

4.3.2.1.in-addr.arpa. ?IN ?PTR ?www.rookie.com.

1.2.3為網絡地址 ,可簡寫成:

4 ?IN ?PTR ?www.rookie.com.

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

CNAME:

name:FQDN格式的別名

value:FQDN格式的正式名字

例如:

web.rookie.com. ? IN ? CNAME ?www.rookie.com.

子域:

子域,是相對父域來說的,指域名中的每一個段。各子域之間用小數點分隔開。放在域名最后的子域稱為最高級子域,或稱為一級域,在它前面的子域稱為二級域。

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

類似根域授權tld:

.com. ????IN ??NS ns1.com.

.com. ????IN ??NS ns2.com.

ns1.com. ? IN ??A ? 2.2.2.1

ns2.com. IN ???A ? 2.2.2.2

rookie.com. 在.com 的名稱服務器上,解析庫中添加資源記錄

rookie.com. ?IN ?NS ?ns1.rookie.com.

rookie.com. ?????IN ?NS ?ns2.rookie.com.

rookie.com. ?????IN ?NS ?ns3.rookie.com.

ns1.rookie.com. ?IN ?A ?3.3.3.1

ns2.rookie.com. ?IN ?A ?3.3.3.2

ns3.rookie.com. ?IN ?A ?3.3.3.3

glue record:粘合記錄,父域授權子域的記錄

BIND安裝:

DNS協議—>BIND

程序環境:
主程序:/usr/sbin/named
Unit File:/usr/lib/systemd/system/named.service
配置文件:/etc/named.conf
區域解析庫文件:/var/named
關閉dnssec功能:
vim ?/etc/named.conf
dnssec-enable no;
dnssec-validation no;
解析一個區域:
定義:/etc/named.rfc1912.conf
zone “ilinux.io” IN {
type master;
file “ZONE_FILE”;
};
例:vim /etc/named.rfc1912.conf
zone “rookie.com” IN {
type master;
file “rookie.com.zone”;
}; ??

定義解析庫文件示例:
$TTL 600 ? ? ?#全局定義 ? ?緩存十分鐘
ilinux.com. ? ? ?IN ? ? ?SOA ? ? ilinux.com. ? ? ?nsadmin.ilinux.com. (
2017052301
1H
5M
1W
6H )
IN ? ? ?NS ? ? ?dns1.ilinux.com.
IN ? ? ?NS ? ? ?dns2.ilinux.com.
dns1.ilinux.com. IN ? ? ?A ? ? ? 172.16.0.67
dns2.ilinux.com. IN ? ? ?A ? ? ? 172.16.0.68
www.ilinux.com.IN ? ? ?A ? ? ? 172.16.0.1
web ? ? ? ?????? ? ?IN ? ? ?CNAME ? www

 

BIND 的安裝配置:

BIND:Berkeley Internet Name Domain

dns: 協議
BIND: dns協議的一種實現
named:bind程序的運行的進程名

dns服務程序包:bind ?unbound

程序名:named ??unbound

程序包:yum list all bind*

bind:提供的dns server程序、以及幾個常用的測試程序

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

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

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

/var/named/chroot/

?

bind服務器:

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

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

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

????????????????? ? ?/etc/named.iscdlv.key

/etc/named.rfc1912.zones

/etc/named.root.key

yum install -y bind后可見

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

注意:

(1)一臺DNS服務器可同時為多個區域提供解析

(2)必須要有根區域解析庫文件;named.ca

(3)應該有兩個區域解析庫文件(如果包括ipv6的,應該更多)實現localhost和127.0.0.1的正反向解析庫

????????正向:named.localhost
反向:named.loopback

rndc: remote name domain controller (遠程域名控制器)

提供輔助性的管理功能 953/tcp 但默認監聽于127.0.0.1地址,因此僅允許本地使用

bind程序安裝完成之后,默認即可做緩存名稱服務器使用,如果沒有專門負責解析的區域,直接即可啟動服務

CentOS 6: ?service ?named ?start

CentOS 7: ?systemctl ?start ?named.service

?

主配置文件格式:

全局配置段:

????????options { … }

日志子系統配置段:

????????logging { … }

區域定義段:

????????zone “ZONE_NAME” IN { … }

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

注意:

每個配置語句必須以分號結尾

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

緩存名稱服務器的配置:

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

listen-on port 53

listen-on port 53 { 172.16.252.245; }

dnssec: 建議關閉dnssec,設為no(自己做實驗時建議關閉)

???????dnssec-enable no

???????dnssec-validation no

???????dnssec-lookaside no

關閉僅允許本地查詢:

???????//allow-query ?{ localhost; }

檢查配置文件語法錯誤:
named-checkconf ? ? ? ? ? ? ??/etc/named.conf
檢查區域配置文件錯誤:

????????named-checkzone “rookie.com” /var/named/rookie.com.zone

例:[root@localhost ~]#vim /etc/named.conf

DNS快速入門、正反向解析……

DNS快速入門、正反向解析……

DNS快速入門、正反向解析……

測試命令dig:

dig [-t type] name [@SERVER] [query options]

dig 只用于測試dns 系統,不會查詢hosts 文件進行解析

查詢選項:

+[no]trace程:跟蹤解析過程 : dig +trace rookie.com

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

[root@localhost ~]#dig -t A www.baidu.com @172.16.252.254 +trace

 

測試反向解析:

dig ?-x ?IP = dig ?-t ?ptr ?reverseip.in-addr.arpa

模擬區域傳送:

dig ?-t ?axfr ?ZONE_NAME @SERVER

dig ?-t ?axfr ?rookie.com @10.10.10.11

dig ?-t ?axfr ?100.1.10.in-addr.arpa @172.16.1.1

dig ?-t ?NS ?. ?@114.114.114.114

dig ?-t ?NS ?. ?@a.root-servers.net

[root@localhost ~]#dig -t NS baidu.com @172.16.0.1
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t NS baidu.com @172.16.0.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35043
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 6
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;baidu.com. IN  NS
 
;; ANSWER SECTION:
baidu.com.  54644   IN  NS  ns7.baidu.com.
baidu.com.  54644   IN  NS  ns3.baidu.com.
baidu.com.  54644   IN  NS  ns4.baidu.com.
baidu.com.  54644   IN  NS  dns.baidu.com.
baidu.com.  54644   IN  NS  ns2.baidu.com.
 
;; ADDITIONAL SECTION:
ns2.baidu.com.  140982  IN  A   61.135.165.235
ns4.baidu.com.  140982  IN  A   220.181.38.10
dns.baidu.com.  140982  IN  A   202.108.22.220
ns3.baidu.com.  140982  IN  A   220.181.37.10
ns7.baidu.com.  140982  IN  A   119.75.219.82
 
;; Query time: 2 msec
;; SERVER: 172.16.0.1#53(172.16.0.1)
;; WHEN: Thu Jun 01 07:22:38 EDT 2017
;; MSG SIZE  rcvd: 208
[root@localhost ~]#dig -t NS baidu.com @172.16.0.1 +nocomments
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t NS baidu.com @172.16.0.1 +nocomments
;; global options: +cmd
;baidu.com. IN  NS
baidu.com.  54627   IN  NS  dns.baidu.com.
baidu.com.  54627   IN  NS  ns3.baidu.com.
baidu.com.  54627   IN  NS  ns2.baidu.com.
baidu.com.  54627   IN  NS  ns4.baidu.com.
baidu.com.  54627   IN  NS  ns7.baidu.com.
ns2.baidu.com.  140965  IN  A   61.135.165.235
ns4.baidu.com.  140965  IN  A   220.181.38.10
dns.baidu.com.  140965  IN  A   202.108.22.220
ns3.baidu.com.  140965  IN  A   220.181.37.10
ns7.baidu.com.  140965  IN  A   119.75.219.82
;; Query time: 1 msec
;; SERVER: 172.16.0.1#53(172.16.0.1)
;; WHEN: Thu Jun 01 07:22:56 EDT 2017
;; MSG SIZE  rcvd: 208

測試命令host:

host [-t type] name [SERVER]

host ??-t ??NS ??rookie.com 172.16.0.1

host ??-t ??soa ??rookie.com

host ??-t ??mx ??rookie.com

host ??-t ??axfr ??rookie.com

host 1.2.3.4

nslookup命令:nslookup [-option] [name | -] [server]

交互式模式:

nslookup>

server IP:指明使用哪個DNS server進行查詢

set q=RR_TYPE:指明查詢的資源記錄類型

name:要查詢的名稱

[root@localhost ~]#nslookup
> server 172.16.0.1
Default server: 172.16.0.1
Address: 172.16.0.1#53
> set q=a
> www.tencent.com
Server: 172.16.0.1
Address:    172.16.0.1#53
 
Non-authoritative answer:
www.tencent.com canonical name = upfile.wj.qq.com.cloud.tc.qq.com.
upfile.wj.qq.com.cloud.tc.qq.com    canonical name = ssd.tcdn.qq.com.
Name:   ssd.tcdn.qq.com
Address: 111.202.99.24
Name:   ssd.tcdn.qq.com
Address: 111.202.99.25
Name:   ssd.tcdn.qq.com
Address: 111.202.99.23
Name:   ssd.tcdn.qq.com
Address: 123.125.110.21
Name:   ssd.tcdn.qq.com
Address: 123.125.110.12
Name:   ssd.tcdn.qq.com
Address: 123.125.110.11
Name:   ssd.tcdn.qq.com
Address: 123.125.110.22

命令rndc:

rndc:remote name domain contoller(遠程域名控制器)
953/tcp,但默認監聽于127.0.0.1地址,因此僅允許本地使用

????????rndc –> rndc (953/tcp)

rndc COMMAND

命令:

reload:重載主配置文件和區域解析庫文件

reload zonename:重載區域解析庫文件

retransfer zonename:手動啟動區域傳送,而不管序列號是否增加

notify zonename:重新對區域傳送發通知

reconfig:重載主配置文件

querylog:開啟或關閉查詢日志文件/var/log/message

trace:遞增debug 一個級別

trace LEVEL:指定使用的級別

notrace:為將調試級別設置為 0

flush:清空DNS

[root@localhost ~]#rndc status
version: 9.9.4-RedHat-9.9.4-37.el7 <id:8f9657aa>  版本
CPUs found: 4   CPU
worker threads: 4   線程
UDP listeners per interface: 4  接口
number of zones: 101    區域數
debug level: 0  調試級別
xfers running: 0    運行
xfers deferred: 0   延遲
soa queries in progress: 0 正在進行的SOA查詢
query logging is OFF    查詢記錄
recursive clients: 0/0/1000 遞歸客戶端
tcp clients: 0/100  TCP客戶端
server is up and running    服務器啟動并運行

配置主DNS 服務器:

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

zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};

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

出現的內容

宏定義

資源記錄

主配置文件語法檢查:

named-checkconf

解析庫文件語法檢查:

named-checkzone "rookie.com" /var/named/rookie.com.zone
rndc status|reload ;service named reload

注意:實驗配置前需要特別注意三點

關閉防火墻

關閉SElinux

時間必須同步

?

配置解析一個正向區域:

以rookie.com域為例:
(1)定義區域
在主配置文件中(/etc/named.conf)或主配置文件輔助配置文件(/etc/named.rfc1912.conf)中實現
[root@localhost ~]#vim /etc/named.rfc1912.zones
zone "rookie.com" IN {
        type master;
        file "rookie.com.zone";
};
注意:區域名字即為域名
(2)建立區域數據文件(主要記錄為A或AAAA記錄)
在/var/named目錄下建立區域數據文件;
文件為:/var/named/rookie.com.zone
[root@localhost /var/named]#vim rookie.com.zone
$TTL 600(全局變量  緩存600秒)
rookie.com.(域名)         IN      SOA     rookie.com.     admin.rookie.com.管理員郵箱 (
                        2017060101     序列號
                        1H             刷新時間間隔一小時
                        5M             重試時間間隔五分鐘
                        1W             過期時間一周
                        6H )           否定答案的TTL值六小時
                        IN      NS      dns1.rookie.com.
                        IN      NS      dns2.rookie.com.
dns1.rookie.com.        IN      A       172.16.250.149
dns2.rookie.com.        IN      A       172.16.252.245
www.rookie.com.         IN      A       172.16.0.1
web                     IN      CNAME   www
權限及屬組修改:
[root@localhost /var/named]#chgrp named /var/named/rookie.com.zone
[root@localhost /var/named]#chmod o= /var/named/rookie.com.zone
[root@localhost /var/named]#ll
總用量 20
drwxrwx--- 2 named named    6 11月 12 2016 data
drwxrwx--- 2 named named    6 11月 12 2016 dynamic
-rw-r----- 1 root  named 2076 1月  28 2013 named.ca
-rw-r----- 1 root  named  152 12月 15 2009 named.empty
-rw-r----- 1 root  named  152 6月  21 2007 named.localhost
-rw-r----- 1 root  named  168 12月 15 2009 named.loopback
-rw-r----- 1 root  named  301 6月   1 00:22 rookie.com.zone
檢查語法錯誤:
[root@localhost /var/named]#named-checkconf 
[root@localhost /var/named]#named-checkzone "rookie.com" /var/named/rookie.com.zone
zone rookie.com/IN: loaded serial 2017060101
OK
(3)讓服務器重載配置文件和區域數據文件
[root@localhost /var/named]#rndc reload
[root@localhost ~]#systemctl restart named.service
(4)驗證
[root@localhost /var/named]#dig -t A www.rookie.com @172.16.250.149
 
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.rookie.com @172.16.250.149
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38718
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.rookie.com.    IN  A
 
;; ANSWER SECTION:
www.rookie.com. 600 IN  A   172.16.252.125
 
;; AUTHORITY SECTION:
rookie.com. 600 IN  NS  dns1.rookie.com.
rookie.com. 600 IN  NS  dns2.rookie.com.
 
;; ADDITIONAL SECTION:
dns1.rookie.com.    600 IN  A   172.16.250.149
dns2.rookie.com.    600 IN  A   172.16.252.245
 
;; Query time: 0 msec
;; SERVER: 172.16.250.149#53(172.16.250.149)
;; WHEN: 四 6月 01 01:02:13 CST 2017
;; MSG SIZE  rcvd: 129
也可以通過修改/etc/hosts省略IP
[root@localhost /var/named]#vim /etc/resolv.conf
 
; generated by /usr/sbin/dhclient-script
search magedu.com
#nameserver 172.16.0.1
 
[root@localhost /var/named]#dig -t A www.rookie.com 
 
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.rookie.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39628
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.rookie.com.    IN  A
 
;; ANSWER SECTION:
www.rookie.com. 600 IN  A   172.16.252.125
 
;; AUTHORITY SECTION:
rookie.com. 600 IN  NS  dns2.rookie.com.
rookie.com. 600 IN  NS  dns1.rookie.com.
 
;; ADDITIONAL SECTION:
dns1.rookie.com.    600 IN  A   172.16.250.149
dns2.rookie.com.    600 IN  A   172.16.252.245
 
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 四 6月 01 01:08:08 CST 2017
;; MSG SIZE  rcvd: 129

配置解析一個反向區域

(1)定義區域
在主配置文件中或主配置文件輔助配置文件中實現;
[root@localhost ~]#vim /etc/named.rfc1912.zones
zone "16.172.in-addr.arpa" IN {
        type master;
        file "172.16.zone";
};
注意:反向區域的名字
反寫的網段地址.in-addr.arpa
   16.172.in-addr.arpa
(2)定義區域解析庫文件(主要記錄為PTR)
[root@localhost ~]#vim /var/named/172.16.zone
$TTL 600
@       IN      SOA     rookie.com.     admin.rookie.com. (
                2017060101
                1H
                5M
                2W
                1D )
@               IN      NS      dns1.rookie.com.
@               IN      NS      dns2.rookie.com.
149.250         IN      PTR     dns1.rookie.com.
245.252         IN      PTR     dns2.rookie.com.
125.252         IN      PTR     www.rookie.com.
權限及屬組修改:
[root@localhost /var/named]#chgrp named /var/named/rookie.com.zone
[root@localhost /var/named]#chmod o= /var/named/rookie.com.zone
檢查語法錯誤:
[root@localhost ~]#named-checkconf
[root@localhost ~]#named-checkzone "172.16" /var/named/172.16.zone
zone 172.16/IN: loaded serial 2017060101
OK
(3)讓服務器重載配置文件和區域數據文件
[root@localhost ~]#rndc reload
[root@localhost ~]#systemctl restart named.service
(4)驗證
[root@localhost /var/named]#dig -x 172.16.250.149
 
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -x 172.16.259.149
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8132
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;149.259.16.172.in-addr.arpa.   IN  PTR
 
;; ANSWER SECTION:
149.259.16.172.in-addr.arpa. 600 IN PTR dns1.rookie.com.
 
;; AUTHORITY SECTION:
16.172.in-addr.arpa.    600 IN  NS  dns1.rookie.com.
16.172.in-addr.arpa.    600 IN  NS  dns2.rookie.com.
 
;; ADDITIONAL SECTION:
dns1.rookie.com.    600 IN  A   172.16.250.149
dns2.rookie.com.    600 IN  A   172.16.252.245
 
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: 四 6月 01 01:44:45 CST 2017
;; MSG SIZE  rcvd: 150

主從服務器:

注意:從服務器是區域級別的概念;

主區域配置:可以參照上面的正向區域配置和反向區域配置

從區域配置:

On Slave

(1)定義從區域   (以另一虛擬機為例)
[root@localhost ~]#vim /etc/named.rfc1912.zones
zone "rookie.com." IN {
        type slave;
        file "slaves/rookie.com.zone";
        masters { 172.16.250.149; };????????????#指明主節點
};
[root@localhost ~]#vim /etc/named.conf
options {
        //listen-on port 53 { 127.0.0.1; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
 
        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;
 
        dnssec-enable no;
        dnssec-validation no;
 
配置文件語法檢查:
[root@localhost ~]#named-checkconf
(2)主/從都要重載配置
[root@localhost ~]#rndc reload
[root@localhost ~]#systemctl restart named.service
[root@localhost ~]#ll /var/named/slaves/    (文件已經同步)
total 4
-rw-r--r-- 1 named named 414 Jun  1 03:01 rookie.com.zone
(3)驗證     從
[root@localhost ~]#dig -t A www.rookie.com @172.16.250.149
 
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A www.rookie.com @172.16.250.149
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5639
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.rookie.com.    IN  A
 
;; ANSWER SECTION:
www.rookie.com. 600 IN  A   172.16.252.125
 
;; AUTHORITY SECTION:
rookie.com. 600 IN  NS  dns1.rookie.com.
rookie.com. 600 IN  NS  dns2.rookie.com.
 
;; ADDITIONAL SECTION:
dns1.rookie.com.    600 IN  A   172.16.250.149
dns2.rookie.com.    600 IN  A   172.16.252.245
 
;; Query time: 0 msec
;; SERVER: 172.16.250.149#53(172.16.250.149)
;; WHEN: Thu Jun 01 03:41:02 EDT 2017
;; MSG SIZE  rcvd: 129
(4)修改主配置文件,并重新測試
[root@localhost /var/named]#vim rookie.com.zone
$TTL 600
rookie.com.             IN      SOA     rookie.com.     admin.rookie.com. (
                        2017060102
                        1H
                        5M  
                        1W
                        6D )
                        IN      NS      dns1.rookie.com.
                        IN      NS      dns2.rookie.com.
dns1.rookie.com.        IN      A       172.16.250.149
dns2.rookie.com.        IN      A       172.16.252.245
www.rookie.com.         IN      A       172.16.252.125
web                     IN      CNAME   www
ftp                     IN      CNAME   www
 
[root@localhost ~]#dig -t A  ftp.rookie.com @172.16.250.149
 
; <<>> DiG 9.9.4-RedHat-9.9.4-37.el7 <<>> -t A ftp.rookie.com @172.16.250.149
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30068
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ftp.rookie.com.    IN  A
 
;; ANSWER SECTION:
ftp.rookie.com. 600 IN  CNAME   WWW.rookie.com.
WWW.rookie.com. 600 IN  A   172.16.252.125
 
;; AUTHORITY SECTION:
rookie.com. 600 IN  NS  dns1.rookie.com.
rookie.com. 600 IN  NS  dns2.rookie.com.
 
;; ADDITIONAL SECTION:
dns1.rookie.com.    600 IN  A   172.16.250.149
dns2.rookie.com.    600 IN  A   172.16.252.245
 
;; Query time: 0 msec
;; SERVER: 172.16.250.149#53(172.16.250.149)
;; WHEN: Thu Jun 01 03:46:11 EDT 2017
;; MSG SIZE  rcvd: 147

On Master

(1) 確保區域數據文件中為每個從服務配置NS記錄,并且在正向區域文件需要每個從服務器的NS記錄的主機名配置一個A記錄,且此A后面的地址為真正的從服務器的IP地

注意:時間要同步

ntpdate命令

子域授權:

正向解析區域授權子域的方法:

ops.rookie.com. IN NS      ns1.ops.rookie.com.
ops.rookie.com. IN NS   ns2.ops.rookie.com.
ns1.ops.rookie.com. IN A IP.AD.DR.ESS
ns2.ops.rookie.com. IN A IP.AD.DR.ESS

定義轉發:

注意:被轉發的服務器必須允許為當前服務做遞歸;

(1) 區域轉發:僅轉發對某特定區域的解析請求;

zone  "ZONE_NAME"  IN {
type  forward;
forward  {first|only};
forwarders  { SERVER_IP; };
};

first:首先轉發;轉發器不響應時,自行去迭代查詢;

only:只轉發

(2) 全局轉發:針對凡本地沒有通過zone定義的區域查詢請求,通通轉給某轉發器;

options {
... ...
forward  {only|first};
forwarders  { SERVER_IP; };
.. ...
};

轉發服務器

注意:被轉發的服務器需要能夠為請求者做遞歸,否則轉發請求不予進行

first:首先轉發;轉發器不響應時,自行去迭代查詢

only:只轉發

(1)全局轉發:  對非本機所負責解析區域的請求, 全 轉發給指定的服務器
Options {
fforward  {only|first};
forwarders  { SERVER_IP; };
};
(2)特定區域轉發:僅轉發對特定的區域的請求,比全局轉發優先級高
zone  "ZONE_NAME"  IN {
type  forward;
forward  {first|only};
forwarders  { SERVER_IP; };
};
注意:關閉dnssec 功能:
dnssec-enable no;
dnssec-validation no;

bind中的安全相關的配置:

acl:訪問控制列表;把一個或多個地址歸并一個命名的集合,隨后通過此名稱即可對此集合內的所有主機實現統一調用

格式:

acl acl_name {
ip;
net/prelen;
……
};
示例:
acl mynet {
172.16.0.0/16;
10.10.10.10;
};

bind有四個內置的acl:

none:沒有一個主機

any:任意主機

localhost:本機

localnet:本機的IP同掩碼運算后得到的網絡地址

注意:只能先定義,后使用,因此一般定在配置文件中,處于options

訪問控制的指令:

allow-query ?{};允許查詢的主機;白名單

allow-transfer {};允許向哪些主機做區域傳送;默認為向所有主機;應該配置僅允許從服務器

allow-recursion {}; 允許哪此主機向當前DNS服務器發起遞歸查詢請求

allow-update {}; DDNS,允許動態更新區域數據庫文件中內容

bind view:

view:視圖,一個bind 服務器可定義多個view ,每個view中可定義一個或多個zone

每個view 用來匹配一組客戶端

多個view 內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件

view  VIEW_NAME {
zone
zone
zone
}

view internal  {
match-clients { 172.16.0.0/8; };
zone "rookie.com"  IN {
type master;
file  "rookie.com/internal";
};
};

view external {
match-clients { any; };
zone "rookie.com" IN {
type  master;
file  rookie.com/external";
};
};

 

原創文章,作者:Linux.rookie,如若轉載,請注明出處:http://www.www58058.com/77393

(6)
Linux.rookieLinux.rookie
上一篇 2017-06-02
下一篇 2017-06-03

相關推薦

  • 終端類型

        終端是什么?終端不僅僅是顯示器,還包括與之配套的鍵盤。在linux中表現為一個字符設備。Linux與用戶交互時,直接向終端設備發送數據,數據就會被發送到屏幕上,用戶通過鍵盤寫的數據,就是向這個字符設備寫數據,數據會同步顯示到顯示器上,回車后數據才會被linux執行命令。 終端類型 1串行口終端  &n…

    Linux干貨 2016-10-17
  • 馬哥教育網絡班N22期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 網橋:是連接兩個局域網的基于MAC地址數據存儲轉發設備,工作于數據鏈路層集線器:所有端口處于同一個廣播域和沖突域中,帶寬共享,工作于物理層二層交換機:多端口網橋,一個端口一個沖突域,默認所有端口位于同一個廣播域中,可以劃分vlan,隔離廣播域,帶寬獨享三層交換機:具有路由功能的二…

    Linux干貨 2016-10-19
  • ![](http://i1.pixiv.net/img-original/img/2016/08/09/20/23/25/58345400_p0.jpg) ![](http://i1.pixiv.net/img-original/img/2016/08/09/20/23/25/58345400_p0.jpg)

    Linux干貨 2016-12-26
  • Linux基礎命令 -管道密切配合使用 tee

    基礎命令和管道密切配合使用  tee     基礎命令:tee   tee命令 功能: 把命令1的STDOUT保存在文件名中,然后管道輸入給命令2; 補充說明:tee指令會從標準輸入設備讀取數據,將其內容輸出到標準輸出設備,同時保存成文件。 使用場景: 1.保存不同階段的輸出 2.復雜管道的故障排除 3.同時查看和記錄…

    Linux干貨 2016-08-03
  • vim編輯器的使用

    vim          vim是一個類似于vi的文本編輯器,不過在vi的基礎上增加了很多功能,在早起vim和Emacs編輯器打的很火熱,在1999年被linuxwork文本編輯分類的優勝者,而vim屈居第二,但2000年vim贏得了salashdot beanie的最佳開放源代…

    系統運維 2016-08-09
  • redis主/從配置及基于sentinel的故障轉移

    一、NoSQL基礎概念: ACID:原子性、一致性、隔離性、持久性;特性:數據量大、數據變化非常大(數據增長化、流量分布變化、數據間耦合結構變化)、數據源很多; CAP、BASECAP C:多個數據節點的的數據一致;A:用戶發出請求后的有限時間范圍內返回結果;P:network partition,網絡發生分區后,服務是否依可用;CAP理論:一個分布式系統不…

    Linux干貨 2014-10-15
欧美性久久久久