DNS服務器原理以及搭建主-輔DNS服務器操作指南
DNS(Domain Name Server,域名服務器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的服務器。DNS中保存了一張域名(domain name)和與之相對應的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一臺計算機或計算機組的名稱,用於在數據傳輸時標識計算機的電子方位(有時也指地理位置)。域名是由一串用點分隔的名字組成的,通常包含組織名,而且始終包括兩到三個字母的後綴,以指明組織的類型或該域所在的國家或地區。
主-輔DNS服務器:
主DNS服務器:維護所負責解析的域數據庫的那臺服務器,讀寫操作均可進行
輔助DNS服務器:從主DNS服務器那裏或其他的從DNS服務器那裏“複製”一份解析庫,但只能進行讀操作
“複製”操作的實施方式:
序列號:serial,也即是數據庫的版本號,主服務器數據庫內容發生變化時,其版本號遞增
刷新時間間隔:refresh,從服務器每隔多久到主服務器檢查序列號更新狀況
重試時間間隔:retry,從服務器從主服務器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔
過期時長:expire,從服務器始終聯繫不到主服務器時,多久之後放棄從主服務器同步數據,停止提供服務
否定答案的緩存時長:negative answer ttl
主服務器“通知”從服務器隨時更新數據
區域傳送:
全量傳送:axfr,傳送整個數據庫
增量傳送:ixfr,僅傳送變量的數據
區域(zone)和域(domain):
listen.com域:
FQDN --> IP
正向解析庫;區域
IP --> FQDN
反向解析庫;區域
區域數據庫文件:
資源記錄:resource record,簡稱rr
記錄類型:A,AAAA,PTR,SOA,NS,CNAME,MX
SOA:Start Of Authority,起始授權記錄:一個區域解析庫有且只能有一個SOA記錄,而且必須放在第一條
NS:Name Server,域名服務記錄:一個區域解析庫可以有多個NS記錄,其中一個爲主的
A:Address,地址記錄:FQDN --> IPv4
AAAA:地址記錄:FQDN -->IPv6
CNAME:Canonical Name,別名記錄
PTR:Pointer,IP -- FQDN
MX:Mail eXchanger,郵件交換器
優先級:0-99,數字越小優先級越高
資源記錄的定義格式:
語法: name [TTL] IN RR_TYPE value
注意:
(1)TTL可以全局繼承
(2)@表示當前區域的名稱
(3)相鄰的兩條記錄其name名稱相同時,後面的看省略
(4)對於正向區域來說,各MX、NS等類型的記錄的value爲FQDN,此FQDN應該有一個A記錄
程序包:(程序包使用yum安裝即可)
bind-libs:被bind和bind-utils包中的程序共同用到的庫文件
bind-utils:bind客戶端程序集,例如:dig,host,nslookup等
bind:提供dns server程序、以及幾個常用的測試程序
bind-chroot:選裝,讓named運行與jail模式下
bind:
主配置文件:/etc/named.conf
或包含進來其他文件
/etc/named.lscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
解析庫文件:
/var/named/目錄下
一般名字爲:ZONE_NAME.zone
注意:
(1)一臺DNS服務器可同時爲多個區域提供解析
(2)必須要有跟解析庫文件,named.ca
(3)還應該有兩個區域解析庫文件,localhost和127.0.0.1的正方向解析庫
正向:named.localhost
方向:named.loopback
rndc:remote name domain contoller(遠程名稱域觸發器)
953/tcp,但默認監聽與127.0.0.1地址,因此僅允許本地使用
bind程序安裝完成之後,默認即可做緩存名稱服務器使用,如果沒有專門負責解析的區域,直接即可啓動服務
CentOS 6:service named start
CentOS 7:systemctl start named.service
主配置文件格式:
全局配置段:
options{......}
日誌配置段:
logging{......}
區域配置段:
zone{......}
那些由本機負責解析的區域或轉發的區域
注意:每個配置語句必須以分號結尾
緩存名稱服務器的配置:
監聽能與外部主機通信的地址;
listen-on port 53 {127.0.0.1;};
學習時,建議關閉dnssec(配置文件默認路徑爲/etc/named.conf)
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
關閉僅允許本地查詢:
//allow-query { localhost; };
檢查配置文件語法錯誤:
#named-checkconf [/etc/named.conf]
測試工具:
dig,host,nslookup等
dig命令:
dig [-t RR_type] name [@SERVER] [query options]
用於測試DNS系統,因此不會查詢host文件
查詢選項:
+[no]trace:跟蹤解析過程
+[no]recurse:進行遞歸解析
示例:
~]# dig -t A www.baidu.com
~]# dig +trace -t A www.baidu.com
~]# dig -t A www.baidu.com @192.168.73.133
注意:反向解析測試
dig -x IP
模擬完全區域傳送:
dig -t axfr DOMAIN [@SERVER]
host命令:
host [-t RR_type] name SERVER_IP
示例:
~]# host -t A www.baidu.com 192.168.73.133
nslookup命令:
nslookup [-options] [name] [server]
交互式模式:
nslookup>
server ip:以指定的IP爲DNS服務器進行查詢
set q=RR_TYPE:要查詢的資料記錄類型
name:要查詢的名稱
示例:
[root@localhost named]# nslookup
> server 192.168.73.133
Default server: 192.168.73.133
Address: 192.168.73.133#53
> set q=A
> www.baidu.com
Server: 192.168.73.133
Address: 192.168.73.133#53
Non-authoritative answer:
www.baidu.com anonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 163.177.151.109
Name: www.a.shifen.com
Address: 163.177.151.110
rndc命令:named服務控制命令
rndc status
rndc flush
主DNS服務器配置步驟:
配置解析一個正向區域:
以listen.com域爲例:
(1)定義區域
在主配置文件中或主配置文件輔助配置文件中實現
zone"ZONE_NAME" IN {
type {master|slave|hlnt|forward};
file "ZONE_NAME.zone";
};
注意:區域名字即爲域名
(2)建立區域數據文件(主要記錄爲A或AAAA)
在/var/named/目錄下建立區域數據文件
文件爲/var/named/listen.com.zone
[root@localhost named]# cat /var/named/listen.com.zone
$TTL 3600
$ORIGIN listen.com.
@ IN SOA ns1.listen.com. admin.listen.com. (
2018120401
1H
10M
3D
1D)
IN NS ns1.listen.com.
IN MX 10 mx1
IN MX 20 mx2
mx2 IN A 192.168.73.142
mx1 IN A 192.168.73.141
ns1 IN A 192.168.73.133
ns2 IN A 192.168.73.140
www IN A 192.168.73.133
web IN CNAME www
權限及數組修改:
#chgrp named /var/named/listen.com.zone
#chmod o= /var/named/listen.com.zone
檢查語法錯誤:
#named-checkzone ZONE_NAME ZONE_FILE
#named-chekconf
(3)讓服務器重載配置文化和區域數據文件
#rndc reload 或 #systemctl reload named.service
配置解析一個反向區域:
(1)定義區域
在主配置文件中或主配置文件輔助配置文件中實現
zone"ZONE_NAME" IN {
type {master|slave|hlnt|forward};
file "ZONE_NAME.zone";
};
注意:方向解析區域的名字
反寫的網段地址.in-addr.arpa
73.168.192.in-addr.arpa
(2)定義區域解析庫文件(主要記錄爲PTR)
示例:
[root@localhost named]# cat 73.168.192.in-addr.arpa.zone
$TTL 3600
$ORIGIN 73.168.192.in-addr.arpa.
@ IN SOA ns1.listen.com. admin.listen.com.(
2018120401
1H
10M
3D
12H)
IN NS ns1.listen.com.
142 IN PTR mx2.listen.com.
141 IN PTR mx1.listen.com.
133 IN PTR ns1.listen.com.
140 IN PTR ns2.listen.com.
133 IN PTR www.listen.com.
權限及數組修改:
#chgrp named /var/named/listen.com.zone
#chmod o= /var/named/listen.com.zone
檢查語法錯誤:
#named-checkzone ZONE_NAME ZONE_FILE
#named-chekconf
(3)讓服務器重載配置文化和區域數據文件
#rndc reload 或 #systemctl reload named.service
輔助DNS服務器配置:
配置一個從區域:
On Slave
(1)定義區域
定義一個從區域:
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP };
};
配置區域語法檢查:
#named-checkconfig
(2)重載配置
#rndc reload
#systemctl reload named.service
On Master
(1)確保區域數據文件中爲每個從服務配置NS記錄,並且在正向區域需要爲每個從服務器的NS記錄的主機名配置一個A記錄,且此A後面的地址爲真正的從服務器的IP地址
注意:時間要同步
ntpdate命令
以下爲主DNS服務器相關配置文件配置內容:
[root@www ~]# tail -11 /etc/named.rfc1912.zones
zone "listen.com" IN {
type master;
file "listen.com.zone";
allow-update { none; };
};
zone "73.168.192.in-addr.arpa" IN {
type master;
file "73.168.192.in-addr.arpa.zone";
allow-update { none; };
};
[root@www ~]# cat /var/named/listen.com.zone
$TTL 3600
$ORIGIN listen.com.
@ IN SOA ns1.listen.com. admin.listen.com. (
2018120401
1H
10M
3D
1D)
IN NS ns1.listen.com.
IN MX 10 mx1
IN MX 20 mx2
mx2 IN A 192.168.73.142
mx1 IN A 192.168.73.141
ns1 IN A 192.168.73.133
ns2 IN A 192.168.73.140
www IN A 192.168.73.133
web IN CNAME www
ops IN NS ns1.ops
ns1.ops IN A 192.168.73.136
[root@www ~]# cat /var/named/73.168.192.in-addr.arpa.zone
$TTL 3600
$ORIGIN 73.168.192.in-addr.arpa.
@ IN SOA ns1.listen.com. admin.listen.com. (
2018120402
1H
10M
3D
12H )
IN NS ns1.listen.com.
142 IN PTR mx2.listen.com.
141 IN PTR mx1.listen.com.
133 IN PTR ns1.listen.com.
140 IN PTR ns2.listen.com.
133 IN PTR www.listen.com.
輔助DNS服務器區域配置文件內容:
[root@bogon slaves]# tail -10 /etc/named.rfc1912.zones
zone "listen.com" IN {
type slave;
file "slaves/listen.com.zone";
masters { 192.168.73.133; };
};
zone "73.168.192.in-addr.arpa" IN {
type slave;
file "slaves/73.168.192.ip-addr.arpa.zone";
masters {192.168.73.133;};
};
注意:輔助DNS服務器的區域解析庫文件會根據主DNS服務器自動生成,默認路徑爲/vat/named/slaves下
[root@bogon ~]# ll /var/named/slaves/
總用量 8
-rw-r--r--. 1 named named 474 1月 4 13:52 73.168.192.ip-addr.arpa.zone
-rw-r--r--. 1 named named 608 1月 4 13:46 listen.com.zone