首先咱們須要知道一些原理:html
dns服務器有主和從,主服務器發生變化,從服務器會自動同步vim
上網時咱們輸入的網址,好比說www.EXAMLE.com,其寫全應該是www.EXAMPLE.com.,com後有個.,表明着根域,dns結構中一個網址結構是centos
.緩存 |
根域服務器 |
com網絡 |
頂級域/一級域curl |
EXAMPLEide |
二級域測試 |
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
實際實驗中將以.tech做爲一級域名測試
實驗中可能會用到的檢查指令:
主配置文件語法檢查: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.chenunx.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