1.DNS定義: 它是一個將域名和IP相互映射的分佈式數據庫。有了DNS服務器,我們只需要記錄一個網站的域名即可訪問,而再也不需要記憶那一串長長的IP地址了。
協議:DNS
端口: UDP:53 TCP:53
實現:BIND(Berkeley Internet Name Domain), PowerDNS, dnsmasq
FQDN --> IP: 正向解析
IP --> FQDN:反向解析
2.DNS的結構:
3.FQDN(Full Qualified Domain Name)
安全合格域名,按照中國人的習慣是從大到小寫,但老外習慣從小往大了寫,就像寫信一樣,自底向上,所以一個FQDN應該是"www.qq.com."
4.DNS查詢方式
1.遞歸查詢(recursion)(一步一步往上請求進行查詢,)
客戶端只發出一次請求,要求對方給出最終結果。如果客戶端要查找的內容直接在服務器上得到結果,剛給出的答案是一個權威答案,否則就是一個參考答案。
2. 迭代查詢(iteration)(你告訴我下一個要去找的地址,,我去找下一個,,直到找到。)
客戶端發出一次請求,服務器替代客戶端一次次的去請求以獲得最終答案,所以迭代查詢是服務器代爲其查詢,因此,客戶端指向的DNS服務器,一定是允許給本地主機做遞歸的。
一般情況下客戶端和local DNS服務是遞歸查詢,DNS和local DNS之間是迭代查詢的。
5.資源記錄(Resource Record)
SOA:Start Of Authority, 起始授權 一個區域有且只有一個 (劃分這塊區域是我的)
NS:Name Server, 指定負責給定區域的名稱服務器
MX:Mail eXchanger: 郵件交換器
A:Address, FQDN-->IP 列出特定主機名的 IP 地址
PTR: PoiTeR, IP --> FQDN 指針記錄
AAAA: Address, FQDN --> IPv6 IPv6 的地址記錄
CNAME: Canonical Name, 別名記錄
6. DNS服務器類型
主DNS服務器:負責莫區域解析的服務器,對區域的所有更新都有通過此服務器進行。
從DNS服務器: 負責某區域解析,但不負責更新操作。
dns緩存文件
1、區域數據文件有版本號(序列號) : serial number 2、刷新時間(同步檢查週期):refresh 3、重試時間(重試周期):retry, 重試時間要小於刷新時間 4、過期時間(失效時長):expire, 如果超過過期時間主服務器仍然沒有恢復,則從服務器也停止解析 5、否定應答的TTL值:在查找不到記錄的情況下,無法緩存,下次請求還會繼續去請求服務器,因此需要設置TTL值來限制客戶端的再次無意義請求 協調過程: 從服務器在間隔達到refresh指定的時長後發起同步請求至主服務器;主服務器響應serial。 從服務器與本地的serial進行比較;如果主服務器serial大於本。 意味着主服務器區域數據文件更新了,因此進行同步操作。
8. 資源記錄的格式:
Name [ttl] IN RRtype Value
SOA:
name:區域名稱,可使用@替代
value:
第一段:
主DNS服務器的FQDN,也可以是當前區域的名稱
當前區域的管理員郵箱
@用於表示當前區域的名字,所以郵箱地址不能出現@符號
第二段:
(主從服務器協調屬性定義及否定應答的TTL值)
eg:
ibm.com. 60 IN SOA ibm.com. ns.ibm.com. (
2015011601 ;serial number
1H 刷新時間
5M 重試時間
7D 過期時間
1D 否定答案
)
注意:SOA後面ns.ibm.com.中最後面那個.一定不能省略,如果省略,系統會默認給補上你的區域名稱。
一個區域數據文件可以有多個NS記錄 name: 區域名稱,可使用@替代 value:dns服務器的FQDN eg: @ IN NS ns1.ibm.com. @ IN NS ns2.ibm.com. 提示: 1、相鄰資源記錄的name相同時,後面的可省略 2、任何一個value中指定的FQDN,在其域的正向解析文件中應該有對應的A記錄 一個區域數據文件可以有多個MX記錄 name: 區域名稱,可以使用@替代 value:郵件服務器的FQDN 在value之前需要有優先級的設定(0-99, 數字越小優先級越高) eg: @ IN MX 10 mail1.ibm.org. IN MX 20 mail2.ibm.org. 應用於正向區域文件 name: FQDN value: IP eg: www.ibm.org. IN A 1.1.1.1 泛域名解析: * IN A 1.1.1.1 反向區域文件 負責IP——>FQDN的解析,只能定義在反向區域數據文件中,反向區域名稱爲逆向網絡地址加.in-addr.arpa.後綴組成。 name:IP,逆向的主機地址,如:93.251.16.172.in-addr.arpa. value:FQDN,這裏的FQDN不需要有A記錄,反向區域中不能出現A記錄和MX eg: 1 IN PTR www.ibm.com. name: 別名 value:正式名字 eg: web IN CNAME www.ibm.com.
二、DNS的安裝
DNS是同時監聽TCP與UDP協議的53號端口的,它的協議是DNS,軟件名稱是BIND(當然也有其它的)、進程名是named,這裏就詳細介紹以BIND方式安裝DNS服務
1、安裝bind,最好提前裝好yum源,省得解決依賴關係。
1 | [root@nmshuishui ~] # yum -y install bind |
2、啓動服務,檢查是否已經監聽53號端口
[root@xiaoxiao ~]# service named start
Starting named: [ OK ]
[root@xiaoxiao ~]# ss -antu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:647 *:*
udp UNCONN 0 0 127.0.0.1:53 *:*
udp UNCONN 0 0 *:69 *:*
udp UNCONN 0 0 *:847 *:*
udp UNCONN 0 0 ::1:53 :::*
tcp LISTEN 0 3 ::1:53 :::*
tcp LISTEN 0 3 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 128 ::1:953 :::*
tcp LISTEN 0 128 127.0.0.1:953 *:*
tcp LISTEN 0 100 ::1:25 :::*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 127.0.0.1:6010 *:*
tcp LISTEN 0 128 ::1:6010 :::*
tcp ESTAB 0 0 192.168.211.128:22 192.168.211.1:63421
[root@xiaoxiao ~]#
3、配置DNS
1)修改主配置文件
現在DNS雖然已經啓動成功,但還不能提供正常的解析服務,因爲還沒有創建區域數據庫文件。
主配置文件:定義區域,在/etc/named.conf
區域數據文件:區域數據文件其實就是區域文件數據庫,裏面定義資源記錄,它是一個純文本文件,只能包含資源記錄或宏定義。
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
// listen-on port 53 { 127.0.0.1; }; 不註釋只監聽本機
// listen-on-v6 port 53 { ::1; }; ipv6不需要
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 { localhost; };
recursion yes; 准許遞歸。
allow-query { localhost; };
recursion yes;
// dnssec-enable yes;
// dnssec-validation yes; dns安全機制暫且不需要。
// dnssec-lookaside auto;
/* Path to ISC DLV key */
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones"; 定義區域的文件。
//include "/etc/named.root.key";
修改完主配置文件後,再重啓下named,這時它就會監聽服務器的22號端口了。
]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@xiaoxiao ~]# ss -antu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:647 *:*
udp UNCONN 0 0 192.168.211.128:53 *:*
udp UNCONN 0 0 127.0.0.1:53 *:*
udp UNCONN 0 0 *:69 *:*
udp UNCONN 0 0 *:847 *:*
tcp LISTEN 0 3 192.168.211.128:53 *:*
tcp LISTEN 0 3 127.0.0.1:53 *:*
tcp LISTEN 0 128 :::22 :::*
tcp LISTEN 0 128 *:22 *:*
tcp LISTEN 0 128 ::1:953 :::*
tcp LISTEN 0 128 127.0.0.1:953 *:*
tcp LISTEN 0 100 ::1:25 :::*
tcp LISTEN 0 100 127.0.0.1:25 *:*
tcp LISTEN 0 128 127.0.0.1:6010 *:*
tcp LISTEN 0 128 ::1:6010 :::*
tcp ESTAB 0 452 192.168.211.128:22 192.168.211.1:63421
tcp TIME-WAIT 0 0 127.0.0.1:48767 127.0.0.1:953
[root@xiaoxiao ~]#
2)創建正向區域
DNS服務器有四種類型:主DNS服務器,從DNS服務器,緩存名稱服務器,轉發服務器
因爲這裏新建的是第一臺DNS服務器,所以DNS服務器類型爲主DNS服務器,使用file指定數據文件,以;號結尾。
在:vim /etc/named.rfc1912.zones 下創建xiaoxiao.com域。
zone"xiaoxiao.com" IN {
type master; 類型爲主服務器
file "xiaoxiao.com.zone;" 區域數據的路徑,(var/named/xiaoxiao.com.zone )
是在/etc/named.conf中定義的。
};
在/var/named/下創建正向區域文件數據庫,命令爲shuishui.com.zone,並填寫資源記錄
$TTL 600
@ IN SOA dns.xiaoxiao.com. dnsadmin.xiaoxiao.com.(
2015011601
1H
5M
3D
12H
)
IN NS dns
IN MX 10 mail
dns IN A 192.168.211.128
mail IN A 192.168.211.10
www IN A 192.168.211.11
ftp IN CNAME www
修改配置文件及區域後需要執行的6個步驟
[root@xiaoxiao named]# chown root:named xiaoxiao.com.zone 1.修改屬主屬組。
[root@xiaoxiao named]# chmod 640 xiaoxiao.com.zone 2.修改權限
[root@xiaoxiao named]# named-checkconf 3.檢查配置文件
[root@xiaoxiao named]# named-checkzone xiaoxiao.com xiaoxiao.com.zone
zone xiaoxiao.com/IN: loaded serial 2015011601 4.檢查區域文件
OK
[root@xiaoxiao named]# service named restart 5.重啓服務器
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@xiaoxiao named]# tail /var/log/messages 6.查看日誌文件
Jan 17 00:47:21 xiaoxiao named[1856]: command channel listening on 127.0.0.1#953
Jan 17 00:47:21 xiaoxiao named[1856]: command channel listening on ::1#953
Jan 17 00:47:21 xiaoxiao named[1856]: zone 0.in-addr.arpa/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone xiaoxiao.com/IN: loaded serial 2015011601
Jan 17 00:47:21 xiaoxiao named[1856]: zone localhost.localdomain/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: zone localhost/IN: loaded serial 0
Jan 17 00:47:21 xiaoxiao named[1856]: managed-keys-zone ./IN: loaded serial 18
Jan 17 00:47:21 xiaoxiao named[1856]: running 正常啓動
[root@xiaoxiao named]#
測試正向區域解析
使用dig進行測試,-t選項指定類型,@指定使用哪臺主機去解釋,如果不使用@的話,默認會使用/etc/resolv.conf 下指定的DNS服務器進行解析。
[root@xiaoxiao named]# dig -t A www.xiaoxiao.com @192.168.211.128
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -t A www.xiaoxiao.com @192.168.211.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3428
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
aa說明是權威答案,說明此主機名在192.168.211.128上有A記錄沒有經過迭代。
;; QUESTION SECTION:
;www.xiaoxiao.com. IN A
;; ANSWER SECTION:
www.xiaoxiao.com. 600 IN A 192.168.211.11 解析成功得到ip地址。
;; AUTHORITY SECTION:
xiaoxiao.com. 600 IN NS dns.xiaoxiao.com.
;; ADDITIONAL SECTION:
dns.xiaoxiao.com. 600 IN A 192.168.211.128
;; Query time: 1 msec
;; SERVER: 192.168.211.128#53(192.168.211.128)
;; WHEN: Sat Jan 17 00:53:14 2015
;; MSG SIZE rcvd: 84
[root@xiaoxiao named]#
3)創建反向區域
1直接定義在xiaoxiao.com這個區域下就可以了,當然也是主服務器類型,使用file指定區域數據文件,要以;號結尾
vim
/etc/named
.rfc1912.zones
zone"211.168.192.in-addr.arpa" IN {
type master;
file "192.168.211.zone";
}
2在/var/named/下創建反向區域文件數據庫,命令爲172.16.251.zone,並填寫資源記錄
$TTL 600
@ IN SOA dns.xiaoxiao.com. dnsadmin.xiaoxiao.com.(
2015011601
1H
5M
3D
12H
)
IN NS dns.xiaoxiao.com.
128 IN PTR dns.xiaoxiao.com.
10 IN PTR mail.xiaoxiao.com.
11 IN PTR www.xiaoxiao.com.
3 修改配置文件及區域後需要執行的6個步驟
和以上六步驟相同,不在累贅。
4 測試反向區域解析
使用dig進行測試,-t選項指定類型,@指定使用哪臺主機去解釋,如果不使用@的話,默認會使用/etc/resolv.conf 下指定的DNS服務器進行解析。
[root@xiaoxiao named]# dig -x 192.168.211.11 @192.168.211.128
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> -x 192.168.211.11 @192.168.211.128
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33643
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;11.211.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
11.211.168.192.in-addr.arpa. 600 IN PTR www.xiaoxiao.com. 反解析成功。
;; AUTHORITY SECTION:
211.168.192.in-addr.arpa. 600 IN NS dns.xiaoxiao.com.
;; ADDITIONAL SECTION:
dns.xiaoxiao.com. 600 IN A 192.168.211.128
;; Query time: 0 msec
;; SERVER: 192.168.211.128#53(192.168.211.128)
;; WHEN: Sat Jan 17 01:37:27 2015
;; MSG SIZE rcvd: 109
[root@xiaoxiao named]#
三、DNS主從同步
1、向區域中添加從服務器的關鍵兩步:
1)、在上級獲得授權
2)、在區域數據文件中爲從服務器添加一條NS記錄和對應的A或PTR記錄。
2、向從區域中添加區域,但不需要自己創建數據文件,因爲要從主DNS服務器上做區域傳送,爲了安全,要放在/var/named/slaves目錄下,這也是系統專門爲從服務器準備的存放區域數據文件的路徑。
zone"xiaoxiao.com" IN {
type master;
masters{ 192.168.211.12; }; 指定主服務器
file "slaves/xiaoxiao.com.zone"; 指定區域文件路徑
};
zone "211.168.192.in-addr.arpa" IN {
type master;
masters{ 192.168.211.128;}; 設定反向區域。
file "192.168.211.zone";
};