目錄:
(一)DNS介紹
(二)DNS服務器部署
(三)DNS域名解析
(四)DNS容災
(五)DNS智能解析數據庫
(一)DNS介紹
(1.1)DNS是一個域名系統,在互聯網環境中爲域名和IP地址相互映射的一個分佈式數據庫,可以使用戶更方便的訪問互聯網,而不用去記住可以被機器直接讀取的IP數串。相似於生活中的114服務,能夠經過人名找到電話號碼,也能夠經過電話號碼找到人名(生活中沒有那麼準確的緣由是人名有重名,而域名時全世界惟一的)。其中DNS協議運行在UDP協議之上,使用端口號53。
(1.2)在咱們的互聯網絡都有一個IP地址,咱們上網的時候是須要IP地址才能夠正常的上網的,目前IP地址主要分2個版本:一個版本是IPv4,擁有地址是2的32次方個;另外一個版本是IPv6,擁有的地址是2的128次方個。
(1.3)DNS命名:域名分國際域名和國內域名兩種,對於國際域名而言,其命名規則是:域名能夠由(a-z、A-Z大小寫等價)26個英文字母、數字(0-9)以及鏈接符「-」組成,可是域名的首位必須是字母或數字。對於域名的長度也有必定的限制:國際通用頂級域名長度不得超過26個字符,中國國家頂級域名長度不得超過20個字符。域名管理機構:Internet域名與地址管理機構(ICANN)是爲承擔域名系統管理,IP地址分配,協議參數配置,以及主服務器系統管理等職能而設立的非盈利機構。現由IANA和其餘實體與美國政府約定進行管理。國內域名的DNS必須在CNNIC註冊。咱們在國內註冊域名的時候主要能夠到萬網和新網進行域名註冊。例如咱們的服務器的主機名爲biying.blog.51cto.com,此時咱們只須要購買二級域名51cto便可,後面的三級域名blog,四級域名biying咱們本身設置便可。vim
(二)DNS服務器部署
(2.1)DNS安裝
(2.1.1)咱們使用bind軟件包來安裝DNS服務,在安裝的時候須要安裝兩個軟件包bind和bind-chroot,其中bind-chroot是DNS的安全包,改變默認DNS根目錄,將DNS運行在監牢模式,防止系統由於DNS服務的漏洞被attack後,可以在系統中提權,看到服務器整個目錄的信息,而運行在監牢模式後,即便出現了attack也仍然可以將範圍鎖死在DNS服務之中。
# yum install bind bind-chroot -y---咱們安裝DNS服務,並使用監牢模式
(2.1.2)注意:
若是不使用chroot模式啓動DNS,則先將服務啓動起來,而後直接設置開機自動啓動。
# systemctl start named---將named服務啓動起來
# systemctl enabled named---設置開機自動啓動
# systemctl status named---查看named服務是不是正常啓動
(2.1.3)咱們使用chroot模式啓動DNS後,須要將/etc/named.conf配置文件拷貝到/var/named/chroot/etc/目錄下,而後修改/var/named/chroot/etc/目錄下的named.conf的配置文件的屬組爲named,同時也要將/var/named/目錄下的全部named開頭的文件拷貝到/var/named/chroot/var/named/目錄下而且保持權限不變,而後咱們設置開機自動啓動。
# systemctl status named-chroot---查詢監牢模式下DNS服務的運行是不是正常的
# cp -p /etc/named.conf /var/named/chroot/etc/---使用-p參數表示保持權限不變,並將named.conf文件拷貝到/var/named/chroot/etc/目錄下
# cp -p /var/named/named.* /var/named/chroot/var/named/---使用-p參數表示保持權限不變,並將/var/named/目錄下的全部named開頭的文件拷貝到/var/named/chroot/var/named/目錄下
# systemctl enable named-chroot---設置開機自動啓動
# systemctl disable named-chroot---取消開機自動啓動
(2.1.4)注意:
默認狀況下,若是不安裝named-chroot這個包,配置文件的路徑以下:配置文件在/etc/named.conf,區域數據庫文件在/var/named/目錄中。因爲咱們安裝了named-chroot這個用於改變默認DNS配置文件的路徑的包,因此相對應的配置文件的路徑也發生了變化。變化以下:配置文件在/var/named/chroot/etc/named.conf,區域數據庫文件在/var/named/chroot/var/named/目錄中。
(2.2)DNS配置文件詳解
(2.2.1)咱們首先來看一下咱們主配置文件,咱們編輯named.conf文件,咱們指定listen-on的端口是53,IP地址爲192.168.26.101,而後不須要使用IPv6的監聽,因爲咱們不須要使用rndc命令,因此咱們能夠註釋「dump-file」、「statistics-file」、「memstatistics-file」三行的信息。
# vim /var/named/chroot/etc/named.conf
(2.2.2)而後咱們在named.conf文件中須要對allow-query參數指定值爲any代表對全部人都提供DNS服務(圖2-6),因爲咱們並非權威服務器,因此咱們還須要開啓DNS服務器的遞歸查詢,設置recursion的值爲yes,而後能夠把相關的DNS安全的部分進行註釋。
(2.2.3)zone表示的是進行解析,例如咱們填寫baidu.com表示的是對baidu.com域作解析了,而「.」表示的是對根域作解析,include表示的是包含的文件信息。
(2.3)DNS啓動
接着咱們在系統中首先對配置文件是否完整進行測試,而後將named-chroot服務啓動起來,此時咱們發現53端口且爲UDP的named服務已經正常的運行起來了。
# named-checkconf /var/named/chroot/etc/named.conf---對配置文件是否完整進行測試
# systemctl start named-chroot---將named-chroot服務啓動一下
# lsof -i :53---此時咱們發現53端口且爲UDP的named服務已經正常的運行起來了緩存
(2.4)接着咱們查看區域數據庫文件,咱們能夠進入到/var/named/chroot/var/named/目錄下,而後咱們查看named.ca配置文件,named.ca配置文件中主要記錄的是根的區域數據庫文件,裏面記錄了當前根服務器的全部信息,目前一共有13臺根服務器。安全
(2.5)在/var/named/chroot/var/named/目錄下named.empty配置文件和named.localhost配置文件中的信息是同樣的,都記錄的是正向解析的模板文件。其中TTL表示的是緩存時間,1D表示的1天,第二行第1個「@」表示的是域名爲哪一個域名作解析,「IN」表示的解釋說明,「SOA」表示起始受權域,「rname.invalid.」表示的是管理員的郵箱,第二行第2個「@」表示的是哪一個DNS爲它作解析;「serial」表示的是序列號,每次更新該文件系列號都應該變大,「refresh」表示刷新時間,即規定從域名服務器多長時間查詢一個主服務器,以保證從服務器的數據是最新的,「retry」重試時間,即當從服務器試圖在主服務器上查詢更新時,而鏈接失敗了,則這個值規定了從服務多長時間後再試,「expire」過時時間,從服務器在向主服務更新失敗後多長時間後清除對應的記錄,「minimum」表示這個數據用來規定緩衝服務器不能與主服務聯繫上後多長時間清除相應的記錄。「NS」表示的是域名服務器,「A」表示的是IPv4,「AAAA」表示的是IPv6
(2.6)在/var/named/chroot/var/named/目錄下named.loopback配置文件記錄都是反向解析的模板文件。服務器
(三)DNS域名解析
(3.1)正向解析
(3.1.1)要求:對ayitula.com域名作解析,解析要求以下:www解析爲A記錄,IP地址爲192.168.26.88,news作別名解析CNAME解析爲www。其中在正向解析主配置文件/var/named/chroot/etc/named.conf中的類型能夠有:master、hint、slave、forward,此處咱們配置的類型爲master,指定區域爲ayitula.com.zone(圖2-14)。咱們進入到/var/named/chroot/var/named/目錄中,將named.localhost模板文件拷貝命名爲ayitula.com.zone,而且修改ayitula.com.zone文件的屬組爲named(圖2-15),區域數據庫文件ayitula.com.zone中NS表示域名,A表示的域名解析爲IP地址,PTR表示IP地址解析爲域名,MX表示爲郵件,CNAME表示爲別名(圖2-16)。
# cd /var/named/chroot/var/named/---進入到/var/named/chroot/var/named/目錄中
# cp named.localhost ayitula.com.zone---將named.localhost模板文件拷貝到
# chgrp named ayitula.com.zone---修改ayitula.com.zone文件的屬組爲named
(3.1.2)咱們進入到/var/named/chroot/var/named/目錄中,編輯ayitula.com.zone配置文件完成後,接着檢測主配置文件是否配置正確並檢測區域配置文件的配置是否正確,最後將DNS服務重啓一下,此時咱們的正向解析已經配置好了。
# named-checkconf /var/named/chroot/etc/named.conf---檢測主配置文件是否配置正確
# named-checkzone ayitula.com /var/named/chroot/var/named/ayitula.com.zone---檢測區域配置文件的配置是否正確
# systemctl restart named-chroot---將DNS服務重啓一下
(3.2)域名解析命令
(3.2.1)咱們在vms001主機配置完畢後,可使用vms002主機進行測試,咱們能夠設置vms002主機的/etc/resolv.conf配置文件中的DNS服務器地址指向vms001主機。
(3.2.2)通常咱們在進行域名解析命令的時候是可使用以下的三個命令的,其中host採用非交互式解析,nslookup能夠採用交互或非交互式解析,dig顯示詳細的解析流程。
(3.2.3)首先咱們使用host命令,咱們能夠解析出www.ayitula.com 的IP地址爲192.168.26.88,同時發現www主機的別名爲news
(3.2.4)接着咱們使用nslookup命令,能夠查詢出主機名對應的IP地址信息。也可使用交互式命令進行查詢,若是咱們須要使用交互式的方式修改DNS服務器的地址能夠按照圖2-21
# nslookup www.ayitula.com
(3.2.5)最後咱們也可使用dig命令進行域名查詢,我發使用dig命令查詢的信息基本和/var/named/chroot/var/named/目錄下的ayitula.com.zone的區域數據庫配置文件中的信息是一致的。
# dig www.ayitula.com
(3.3)反向解析
(3.3.1)要求:對www.ayitula.com 作反向解析,其對應的IP地址爲192.168.26.88。咱們首先到/var/named/chroot/etc/目錄下編輯named.conf配置文件,咱們添加zone區域的信息。
# cd /var/named/chroot/var/named/---進入/var/named/chroot/var/named/目錄
# vim ../../etc/named.conf---編輯/var/named/chroot/etc/named.conf配置文件
(3.3.2)咱們將named.loopback模板文件拷貝命名爲192.168.26.arpa,而後修改192.168.26.arpa配置文件信息的屬組爲named,接着編輯192.168.26.arpa配置文件(圖2-26),而後設置反向解析的配置文件指明192.168.26.88對應的域名地址爲「www.ayitula.com.」
(3.3.3)咱們在vms001系統中將主配置文件和區域配置文件進行驗證後發現文件都是完整的,咱們將DNS服務重啓一下後,此時咱們在vms002主機上進行測試發現由IP地址解析到正確的主機名www.ayitula.com 了。
# named-checkconf /var/named/chroot/etc/named.conf---驗證named.conf主配置文件是否配置正確
# named-checkzone 26.168.192.in-addr.arpa /var/named/chroot/var/named/192.168.26.arpa---驗證區域配置文件192.168.26.arpa是否配置正確
# nslookup 192.168.26.88---反向解析,由IP地址解析域名網絡
(四)DNS容災
(4.1)DNS單點故障:咱們若是隻有一臺DNS服務器,那麼當DNS服務器故障的時候,可能會形成業務的中斷。咱們常規的作法是設置兩臺DNS服務器,一臺主DNS和一臺輔助DNS,保證兩臺DNS的數據同步,以此實現DNS冗餘。咱們須要知道的是主配置文件不會同步,同步的是區域數據庫文件。
(4.2)首先咱們使用vms001主機做爲主DNS(master),使用vms002主機做爲輔助DNS(slave),咱們須要將系統中的防火牆和SELinux關閉,而後設置vms001主機的DNS指向本身192.168.26.101,同時設置vms002主機的DNS指向本身192.168.26.102。
# getenforce---獲取當前SELinux的狀態
# systemctl stop firewalld---將防火牆中止
# systemctl status firewalld---查看防火牆的狀態
(4.3)接着咱們在vms002主機上將bind和bind-chroot軟件安裝起來(圖4-4),並將vms001主機中的/var/named/chroot/etc/named.conf文件拷貝到vms002主機上,並將vms002主機的named.conf文件的屬組修改成named(圖4-5)。
# yum install bind bind-chroot -y---將bind和bind-chroot軟件安裝起來
# scp root@192.168.26.101:/var/named/chroot/etc/named.conf /var/named/chroot/etc/---將vms001主機中的/var/named/chroot/etc/named.conf文件拷貝到vms002主機上
# cd /var/named/chroot/etc/---進入到/var/named/chroot/etc/目錄中
# chgrp named named.conf---修改vms002主機的named.conf文件的屬組爲named
(4.4)接着咱們在vms002主機中進入到/var/named/chroot/etc/named.conf配置文件進行設置,保持從節點slave向master服務器要數據,而後保存到本地file位置(圖4-6)。配置完畢後將DNS服務重啓一下,此時咱們發如今/var/named/chroot/var/named/配置文件即可以看到已經產生了自動生成的配置文件了(圖4-7)。
(4.5)此時咱們在vms002主機上測試發現,vms002主機可使用使用本身做爲DNS服務器正確的解析出www.ayitula.com 的IP地址信息,同時vms002主機也能夠正常的進行反向解析的操做。
(4.6)接着咱們在vms001主機上對/var/named/chroot/var/named/目錄下的ayitula.com.zone配置文件進行修改(圖4-9)。此時因爲只是修改了區域數據庫文件,咱們不須要重啓DNS服務,咱們直接使用「# rndc reload」命令直接刷新區域數據庫文件便可。此時咱們發現vms001本地系統已經能夠正常的解析sports.ayitula.com域名的IP地址了(圖4-10)。
(4.7)接着咱們在vms002主機上將區域數據庫重載一下,並將DNS服務重啓,而後此時咱們發現已經能夠正常的解析sports.ayitula.com主機名爲192.168.26.99了。
# rndc reload---在vms002主機上重載區域數據庫文件
# systemctl restart named-chroot---將DNS服務從新啓動一下
# nslookup sports.ayitula.com---在vms002主機查詢sports.ayitula.com文件解析是否生效
(4.8)注意:咱們在輔助DNS服務器上查詢到當前系統vms002主機的部分文件,例如在/var/named/chroot/var/named/目錄下,會發現是加密的狀態沒法查看,此時咱們能夠在/var/named/chroot/etc/named.conf配置文件中添加信息表示對master傳輸過來的文件不加密以文本的方式顯示。而後將DNS服務重啓一下便可。
# systemctl restart named-chroot分佈式
(五)DNS智能解析
(5.1)在咱們訪問WEB的時候,發現有的網站打開的速度很是快,有的網站打開的很是慢,這是爲何呢?元嬰就是不少公司爲了提高用戶體驗,本身的網站使用了CDN內容加速服務,讓你直接在你的本地城市的服務器上拿數據並展現給你看。什麼是CDN咱們暫且理解爲本地緩存服務器就好,那麼你是怎麼準確知道你本地的緩存服務器的呢?由於不少CDN公司的DNS使用了智能解析服務,根據你的源IP判斷你屬於哪一個城市,而後再把本地的緩存服務器解析給你,你就會直接去找該服務器拿數據了。
(5.2)智能解析原理:在DNS中植入全世界的IP庫以及IP對應的地域,當用戶來請求解析時,DNS會根據其源IP來定位它屬於哪一個區域,而後去找這個區域的view視圖查詢對應的域名的區域數據庫文件作解析。從而使得不一樣地域的用戶解析不一樣。
(5.3)示例:如今咱們部署一臺DNS智能解析服務器,對ayitula.com域名作智能解析,上海的用戶解析IP爲1.1.1.1,北京的用戶解析IP爲2.2.2.2,其餘用戶解析爲3.3.3.3。咱們首先在vms001主機named.conf配置文件中進行編輯,咱們設置acl,其中北京域設置爲192.168.26.101,咱們設置acl,其中上海域設置爲1.2.2.2,而後再配置關於beijing、shanghai、other三處的視圖信息(圖4-13和圖4-14)。同時咱們在/var/named/chroot/var/named/目錄下定義相關的區域數據庫文件,並修改文件的屬組爲named。
# vim /var/named/chroot/etc/named.conf
# cd /var/named/chroot/var/named/
# cp ayitula.com.zone ayitula.com.zone.bj
# cp ayitula.com.zone ayitula.com.zone.sh
# cp ayitula.com.zone ayitula.com.zone.ot
# chgrp named ayitula.com.zone.*---修改定義的三個區域數據庫的文件的屬組爲named
(5.4)咱們在/var/named/chroot/var/named/目錄下的ayitula.com.zone.bj、ayitula.com.zone.sh、ayitula.com.zone.ot配置文件中設置好對應的IP地址信息。
# systemctl restart named-chroot---編輯完配置文件後咱們將DNS服務重啓一下
(5.5)此時咱們vms001主機的IP地址是192.168.26.101,且在named.conf配置文件中IP地址屬於acl bj域,因此會經過file映射到ayitula.com.zone.bj區域配置文件中,因此此時解析的IP地址爲1.1.1.1
# nslookup www.ayitula.com
(5.6)接着咱們在/var/named/chroot/etc/named.conf配置文件中,在acl sh中設置IP地址爲192.168.26.101,此時IP地址屬於acl sh域,因此會經過file映射到ayitula.com.zone.sh區域配置文件中,而後咱們將DNS服務重啓一下,此時咱們解析www.ayitula.com 的時候顯示的IP地址爲2.2.2.2
(5.7)最後咱們在/var/named/chroot/etc/named.conf配置文件中,設置本機IP地址不屬於任何的acl域了,因此會經過file映射到ayitula.com.zone.ot區域配置文件中。而後咱們將DNS服務重啓一下,咱們解析www.ayitula.com 發現IP地址爲3.3.3.3。這樣咱們便實現了根據源IP地址,斷定你屬於哪一個地域,而後讓本地服務器爲你解析,這樣你在本地拿數據就能夠了,不須要上公網。
# systemctl restart named-chroot
# nslookup www.ayitula.comide
—————— 本文至此結束,感謝閱讀 ——————oop