首先我們需要知道一些原理:
dns服務器有主和從,主服務器發生變化,從服務器會自動同步
上網時我們輸入的網址,比如說www.EXAMLE.com,其寫全應該是www.EXAMPLE.com.,com後有個.,代表着根域,dns結構中一個網址結構是
. | 根域 |
com | 頂級域/一級域 |
EXAMPLE | 二級域 |
www | 主機名 |
如果是www.EXAMLE.com.cn結構,一級域爲cn,二級域爲com,三級域是EXAMPLE,主機名是www
當用戶訪問一個之前從未訪問的網站時,會去查找本地dns的緩存有沒有該域名對應的ip,如果沒有,將會從根域查詢起。
比如說訪問www.baidu.com,其實是訪問www.baidu.com.
(1)查詢至根域:你知不知道我這個網址的ip呀,根域回覆“不知道,不過我知道你的com域在哪,它是我的子域,你去找它吧”(注:這種dns無法將結果交給用戶,不過可以將訪問推薦到下級dns服務器的查詢,稱作迭代查詢)
(2)查詢至com域:你知不知道我這個網址的ip呀,com域回覆“不知道,但我知道你的baidu二級域在哪,它是我的子域,你去找它吧”(注:迭代查詢)
(3)查詢至二級域:你知不知道我這個網址的ip呀,二級域回覆“知道呀,來我把它告訴你”(注:這種dns將最終結果交給用戶,稱作遞歸查詢)
之後dns解析的記錄會存放到本地dns服務器,這個本地dns服務器我們可以理解爲小區的網絡運營商dns服務器,再有其它主機訪問該網址,就可以直接去訪問該ip
知道這個概念,我們便畫邏輯圖,構建dns結構
1、畫出邏輯結構圖
本人實驗時候主機分配計劃和ip
centos7 test:客戶機,ip 192.168.239.70
centos7-1:本地dns主服務器,ip 192.168.239.71
centos7-3:二級域主服務器,ip 192.168.239.73
centos6 test:二級域從服務器,ip 192.168.239.60
centos6-1:一級域服務器,ip 192.168.239.61
centos6-2:根域服務器,ip 192.168.239.62
centos:目標網站,ip 192.168.239.200
實驗中可能會用到的檢查指令:
主配置文件語法檢查:named-checkconf
解析庫文件語法檢查:named-checkzone "chenux.tech" /var/named/chenux.tech.zone
rndc status|reload ;service named reload
2、給計劃作爲dns服務器的主機安裝bind,dns的服務名爲named.service
3、目標網址安裝httpd服務,建立/var/www/html/index.html,寫入內容
4、爲保險起見,我們一步一步按照圖從下向上實現,首先從二級域開始配置
翻頁至最下方,可以看到一路徑
編輯該文件,內容可以按照下面的格式寫入
進入/var/named目錄,編輯chenux.tech.zone主區域
建立好後,需要注意一點
重啓服務,systemctl restart named,測試結果
5、配置二級域從服務器
配置和主服務器稍有不同,下圖標有兩處不同
第一處:/etc/named.conf
第二處:/etc/named.rfc1912.zones
更改完後重啓服務,/var/named/slaves目錄下會自動生成*.zone
測試
6、搭建一級域dns
/etc/named.conf文件不變
/etc/named.rfc1912.zone
主區域文件改名爲/var/named/tech.zone
重啓後測試
此時如果成功,將二級域DNS主服務器網絡斷開,清除一級域dns服務器緩存,rndc flush,測試機dig www.chenux.tech @192.168.239.60(二級域DNS從服務器)依舊正常
7、搭建根域dns服務器
vim /etc/named.conf,最下方有一個zone ".",將它們全部註釋
vim /etc/named.rfc1912.zones
vim /var/named/root.zone
重啓服務,測試正常
8、建立本地dns服務器
vim /etc/named.conf 兩個選項註釋,並且將這兩項改爲no,否則無法進行dns轉發
vim /var/named/named.ca
重啓服務
9、更改測試機192.168.239.70的網卡信息,重啓服務後查看dns已經變化
此時dig網址www.chenux.tech便已經成功
curl www.chenun.tech的結果
總結:dns修改/etc/named.conf(註釋兩條,有從服務器allow-trasfer {允許連接的主機ip})
/etc/named.rft1912.zone,zone "*.com" {
type master/slave;
file "*.com.zone";或者file "slaves/*.com.zone"};
新建/var/named/*.zone,(從服務器會自動生成)
$TTL 86400
@ IN SOA dnsserver admin (版本 1D 1H 1W 3H )
NS dnsserver
NS dnsserver2 子域 NS dnsserver2
dnsserver A 本機ip
dnsserver2 A 子域ip