CentOS7系統安裝DNS服務
30.1、DNS是什么?
DNS ( Domain Name System )是“域名系統”的英文縮寫,簡單來說就是一個數據庫,用於存儲網絡中IP地址與主機名的對應關系;簡單的說DNS的作用就是把主機名解析為IP地址;如下圖:
30.1.1、DNS層級結構
域名系統作為一個層次結構和分布式數據庫,包含各種類型的數據,包括主機和域名。DNS數據庫中的名稱形成一個分層的樹狀結構;域名在拼裝時,是沿着這顆樹的最下面往樹根上走的;例如:www.baidu.com,其實改余名的完整寫法應該是:www.baidu.com. 注意域名最后面有一個 ".";
30.2、DNS查詢過程
假設我們第一次通過瀏覽器訪問www.baidu.com這個域名。DNS如何查找到www.baidu.com這台主機呢?如下
- 第一步:當我們在瀏覽器中輸入www.baidu.com后我們的個人電腦首先在本機查找hosts文件中是否有www.baidu.com的指向,如果有則直接訪問www.baidu.com所對應的主機;如果沒有在查找本DNS緩存中是否有之前的查詢記錄。如果都沒有則將請求交給本地首先DNS指向的本地DNS服務器為我們查詢。進入第二步;
- 第二步:本地DNS接收到查詢請求后首先看www.baidu.com是否是自己負責解析的域,如果是則將結果返回給用戶主機,如果不是自己負責的區域,則查看DNS服務器數據庫緩存中是否有之前的解析記錄;如果有則將查詢結果返回給用戶主機;如果沒有則由本地DNS服務器向根DNS服務器查詢;進入第三步;
- 第三步:本地DNS服務器向 “.” 根DNS服務器查詢www.baidu.com域名,根收到請求后查看該域名由哪個頂級域負責授權,根本身不負責,於是將.com所在服務器的IP地址返回一個給本地DNS服務器;說你去找.com吧這個事它負責;進入第四步;
- 第四步:本地DNS服務器拿到.com域的地址后就去找.com,.com收到請求后發現它也不知道www.baidu.com在哪,但是它知道baidu.com;於是.com將baidu.com這個域所在服務器的地址返回給本地DNS服務器,說你去找baidu.com吧,這個事它負責;進入第五步;
- 第五步:本地DNS拿到地址后,向baidu.com發起請求,baidu.com收到請求后發現正是自己負責的區域,於是將www.baidu.com所在服務器的地址返回給本地DNS服務器;進入第6步;
- 第六步:本地DNS收到返回的請求后,將結果返回給用戶主機並且緩存到本地一份;於是本地用戶主機就拿着地址找到了www.baidu.com;
30.2.1、DNS查詢類型
- 遞歸查詢:本地主機向本地DNS服務器查詢的階段;第一步到第二步屬於遞歸查詢;
- 迭代查詢:本地DNS服務器向根域、頂級域、二級域查詢的階段,第三步到第五步就屬於迭代查詢;
30.3、DNS服務器類型
負責至少解析一個域
主名稱服務器
輔助名稱服務器
不負責域解析
緩存名稱服務器
30.4、主-輔DNS服務器
- 主DNS:維護所負責解析的域數據庫的那台服務器;讀寫操作均可執行;
- 從DNS:從主DNS服務器那里或其它的從DNS那里復制一份解析庫;但只能進行讀操作;
30.4.1、復制操作的實施方式
- 序列號:serial,也即是數據庫的版本號,主服務器數據內容發生變化時,其版本號要遞增;
- 刷新時間間隔:refresh,從服務器每隔多久向主服務器檢查序列號更新情況;
- 重試時間間隔:retry,從服務器從主服務器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔;應小於刷新時間間隔;
- 過期時長:expire,從服務器始終聯系不到主服務器時,多久之后放棄從主服務器同步數據;停止提供服務;
- 否定答案的緩存時長;minimum
30.4.2、區域傳送
- 全量傳送:axfr,傳送整個數據庫;
- 增量傳送:lxfr,僅傳送變化的數據;
30.4.3、區域(zone)和域(domain)
- 正向解析庫:FQDN —> IP
- 反向解析庫:IP —> FQDN
30.5、資源記錄
資源記錄(Resource Record):簡稱rr;常用的資源記錄類型有:A, AAAA, PTR, SOA, MX, CNAME, NS;
- SOA:起始授權記錄;一個區域解析庫有且只能有一個SOA記錄,而且必須放在第一條;
- NS:域名服務記錄;一個區域解析庫可以有多個NS記錄;其中一個為主的;
- A:地址記錄,FQDN —> IP
- AAAA:地址記錄,FQDN —> IPv6
- MX:郵件交換器;優先級0-99,數字越小優先級越高;
- CNAME:別名記錄;
- PTR:地址記錄,IP —> FQDN;
30.5.1、定義資源記錄的格式
語法格式
name [TTL] IN RR_TYPE VALUE
# RR_TYPE:替換為指定的資源記錄類型;
- SOA記錄定義格式
name:當前區域的名字;例如:“enzhi.com.”,或者 "1.168.192.in-addr.arpa";
value:由多部分組成
1.當前區域的區域名稱(也可以使用主DNS服務器名稱);
2.當前區域的管理員的郵箱地址;但地址中不能使用@符號,一般使用"."來替代;
3.(主從服務協調屬性的定義以及否定答案的TTL)
例如:
enzhi.com. 86400 IN SOA enzhi.com. admin.enzhi.com.(
2017011901 ;serial
2H ;refresh
10M ;retry
3D ; expire
1D) ;minimum
- NS記錄定義格式
name:當前區域的區域名稱;
value:當前區域的某DNS服務器的名字;例如:ns1.enzhi.com.;
注意:一個區域可以有多個NS記錄;
例如:
enzhi.com. 86400 IN NA ns1.enzhi.com.
enzhi.com. 86400 IN NA ns2.enzhi.com.
- MX記錄定義格式
name:當前區域的名稱;
value:當前區域某郵件交換器的主機名;
注意:MX記錄可以有多個,但每個記錄的value之前應該有一個數字表示其優先級;
例如:
enzhi.com 86400 IN MX 10 mail.enzhi.com.
- A記錄定義格式
name:某FQDN,例如:www.enzhi.com.;
value:某IPv4地址;
例如:
www.enzhi.com. 86400 IN A 192.168.1.141
www.enzhi.com. 86400 IN A 192.168.1.142
bbs.enzhi.com. 86400 IN A 192.168.1.143
- PTR記錄定義格式
name:IP地址,有特定格式,IP反過來寫,而且加特定后綴;例如:192.168.1.141的記錄應該寫為141.1.168.192.in-addr.arpa;
vlaue:FQDN
例如:
141.1.168.192.in-addr.arpa. 86400 IN PTR www.enzhi.com.
- CNAME記錄定義格式
name:FQDN格式的別名;
value:FQDN格式的正式名字;
例如:
web.enzhi.com. 86400 IN CNAME www.enzhi.com.
注意:
1、TTL的值可以從全局繼承;只要在第一行加$TTL 86400下面所有的資源記錄都可以繼承;
2、@符號表示當前區域的名稱;
3、相鄰的兩條記錄其name相同時后面的可以省略;
4、MX,NS等類型的記錄的value為一個FQDN,此FQDN應該有一個A記錄;
30.6、安裝bind並提供域名解析服務
Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server;bind是dns協議的一種實現;其運行后的程序名為named;
注意:本文演示環境為centos7.2系統環境;
30.6.1、bind的程序包
- bind-libs:被bind和bind-utils包中的程序共同用到的庫文件;
- bind-utils:bind客戶端程序集;提供了,dig , host, nslookup等相關工具;
- bind:提供 dns server程序,以及幾個常用的測試程序;
- bind-chroot:選裝;提供了一種安全機制;通常公司內部使用不需要安裝;
30.6.2、安裝bind
yum -y install bind
bind服務的主配置文件:/etc/named.conf
或包含進來的其它文件:
/etc/named.iscdlv.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命令
默認監聽在127.0.0.1的tcp/953端口,因此僅允許本地使用;
注意:bind程序安裝完成后,默認即可作為緩存服務器使用;如果沒有專門負責解析的區域,直接可啟動服務;
啟動服務方法
CentOS6:service named start
CentOS7:systemctl start named.service
主配置文件的格式
# 全局配置段
options{...}
# 日志配置段
logging{...}
# 區域配置段
zone{...}
注意:每個配置語句必須以分號結尾;否則為語法錯誤;
30.6.3、緩存服務器的配置
安裝完bind以后默認啟動就是緩存服務器;僅需要關閉部分不需要的功能即可;
1、配置監聽能與外部主機通信的IP地址;
# 在全局配置段中修改
[root@Bj-1-141 ~]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 192.168.1.141; };
2、學習時建議關閉部分功能
# 關閉dnssec部分
//dnssec-enable yes;
//dnssec-validation yes;
# 關閉僅允許本地查
//allow-query { localhost; };
注意://表示注釋符號
3、檢查配置文件是否有語法錯誤
named-checkconf [/etc/named.conf]
4、啟動named服務
[root@Bj-1-141 ~]# systemctl start named.service
5、測試
[root@Bj-1-141 ~]# dig -t A www.baidu.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.baidu.com @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57431
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 6
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 1200 IN CNAME www.a.shifen.com.
www.a.shifen.com. 300 IN A 119.75.218.70
www.a.shifen.com. 300 IN A 119.75.217.109
;; AUTHORITY SECTION:
a.shifen.com. 1200 IN NS ns2.a.shifen.com.
a.shifen.com. 1200 IN NS ns1.a.shifen.com.
a.shifen.com. 1200 IN NS ns5.a.shifen.com.
a.shifen.com. 1200 IN NS ns4.a.shifen.com.
a.shifen.com. 1200 IN NS ns3.a.shifen.com.
;; ADDITIONAL SECTION:
ns2.a.shifen.com. 1200 IN A 180.149.133.241
ns3.a.shifen.com. 1200 IN A 61.135.162.215
ns5.a.shifen.com. 1200 IN A 119.75.222.17
ns1.a.shifen.com. 1200 IN A 61.135.165.224
ns4.a.shifen.com. 1200 IN A 115.239.210.176
;; Query time: 277 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 18:08:58 CST 2017
;; MSG SIZE rcvd: 271
30.7、測試工具
dig , host, nslookup;如果當前系統上沒有此三個命令,需要安裝bind-utils軟件包;
30.7.1、dig命令
功用:用於測試dns系統,因此其不會查詢hosts文件;
使用格式
dig [-t RR_TYPE] name [@server] [query options]
查詢選項
+[no]trace:跟蹤解析過程;
+[no]recurse:進行遞歸解析;
反向解析
dig -x IPADDR
模擬完全區域傳送
dig -t axfr DOMAIN [@server]
示例
# 查詢baidu.com的NS記錄
[root@Bj-1-141 ~]# dig -t NS baidu.com
# 跟蹤解析www.baidu.com的過程
[root@Bj-1-141 ~]# dig +trace www.baidu.com
# 解析www.baidu.com的A記錄
[root@Bj-1-141 ~]# dig -t A www.baidu.com
30.7.2、host命令
使用格式
host [-t RR_TYPE] name SERVER_IP
示例
# 解析www.jd.com的A記錄
[root@Bj-1-141 ~]# host -t A www.jd.com
www.jd.com is an alias for www.jdcdn.com.
www.jdcdn.com has address 59.108.139.1
30.7.3、nslookup命令
使用格式
nslookup [-opthions] [name] [server]
交互式模式下使用方式
# 命令行下直接輸入nslookup
nslookup>
server ip:server為關鍵字,以指定的IP為dns服務器進行查詢;
set q=RR_TYPE:set q= 為關鍵字,RR_TYPE為要查詢的資源類型;
name:要查詢的域名;
示例
[root@Bj-1-141 ~]# nslookup
> server 192.168.1.1
Default server: 192.168.1.1
Address: 192.168.1.1#53
> set q=A
> www.baidu.com
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 119.75.218.70
Name: www.a.shifen.com
Address: 119.75.217.109
30.7.4、rndc命令
功用:named服務控制命令
rndc status
rndc flush
30.8、配置解析一個正向區域
演示環境
操作系統版本 | DNS服務器IP地址 | 演示域 | 內核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
注意:以enzhi.com為列;
30.8.1、定義區域
在主配置文件中實現或主配置文件輔助配置文件中實現:/etc/named.conf或者/etc/named.rfc1912.zones
格式
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
示例
[root@Bj-1-141 ~]# vim /etc/named.rfc1912.zones
# 在對下面添加
zone "enzhi.com." IN {
type master;
file "enzhi.com.zone";
};
注意:區域名字即為域名;
30.8.2、建立區域數據文件
主要記錄為A或 AAAA;在/var/named/目錄下建立區域數據文件;
1、創建正向區域文件
[root@Bj-1-141 ~]# cd /var/named/
[root@Bj-1-141 named]# vim enzhi.com.zone
$TTL 3600
$ORIGIN enzhi.com.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011901
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
IN MX 10 mail.enzhi.com.
ns1 IN A 192.168.1.141
mail IN A 192.168.1.142
www IN A 192.168.1.143
bbs IN A 192.168.1.144
bbs IN A 192.168.1.145
注意:
$TTL 3600:表示定義默認TTL值,所以在下面的所有資源記錄都不用在寫TTL值;
$ORIGIN enzhi.com.:作用是在資源記錄中像"ns1.enzhi.com."就可以簡寫為ns1,會繼承$ORIGIN后面定義的域名;
2、修改區域文件的權限及屬組
# 修改區域文件的屬組為named用戶
[root@Bj-1-141 named]# chown :named enzhi.com.zone
# 修改區域文件的權限為640
[root@Bj-1-141 named]# chmod 640 enzhi.com.zone
3、檢查配置文件和區域文件是否有語法錯誤
[root@Bj-1-141 named]# named-checkconf
[root@Bj-1-141 named]# named-checkzone enzhi.com. /var/named/enzhi.com.zone
zone enzhi.com/IN: loaded serial 2017011901
OK
30.8.3、讓服務器重載配置文件和區域文件
[root@Bj-1-141 ~]# rndc reload
server reload successful
# 或者執行
[root@Bj-1-141 ~]# systemctl reload named.service
30.8.4、測試
1、解析www.enzhi.com的A記錄;
[root@Bj-1-141 ~]# dig -t A www.enzhi.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.enzhi.com @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40269
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.enzhi.com. IN A
;; ANSWER SECTION:
www.enzhi.com. 3600 IN A 192.168.1.143
;; AUTHORITY SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 0 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:06:12 CST 2017
;; MSG SIZE rcvd: 92
2、解析enzhi.com的NS記錄;
[root@Bj-1-141 ~]# dig -t NS enzhi.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t NS enzhi.com @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27289
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;enzhi.com. IN NS
;; ANSWER SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 34 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:08:53 CST 2017
;; MSG SIZE rcvd: 72
30.9、配置解析一個反向區域
演示環境
操作系統版本 | DNS服務器IP地址 | 演示域 | 內核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
30.9.1、定義區域
在主配置文件中實現或主配置文件輔助配置文件中實現:/etc/named.conf或者/etc/named.rfc1912.zones
格式
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:反向區域的名字,為反寫的網斷地址.in-addr.arpa;例如:1.168.192.in-addr.arpa;
示例
[root@Bj-1-141 ~]# vim /etc/named.rfc1912.zones
# 在最下面添加
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
};
30.9.2、建立區域解析庫文件(主要記錄為PTR)
1、創建反向解析區域文件;
[root@Bj-1-141 ~]# cd /var/named/
[root@Bj-1-141 named]# vim 192.168.1.zone
$TTL 3600
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011901
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
141 IN PTR ns1.enzhi.com.
142 IN PTR mail.enzhi.com.
143 IN PTR www.enzhi.com.
144 IN PTR bbs.enzhi.com.
145 IN PTR bbs.enzhi.com.
2、修改區域文件屬組及權限
[root@Bj-1-141 named]# chmod 640 192.168.1.zone
[root@Bj-1-141 named]# chown :named 192.168.1.zone
3、檢查配置文件及反向區域文件配置語法
[root@Bj-1-141 ~]# named-checkconf
[root@Bj-1-141 ~]# named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.zone
zone 1.168.192.in-addr.arpa/IN: loaded serial 2017011901
OK
30.9.3、重載配置文件和區域文件
[root@Bj-1-141 ~]# rndc reload
server reload successful
# 或者執行
[root@Bj-1-141 ~]# systemctl reload named.service
30.9.4、測試
1、反向解析www.enzhi.com域名的IP地址
[root@Bj-1-141 ~]# dig -x 192.168.1.143 @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -x 192.168.1.143
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57138
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;143.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
143.1.168.192.in-addr.arpa. 3600 IN PTR www.enzhi.com.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 0 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:27:39 CST 2017
;; MSG SIZE rcvd: 116
2、反向解析mail.enzhi.com的IP地址;
[root@Bj-1-141 ~]# dig -x 192.168.1.142 @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -x 192.168.1.142 @192.168.1.141
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51427
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;142.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
142.1.168.192.in-addr.arpa. 3600 IN PTR mail.enzhi.com.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 3600 IN NS ns1.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
;; Query time: 0 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 19:28:57 CST 2017
;; MSG SIZE rcvd: 117
30.10、配置主從服務器
主服務器的安裝和配置這里不在演示根據上面配置正向解析和反向解析后在配置從即可;
注意:從服務器時區域級別的概念;每次修改主服務器區域配置文件序列號要加1;兩台服務器要做時間同步
演示環境
操作系統版本 | 主DNS服務器IP地址 | 演示域 | 內核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
操作系統版本 | 從DNS服務器IP地址 | 演示域 | 內核版本 |
CentOS Linux release 7.2.1511 (Core) | 192.168.1.142 | enzhi.com | 3.10.0-327.el7.x86_64 |
30.10.1、安裝配置從服務器
1、安裝bind軟件包
[root@BJ-1-142 ~]# yum -y install bind bind-utils
2、修改主配置文件
[root@BJ-1-142 ~]# vim /etc/named.conf
# 修改options全局配置段
listen-on port 53 { 127.0.0.1; 192.168.1.142; };
# 關閉允許查詢
//allow-query { localhost; };
# 關閉dnssec部分功能
//dnssec-enable yes;
//dnssec-validation yes;
3、定義區域
格式:
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP; };
};
示例:
[root@BJ-1-142 ~]# vim /etc/named.rfc1912.zones
zone "enzhi.com" IN {
type slave;
file "slaves/enzhi.com.zone";
masters { 192.168.1.141; };
};
zone "1.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.1.zone";
masters { 192.168.1.141; };
};
4、配置文件語法檢查
[root@BJ-1-142 ~]# named-checkconf
5、啟動named服務
[root@BJ-1-142 ~]# systemctl start named.service
[root@BJ-1-142 ~]# rndc status
version: 9.9.4-RedHat-9.9.4-38.el7_3.1 <id:8f9657aa>
CPUs found: 2
worker threads: 2
UDP listeners per interface: 2
number of zones: 103
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
30.10.2、修改主dns服務器區域數據文件
1、確保區域數據文件中為每個從服務器配置NS記錄;並且在正向區域文件中,需要為每個從服務器的NS記錄的主機名配置一個A記錄,且此A記錄后面的地址為真正的從服務器的IP地址;
[root@Bj-1-141 named]# vim enzhi.com.zone
$TTL 3600
$ORIGIN enzhi.com.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011902 ;#修改區域文件序列號要自增加1;
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
IN NS ns2.enzhi.com. ;#添加一條從服務器的NS記錄
IN MX 10 mail.enzhi.com.
ns1 IN A 192.168.1.141
ns2 IN A 192.168.1.142 ;#添加一條從服務器的A記錄
mail IN A 192.168.1.142
www IN A 192.168.1.143
bbs IN A 192.168.1.144
bbs IN A 192.168.1.145
2、反向區域文件中也要增加NS記錄
[root@Bj-1-141 named]# vim 192.168.1.zone
$TTL 3600
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA enzhi.com. admin.enzhi.com. (
2017011902 ;#修改區域文件序列號要自增加1
1H
10M
3D
1D)
IN NS ns1.enzhi.com.
IN NS ns2.enzhi.com. ;#添加一條從服務器的NS記錄
141 IN PTR ns1.enzhi.com.
142 IN PTR ns2.enzhi.com. ;#添加一條從服務器的PTR記錄
142 IN PTR mail.enzhi.com.
143 IN PTR www.enzhi.com.
144 IN PTR bbs.enzhi.com.
145 IN PTR bbs.enzhi.com.
3、檢查配置文件及區域文件是否存在語法錯誤
[root@Bj-1-141 named]# named-checkconf
[root@Bj-1-141 named]# named-checkzone enzhi.com. enzhi.com.zone
zone enzhi.com/IN: loaded serial 2017011902
OK
[root@Bj-1-141 named]# named-checkzone 1.168.192.in-addr.arpa 192.168.1.zone
zone 1.168.192.in-addr.arpa/IN: loaded serial 2017011902
OK
4、重載主服務器配置文件
[root@Bj-1-141 named]# rndc reload
server reload successful
[root@Bj-1-141 named]# systemctl status named.service
30.10.3、測試
1、在從服務器上解析enzhi.com的NS記錄;
[root@BJ-1-142 ~]# dig -t NS enzhi.com @192.168.1.142
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t NS enzhi.com @192.168.1.142
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5598
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;enzhi.com. IN NS
;; ANSWER SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
enzhi.com. 3600 IN NS ns2.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
ns2.enzhi.com. 3600 IN A 192.168.1.142
;; Query time: 1 msec
;; SERVER: 192.168.1.142#53(192.168.1.142)
;; WHEN: 四 1月 19 20:16:24 CST 2017
;; MSG SIZE rcvd: 106
2、在從服務器上解析www.enzhi.com的A記錄;
[root@BJ-1-142 ~]# dig -t A www.enzhi.com @192.168.1.142
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.enzhi.com @192.168.1.142
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36363
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.enzhi.com. IN A
;; ANSWER SECTION:
www.enzhi.com. 3600 IN A 192.168.1.143
;; AUTHORITY SECTION:
enzhi.com. 3600 IN NS ns1.enzhi.com.
enzhi.com. 3600 IN NS ns2.enzhi.com.
;; ADDITIONAL SECTION:
ns1.enzhi.com. 3600 IN A 192.168.1.141
ns2.enzhi.com. 3600 IN A 192.168.1.142
;; Query time: 1 msec
;; SERVER: 192.168.1.142#53(192.168.1.142)
;; WHEN: 四 1月 19 20:16:08 CST 2017
;; MSG SIZE rcvd: 126
注意:如果從不服務器不能解析,使用手動測試區域傳送看看能否同步,在從服務器上;
30.10.4、手動測試區域傳送
在從服務器上測試,DNS服務器指向主服務器的IP地址;如果資源記錄顯示都能同步則配置沒有問題;如果從服務器手動測試沒問題,但是無法解析出從服務器的NS記錄,解決方法,查看防火牆,selinux,或者重新修改主服務器序列號后重載主服務器配置文件;
[root@BJ-1-142 ~]# dig -t axfr enzhi.com @192.168.1.141
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t axfr enzhi.com @192.168.1.141
;; global options: +cmd
enzhi.com. 3600 IN SOA enzhi.com. admin.enzhi.com. 2017011903 3600 600 259200 86400
enzhi.com. 3600 IN NS ns1.enzhi.com.
enzhi.com. 3600 IN NS ns2.enzhi.com.
enzhi.com. 3600 IN MX 10 mail.enzhi.com.
bbs.enzhi.com. 3600 IN A 192.168.1.144
bbs.enzhi.com. 3600 IN A 192.168.1.145
bbs.enzhi.com. 3600 IN A 192.168.1.146
mail.enzhi.com. 3600 IN A 192.168.1.142
ns1.enzhi.com. 3600 IN A 192.168.1.141
ns2.enzhi.com. 3600 IN A 192.168.1.142
www.enzhi.com. 3600 IN A 192.168.1.143
enzhi.com. 3600 IN SOA enzhi.com. admin.enzhi.com. 2017011903 3600 600 259200 86400
;; Query time: 1 msec
;; SERVER: 192.168.1.141#53(192.168.1.141)
;; WHEN: 四 1月 19 20:21:59 CST 2017
;; XFR size: 12 records (messages 1, bytes 282)
30.11、子域授權
演示環境
操作系統版本 | 主DNS服務器IP地址 | 演示域 | 內核版本 |
---|---|---|---|
CentOS Linux release 7.2.1511 (Core) | 192.168.1.141 | enzhi.com | 3.10.0-327.el7.x86_64 |
操作系統版本 | 從DNS服務器IP地址 | 演示域 | 內核版本 |
CentOS Linux release 7.2.1511 (Core) | 192.168.1.142 | enzhi.com | 3.10.0-327.el7.x86_64 |
操作系統版本 | 子域DNS IP地址 | 演示域 | 內核版本 |
CentOS Linux release 7.2.1511 (Core) | 192.168.1.143 | ops.enzhi.com | 3.10.0-327.el7.x86_64 |
30.11.1、配置主DNS服務器
1、在主DNS服務器正向解析庫文件中添加;
[root@Bj-1-141 named]# vim enzhi.com.zone
ops IN NS ns1.ops
ns1.ops IN A 192.168.1.143
# 注意要修改了配置序列號要加1;
2、重載服務
[root@Bj-1-141 named]# rndc reload
server reload successful
30.11.2、配置子域服務器
1、安裝bind服務
[root@BJ-1-143 ~]# yum -y install bind bind-utils
2、修改監聽地址關閉部分功能
[root@BJ-1-143 ~]# vim /etc/named.conf
listen-on port 53 { 127.0.0.1; 192.168.1.143; };
# 關閉部分功能前面加上注釋即可;
//allow-query { localhost; };
//dnssec-enable yes;
//dnssec-validation yes;
3、添加一個正向區域
[root@BJ-1-143 ~]# vim /etc/named.rfc1912.zones
# 在最下面添加
zone "ops.enzhi.com" IN {
type master;
file "ops.enzhi.com.zone";
};
4、創建子域,區域數據庫文件;
[root@BJ-1-143 named]# cd /var/named
[root@BJ-1-143 named]# vim ops.enzhi.com.zone
$TTL 3600
$ORIGIN ops.enzhi.com.
@ IN SOA ops.enzhi.com. admin.ops.enzhi.com. (
2017011901
1H
10M
3D
1D)
IN NS ns1
ns1 IN A 192.168.1.143
www IN A 192.168.1.150
# 修改區域文件權限及屬組
[root@BJ-1-143 named]# chown :named ops.enzhi.com.zone
[root@BJ-1-143 named]# chmod 640 ops.enzhi.com.zone
5、檢查配置文件語法並重載配置文件
[root@BJ-1-143 named]# named-checkconf
[root@BJ-1-143 named]# named-checkzone ops.enzhi.com. ops.enzhi.com.zone
zone ops.enzhi.com/IN: loaded serial 2017011901
OK
# 重載配置
[root@BJ-1-143 named]# systemctl start named.service
6、dig命令測試能否解析父域,測試父域能否解析子域
30.12、定義轉發
注意:被轉發的服務器必須允許為當前服務器做遞歸;要在子域服務器上做轉發解析父域
30.12.1、區域轉發
僅轉發對某特定區域的解析請求;
格式
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP; };
};
first:首先轉發,轉發器不響應時;
SERVER_IP:為父域的主從服務器地址;
示例
[root@BJ-1-143 named]# vim /etc/named.rfc1912.zones
# 僅對enzhi.com這個域做轉發
zone "enzhi.com" IN {
type forward;
forward only;
forwarders { 192.168.1.141; 192.168.1.142; };
};
重載配置文件
[root@BJ-1-143 named]# rndc reload
server reload successful
測試
解析父域的www.enzhi.com測試能否解析
[root@BJ-1-143 named]# dig -t A www.enzhi.com @192.168.1.143
; <<>> DiG 9.9.4-RedHat-9.9.4-38.el7_3.1 <<>> -t A www.enzhi.com @192.168.1.143
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5835
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.enzhi.com. IN A
;; ANSWER SECTION:
www.enzhi.com. 3076 IN A 192.168.1.144 《====可以解析
;; AUTHORITY SECTION:
enzhi.com. 171964 IN NS ns2.4.cn.
enzhi.com. 171964 IN NS ns1.4.cn.
;; Query time: 0 msec
;; SERVER: 192.168.1.143#53(192.168.1.143)
;; WHEN: 四 1月 19 22:15:04 CST 2017
;; MSG SIZE rcvd: 98
30.12.2、全局轉發
針對凡是本地沒有通過zone定義的區域查詢請求,通通轉發給某轉發器;
示例:在子域服務器修改主配置文件定義全局轉發
[root@BJ-1-143 ~]# vim /etc/named.conf
# 在options全局段中添加,全局轉發給父域主服務器
forward only;
forwarders { 192.168.1.141; };
重載配置文件
[root@BJ-1-143 ~]# rndc reload
server reload successful