DNS是應用層的協定,預設使用UDP的53端口,也會用到TCP的53端口。
DNS名稱解析方式:
名稱 --> IP:正向解析
<a href="http://s3.51cto.com/wyfs02/M02/7F/14/wKioL1cTI2_RHR3YAAK6uLUozo4821.png" target="_blank"></a>
第一段這種方式叫遞歸查詢,隻發出去一次請求,就給它傳回答案;第二段這種方式就疊代查詢,要發出多次請求,需要自己查詢不同域名,最後才傳回答案;這就是DNS的查詢類型。
一般内網遞歸,外網疊代。
IP --> 名稱:反向解析
<a href="http://s4.51cto.com/wyfs02/M02/7F/16/wKiom1cTIwXjUuEDAAGHCVnpT9g722.png" target="_blank"></a>
每一層伺服器都有各自的資料庫,來存儲各自負責的網段,這與正向解析的資料庫是兩個各自獨立的資料庫。
一次完整的查詢請求經過的流程:
Client --> hosts檔案 --> DNS Local Cache --> DNS Server (recursion) --> 分兩種情況:
(1)自己負責解析的域:直接查詢資料庫并傳回答案
(2)不是自己負責解析域:Server Cache --> iteration(疊代)
主-輔DNS伺服器:
主DNS伺服器:維護所負責解析的域資料庫的那台伺服器;讀寫操作均可進行
從DNS伺服器:從主DNS伺服器那裡或其它的從DNS伺服器那裡“複制”一份解析庫;但隻能進行讀操作
在linux系統上實作DNS服務的程式是bind,安裝bind程式,而bind程式安裝後運作的程序名為named;
]# yum install bind
主配置檔案:/etc/named.conf、/etc/named.rfc1912.zones
解析庫檔案/var/named/目錄下,以區域名字命名:ZONE_NAME.zone
正向解析庫檔案:/var/named/named.localhost
反向解析庫檔案:/var/named/named.loopback
注意:根區域解析庫檔案named.ca、正向解析庫檔案named.localhost、反向解析庫檔案named.loopback都不是程式提供的,而是rpm包制作者提供的。
配置主DNS伺服器
正向區域:
第一步:定義正向區域zone
]# vim /etc/named.con
修改内容:
listen-on port 53 { 127.0.0.1; 172.18.252.23; };
dnssec-enable no
//allow-query { localhost; };
添加本地主機位址;把dnssec都改為no;關閉僅允許本地查詢即加//注釋:
]# vim /etc/named.rfc1912.zones
添加内容:
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
注意:在區域中定義的這個file指明的magedu.com.zone區域資料庫檔案還不存在,需要自己建立,如果在上面配置檔案的file中定義的是相對路徑,預設為在/var/named/目錄下建立,且這個目錄預設是不存在的。
第二步:建立正向區域解析資料庫檔案(主要記錄為A或AAAA記錄)
一般預設在/var/named目錄下建立,為magedu.com.zone區域建立編輯一個正向區域資料庫檔案,建立正向區域資料庫檔案,自己取名為magedu.com.zone。
區域資料庫檔案除了宏定義外,都是資源記錄,第一條必須為soa記錄。
]# vim /var/named/magedu.com.zone
$TTL 3600:機關是秒;
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. 403868144.qq.com. (
2016041001
1H
10M
3D
1D )
IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.18.11.2
ns2 IN A 172.18.11.3
mx1 IN A 172.18.11.4
mx2 IN A 172.18.11.5
www IN A 172.18.11.2
web IN CNAME www
bbs IN A 172.18.11.2
第三步:修改正向區域資料庫檔案的權限為其它不可讀,屬組為named
]# chown :named magedu.com.zone
]# chmod o= magedu.com.zone
第四步:文法檢查
]# named-checkconf
]# named-checkzone magedu.com /var/named/magedu.com.zone
檢視區域資訊
]# rndc status
注意:正向區域名一定要與在/etc/named.rfc1912.zones檔案中的zone定義的正向區域名一緻;但zone中的區域名後的.可省略。
第五步:讓伺服器重載配置檔案和區域資料檔案
]# rndc reload
第六步:測試DNS伺服器是否能解析
]# host -t A bbs.magedu.com @172.18.11.2
]# dig -t NS magedu.com @172.18.11.2
]# host -t MX magedu.com @172.18.11.2
配置反向區域,配置步驟同配置正向解析區域相同
第一步:定義反向區域
]# vim /etc/named.rfc1912.zones
zone "11.18.172.in-addr.arpa" IN {
file "172.18.11.zone";
第二步:定義反向區域解析庫檔案(主要記錄為PTR)
一般預設在/var/named目錄下建立;反向區域解析庫檔案自己取名為172.18.250.zone。
]# vim 172.18.11.zone
$TTL 3600
$ORIGIN 250.18.172.in-addr.arpa.設定自動補上完整IP的内容;
@ IN SOA ns1.magedu.com. 403868144.qq.com. (
2016041001
1H
10M
3D
12H )
IN NS ns1.magedu.com.
2 IN PTR ns1.magedu.com.
3 IN PTR ns2.magedu.com.
4 IN PTR mx1.magedu.com.
5 IN PTR mx2.magedu.com.
2 IN PTR bbs.magedu.com.
第三步:修改反向區域資料庫檔案的權限為其它不可讀,屬組為named
]# chgrp named 172.18.11.2.zone
]# chmod o= 172.18.11.2.zone
第四步:檢查文法
]# named-checkzone 11.18.172.in-addr.arpa /var/named/172.18.11.zone
注意:反向區域名一定要與在/etc/named.rfc1912.zones檔案中的zone定義的反向區域名一緻;但zone中的區域名後的.可省略。
第六步:測試DNS伺服器是否能反向解析
]# dig -x 172.18.11.2
以上配置為主DNS伺服器配置過程。
配置從DNS伺服器:
首先配置正向區域的從,再配置反向區域的從。
在從伺服器上配置:
第一步:定義從區域
]# vim /etc/named.conf
第二步:配置從伺服器為正向區域的DNS伺服器
zone "magedu.com" IN {
type slave;
file "slaves/magedu.com.zone";
masters { 172.18.11.2; }
第三步:檢查文法
第四步:在主伺服器上配置
提示:添加一條ns記錄,例如可以為NS2,這個名字和從伺服器的自身主機名沒關系,但是NS2要有一條A記錄,指向從伺服器主機即172.18.11.3是從伺服器的IP位址;這條記錄必須得有。
第五步:檢查主伺服器區域檔案文法
第六步:重載配置檔案
第七步:在從伺服器上操作,重載配置檔案
測試從DNS伺服器正向解析
驗證從伺服器能同步到正向解析資料庫檔案
在主伺服器區域檔案中新增一條pop3的記錄,并遞增序列号;
2016041003:系列号遞增;
pop3 IN A 172.18.11.6:添加pop3的A記錄;
在從伺服器上檢視是否收到更新的區域資料庫檔案
]# dig -t A pop3.magedu.com @172.18.11.3
配置從伺服器為反向區域的DNS伺服器
第一步:在從伺服器上主配置檔案中添加反向區域
file "slaves/172.18.11.zone";
masters { 172.18.11.2; };
第二步:檢查主配置檔案文法
第三步:在主伺服器的反向區域資料庫檔案中要確定有一條NS記錄必須要有,還可以有ns對應的ptr記錄
]# vim /var/named/172.18.11.zone
2016041002
IN NS ns2.magedu.com.
3 IN PTR ns2.magedu.com.
第四步:檢查反向區域檔案文法
第五步:重載
第六步:從伺服器重載
檢視從伺服器是否同步到反向解析資料庫檔案
]# ls /var/named/slaves
測試從DNS伺服器反解析
]# dig -x 172.18.11.2 @172.18.11.3
子域授權方法:
第一步:在父域的主DNS伺服器上的正向區域資料庫檔案/var/named/magedu.com.zone上授權子域
2016041004
ops IN NS ns1.ops
ns1.ops IN A 172.18.11.4
第二步:重載
在子域伺服器(172.18.11.4)上操作
第一步:編輯主配置檔案
listen-on port 53 { 127.0.0.1; 172.18.11.4; };
第二步:啟動named程式
]# systemctl start named.service
第三步:配置172.18.11.4的伺服器為ops.magedu.com子域的主伺服器
zone "ops.magedu.com" IN {
file "ops.magedu.com.zone";
第四步:在var/named/目錄下建立file中指明的ops.magedu.com.zone正向區域資料庫檔案
]# vim var/named/ops.magedu.zone
$ORIGIN ops.magedu.com.
@ IN SOA ns1.ops.magedu.com. 403868144.qq.com. (
2016041101
1H
10M
1D
2H )
IN NS ns1
ns1 IN A 172.18.11.4
www IN A 172.18.11.4
第五步:修改正向區域資料庫檔案權限為其它沒有寫權限,屬組為named
]# chmod o= ops.magedu.zone
]# chgrp named ops.magedu.zone
第六步:文法檢查
]# named-checkzone ops.magedu.com ops.magedu.com.zone
第七步:重載
第八步:測試正向解析
在子域伺服器上定義轉發區域:
第一步:編輯主配置檔案
type forward;
forward only;
forwaders { 172.18.11.2; 172.18.11.3; };
第二步:檢查文法
第三步:重載
第四步:測試
在父域伺服器上解析子域
在子域服務上解析父域
在子域伺服器上定義全局轉發:
在options段編輯:
forward only;
forwarders { 172.18.11.2; };
第三步:測試baidu
安全相關的配置
在子域伺服器上,應該僅設定為允許從伺服器區域傳送
在主伺服器上配置:僅允許從伺服器區域傳送;通路控制清單allow-transfer
allow-transfer { slaves; };
在主伺服器上配置通路控制清單:
編輯/etc/named.conf配置檔案,在options段前添加slaves通路控制清單:
acl slaves {
172.18.11.3;
127.0.0.1;
檢查文法:
重載:
在非從伺服器上測試:
]# dig -t axfr magedu.com @172.18.11.2
設定成功。
在從伺服器上測試區域傳送:
在主伺服器上測試:
]# dig -t axfr magedu.com @127.0.0.1
均顯示區域傳送失敗;因為,使用本機172.18.11.2這個位址,在通路控制清單中沒有定義是以不能傳送;而127.0.0.1這個位址即使在通路控制清單中定義了,但因為沒有在options段定義監聽的位址,是以也不能進行區域傳送;
修改主伺服器配置檔案/etc/named.conf,
添加監聽127.0.0.1:
listen-on port 53 { 127.0.0.1; 172.18.11.2; };
重新開機服務:
]# systemctl restart named.service
即可;
配置通路控制清單中的遞歸,僅允許為本地用戶端做遞歸
修改主伺服器配置檔案/etc/named.conf,添加遞歸通路控制清單;
添加:
acl mynet {
127.0.0.0/8;
僅允許本地127網段做遞歸查詢;
(把recursion yes;改為:)allow-recursion { mynet; };
是以,使用其它主機做遞歸都拒絕,如使用子域伺服器遞歸查詢baidu
遞歸查詢失敗;
當在主伺服器配置檔案/etc/named.conf,添加172.18.11.4到遞歸通路控制清單即可實作遞歸;
172.18.11.4/16;
此時,使用子域伺服器遞歸查詢baidu;
成功遞歸;
對于從伺服器,也要修改主配置檔案/etc/named.rfc1912.zones,設定區域傳送和遞歸查詢的通路控制清單;
zone "magedu.com" IN {
allow-transfer { none; };
allow-update { none; }; 禁止程序動态更新,跟區域傳送沒關系;
allow-update { none; };
在子域伺服器上測試是否能通過從伺服器對magedu.com域進行區域傳送;
]# dig -t axfr magedu.com @172.18.11.3
顯示失敗;
]# dig -t axfr ops.magedu.com @172.18.11.4:子域可以為自己進行傳送區域;因為子域沒有做通路控制;
正常情況下,每一個域名伺服器,隻要沒有從伺服器,allow-transfer都應該是none,有從伺服器,allow-transfer應該僅指向從伺服器;而且每一個區域都應該是allow-update設為none,除非使用DDNS。
本文轉自 crystaleone 51CTO部落格,原文連結:http://blog.51cto.com/linsj/1764741,如需轉載請自行聯系原作者