下面介紹的是DNS、轉發器、Bind
一、DNS
1、DNS基礎
對於一個解析區域,我們可以把名稱域比作一棵倒置的樹,其中有根域、頂級域。其中,頂級域又分爲三類,即組織域、地理域、反向域。
DNS名稱解析方式:正向解析、反向解析(所用的數據庫不同)。正向解析,即名稱到IP地址的解析;反向解析,即IP地址到名稱的解析。
DNS查詢類型:遞歸查詢、迭代查詢。
DNS服務器的分類:主DNS服務器、從DNS服務器、緩存DNS服務器。
區域數據傳送的兩種類型:全量傳送、增量傳送。
FQDN:完全合格域名
2、DNS的查詢請求流程:
Client --> hosts --> Local Cache --> first DNS(recursive) -->
--> 服務器本地緩存或本地數據庫中有結果,直接響應客戶端;
--> ROOT(iteration) --> TLD_DNS_SERVER --> 二級域DNS_SERVER --> ... --> ns.xxx. --> 解析結果;
3、主從DNS服務器數據庫的四部分:
(1)、序列號(serial) ---------數據庫的版本號,數據庫變化則自增
(2)、刷新時間間隔(refresh) --------------到主DNS服務器上檢查序列號的變化更新情況的時間間隔
(3)、重試時間間隔(retry) ----------------同步數據庫失敗,再次發起嘗試請求的時間間隔
(4)、過期時間(expire) ---------------接不上主DNS服務器時,從DNS服務器多久後停止服務
(5)、否定答案的緩存時長(minimal TTL)
4、資源記錄(RR)
資源記錄,就是存放於區域數據庫文件中,用於解析工作的數據。
常見的【7種資源記錄】類型爲:A、AAAA、PTR、SOA、NS、CNAME、MX,具體解釋如下:
(1)、SOA -------------起始授權記錄
任何一個數據庫中,有且僅有一條,必須是第一條。
(2)、A ------------主機記錄(IPV4)
標識完全合格域名,到IP地址的映射關係。
(3)、AAAA ------------主機記錄(IPV6)
標識完全合格域名,到IPV6地址的映射關係
(4)、PTR ----------------指針記錄
標識IP地址,到完全合格域名的映射關係。
(5)、NS ---------------名稱服務器記錄
標明當前域中所有的DNS服務器。
(6)、CNAME -----------別名記錄
標識從完全合格域名,到完全合格域名的映射關係。
(7)、MX ---------------郵件交換器記錄
標識域中郵件服務器的主機名,從域名映射到完全合格域名
5、七種資源記錄的格式(在區域數據庫中):
資源記錄格式:name|FQDN [TTL] IN RR_TYPE VALUE
(1)、SOA資源記錄
name ------------當前域的域名(qhdlink.com.)/@
value(三類):
1)、當前區域的主DNS服務器的FQDN(ns1.qhdlink.com.)
2)、當前區域數據庫的管理員的郵件地址(mailmaster.qhdlink.com.)
3)、主從服務器進行區域傳送的相關時間定義及否定答案的統一TTL
(Serial 1H 15M 1W 1D)
(
Serial; --------------序列號
1H;refresh -----------刷新時間間隔
15M;retry --------------------重試時間間隔
1W;expire --------------------過期時間
1D);minimal ttl -----------否定答案的緩存時長
示例:
$TTL 86400
qhdlink.com. 86400 IN SOA ns1.qhdlink.com. master.qhdlink.com.(
2017081001;serial
1H;refresh
15M;retry
1W;expire
1D);ttl
(2)、NS記錄
每個域中,可以有多條NS記錄,但每一條NS記錄必須對應一個A記錄。
name ------------當前域的域名
value -----------當前區域內某【DNS服務器】的完全合格域名(ns.qhdlink.com.)
示例:
qhdlink.com. 86400 IN NS ns1.qhdlink.com.
qhdlink.com. 86400 IN NS ns2.qhdlink.com.
$ORIGIN qhdlink.com.
$TTL 86400
IN NS ns1
IN NS ns2
(3)、MX記錄
一個域中,可以有多個MX記錄,但每個MX記錄必須與一條A對應。
name -------------當前域的域名;
value ------------當前域中某有效的【郵件服務器】的主機名
示例:
qhdlink.com. 86400 IN MX 10 mail1.qhdlink.com.
$ORIGIN qhdlink.com.
$TTL 86400
@ IN MX 20 mail2
(4)、A記錄
name --------------域中某主機的FQDN或主機名稱
value --------------與主機名對應的IPv4地址
示例:
www.qhdlink.com. 86400 IN A 192.168.1.1
www.qhdlink.com. 86400 IN A 192.168.1.2
www.qhdlink.com. 86400 IN A 192.168.1.3
www.qhdlink.com. 86400 IN A 192.168.1.4
$ORIGIN qhdlink.com.
$TTL 86400
www IN A 192.168.1.1
(5)、CNAME記錄
name -------------別名的FQDN或簡單的名稱
value --------------真正的名稱的FQDN或其簡單名稱
示例:
web.qhdlink.com. 86400 IN CNAME www.qhdlink.com.
$ORIGIN qhdlink.com.
$TTL 86400
web IN CNAME www
(6)、AAAA記錄 -------------與A一致
name --------------域中某主機的FQDN或主機名稱
value --------------與主機名對應的IPv4地址
示例:
ftp.qhdlink.com. 86400 IN AAAA ::1
(7)、PTR記錄
name -----------將IP地址反過來寫,再加標準後綴。(1.72.16.172.in-addr.arpa.)
value --------------域中某主機的FQDN
示例:
1.72.16.172.in-addr.arpa. 86400 IN PTR www.qhdlink.com.
$ORIGIN 16.172.in-addr.arpa.
$TTL 86400
1.72 IN PTR www.qhdlink.com.
6、DNS配置(正反向區域配置)
(1)、正向區域配置
正向區域配置,包括三部分,即:定義區域、創建區域數據文件、重載區域和配置文件。具體解釋如下:
1)、定義區域的方式-----------/etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type {master|slave|forward|hint};
file "ZONE_NAME.zone";
};
例:zone "qhdlink.com" IN {
type master;
file "qhdlink.com.zone";
};
2)、創建區域數據文件 -----------/var/named/qhdlink.com.zone
在創建區域數據文件時,需要對ZONE_NAME.zone權限進行修改
# chown :named qhdlink.com.zone
# chmod o-r qhdlink.com.zone
例:
$ORIGIN qhdlink.com.
$TTL 86400
@ IN SOA ns1.qhdlink.com. admin.qhdlink.com. (
2017081001;serial
1H;refresh
15M;retry
1W;expire
1D);TTL
IN NS ns1.qhdlink.com.
MX 10 mx1.qhdlink.com.
ns1.qhdlink.com. IN A 172.16.72.1
www IN A 172.16.100.1
www IN A 172.16.100.2
www IN A 172.16.100.3
web IN CNAME www
mx1 IN A 172.16.100.4
3)、重載區域和配置文件
# named-checkconf -----------檢測named.conf語法
# named-checkzone "ZONE_NAME" FILE_NAME ---------檢測域名、區域數據庫文件語法
# rndc reload ------------重載配置文件
# systemctl reload named.service
# service named reload ------------CentOS6
(2)、反向區域配置
反向區域配置,包括三部分,即:定義區域、創建區域數據文件、重載區域和配置文件。具體解釋如下:
1)、定義區域 -----------------/etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type {master|slave|forward|hint};
file "ZONE_NAME.zone";
};
例:zone "16.172.in-addr.arpa" IN {
type master;
file "172.16.zone";
};
2)、創建數據庫文件 -------------/var/named/172.16.zone
修改權限:
# chown :named 172.16.zone
# chmod o-r 172.16.zone
例:
$ORIGIN 16.172.in-addr.arpa.
$TTL 86400
@ IN SOA ns1.qhdlink.com. admin.qhdlink.com. (
2017081001;serial
1H;refresh
15M;retry
1W;expire
1D);TTL
IN NS ns1.qhdlink.com.
1.72 IN PTR ns1.qhdlink.com.
1.100 IN PTR www.qhdlink.com.
2.100 IN PTR www.qhdlink.com.
3.100 IN PTR www.qhdlink.com.
4.100 IN PTR mx1.qhdlink.com.
3)、重載區域和配置文件
# named-checkconf -----------檢測named.conf語法
# named-checkzone "ZONE_NAME" FILE_NAME ---------檢測域名、區域數據庫文件語法
# rndc reload ------------重載配置文件
# systemctl reload named.service
# service named reload ------------CentOS6
7、DNS配置(主從服務器) --------------區域級別
配置一個從服務,主要包括兩部分,即:定義區域、重載配置文件
(1)、主從服務器定義區域
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP; };
};
例:
zone "qhdlink.com" IN {
type slave;
file "slaves/qhdlink.com.zone";
masters { 172.16.72.1; };
};
(2)、重載配置文件
# named-checkconf
# rndc reload
二、轉發器
1、區域轉發、全局轉發
轉發器分爲兩種,即:區域轉發、全局轉發。區域轉發器是針對於某個特定區域的轉發,全局轉發針對的是沒有定義zone的全部區域。
(1)、區域轉發 ------------------/etc/named.rfc1912.zones
例:
zone "baidu.com" IN {
type forward;
forward {first|only};
forwarders { 172.16.72.1; };
};
forward {first|only}中:
first:首先轉發,當指定的轉發器無響應時,再自行迭代
only:只使用轉發器進行轉發,不執行自行迭代
(2)、全局轉發 -------------------/etc/named.conf
例:
options {
...
forward {first|only};
forwarders { SERVER_IP; };
...
};
2、子域授權
(1)、子域授權
對子域進行授權,只需在父域的區域文件中直接授權即可。在子域的NS服務器上,直接創建子域的區域文件,管理資源記錄。
例:
qhdlink.com內容如下:-------------------區域的文件爲/var/named/qhdlink.com.zone
tech.qhdlink.com. IN NS ns.tech.qhdlink.com.
ns.tech.qhdlink.com. IN A 172.16.69.1
其子域的授權如下(直接加一個域): ------------------/etc/named.rfc1912.zones
zone "tech.qhdlink.com" IN {
type master;
file "tech.qhdlink.com.zone";
};
(2)、子域的NS服務器解析父域的資源記錄步驟: -------------需定義轉發器(子 ---> 父)
可以通過區域轉發和全局轉發,使子域能夠通過父域的NS服務器,查找父域中的資源記錄。區域轉發、全局轉發的定義如下:
1)、定義區域轉發 ----------------/etc/named.rfc1912.zones
zone "qhdlink.com" IN {
type forward;
forward first;
forwarders { 172.16.72.1; };
};
2)、全局轉發 ------------/etc/named.conf
options {
...
forward first;
forwarders { 172.16.72.1; };
...
};
三、Bind
1、Bind配置文件
Bind,實現DNS協議的程序,Bind對應的服務器的主程序爲named,named使用的是tcp/udp的53號端口。
Bind的主配置文件爲:/etc/named.conf。對於該主配置文件,其註釋可以使用單行註釋,也可以採用多行註釋。同時,該配置文件採用分段配置的方式,其配置文件主要分爲6部分,即:訪問控制列表段(acl ACL_NAME)、全局選項段(options)、日誌配置段(logging)、區域配置段(zone "ZONE_NAME" IN)、視圖配置段(view VIEW_NAME)、include包含段(include /PATH/TO/SOME_CONFIG_FILE)。
2、測試工具:dig, host, nslookup
bind-utils通用工具包中,包含了dig、 host、 nslookup、rndc等測試工具。
(1)、dig命令 ------------DNS查詢
格式:dig [@Server] [-t RR_TYPE] [query_options]
常用選項:
@Server -----------此次的查詢的DNS服務器,若沒有,就讀取/etc/resolv.conf中的nameserver配置項
-t RR_TYPE ----------查詢請求的資源記錄類型
+[no]trace ----------跟蹤整個解析過程
+[no]recurse -----------目標DNS服務器遞歸查詢
# dig -x IPADDR -----------反向解析
# dig -t axfr DOMAIN_NAME [@Server] ----------模擬區域傳送
(2)、host命令
格式:host [-t RR_TYPE] DOMAIN_NAME SERVER
常用選項:
-t RR_TYPE ----------查詢請求的資源記錄類型
DOMAIN_NAME -----------域名
SERVER -----------此次的查詢的DNS服務器
(3)、nslookup命令 ------DNS查詢,多用於windows(交互式)
> server IP_ADDR ----------DNS服務器的IP地址
> set q=RR_TYPE ----------資源記錄的類型
> QUERY_NAME -------------------解析的主機名
> set type=RR_TYPE ----------資源記錄的類型
(4)、rndc命令 ----------------遠程名稱域控制器、DNS服務器端的控制命令,tcp/953
# rndc status -----------服務器端的運行狀態
# rndc reload -----------服務器端程序重載配置爲文件和區域文件
3、bind安全配置,acl訪問控制列表
(1)、bind的四個acl訪問控制列表,如下:none、any、local、localnet。
(2)、acl語法: ------------使用前,確保已定義
acl acl_name {
[!] ip;
[!] network/prefix;
};
例:
acl mynet {
172.16.0.0/16;
127.0.0.1;
! 172.16.100.100;
};
4、定義視圖
view VIEW_NAME {
match_clients { acl; };
zone
zone
zone
...
};
視圖配置示例:--------------定義視圖後,所有zone必須定義如視圖內。
view intranet {
match-clients { mynet; };
zone "." IN {
type hint;
file "named.ca";
};
zone "qhdlink.com" IN {
type master;
file "qhdlink.com.intra.zone";
allow-query { mynet; };
allow-update { none; };
allow-transfer { none; };
};
};
view internet {
match-clients { any; };
zone "." IN {
type hint;
file "named.ca";
};
zone "qhdlink.com" IN {
type master;
file "qhdlink.com.inter.zone";
allow-update { none; };
allow-transfer { none; };
};
};