參考連接https://www.linuxprobe.comlinux
Bind提供域名解析服務 DNS Domin Name Server 域名解析服務 功能模式 1.正向解析,將域名解析爲IP地址 2.反向解析,將IP地址解析爲域名 工做模式: 1.主服務器,真正管理域名及IP地址對應關係 2.從服務器,同步 每一個國家向13個根服務器發送請求每一個省每一個區都有本身的從服務器 3.緩存服務器 轉發 從服務器:1.下降主服務器壓力; 2加快請求速度 TSIG加密技術 爲了下降用戶訪問網絡資源的門檻,DNS(Domain Name System,域名系統)技術應運而生。這是一項用於管理和解析域名與IP地址對應關 系的技術,簡單來講,就是可以接受用戶輸入的域名或IP地址,而後自動查找與之匹配(或者說具備映射關係)的IP地址或域名,即將域 名解析爲IP地址(正向解析),或將IP地址解析爲域名(反向解析)。這樣一來,咱們只須要在瀏覽器中輸入域名就能打開想要訪問的網 站了。DNS域名解析技術的正向解析也是咱們最常使用的一種工做模式。 主服務器:在特定區域內具備惟一性,負責維護該區域內的域名與IP地址之間的對應關係。 從服務器:從主服務器中得到域名與IP地址的對應關係並進行維護,以防主服務器宕機等狀況。 緩存服務器:經過向其餘域名解析服務器查詢得到域名與IP地址的對應關係,並將常常查詢的域名信息保存到服務器本地,以此來提升重 複查詢時的效率。 簡單來講,主服務器是用於管理域名和IP地址對應關係的真正服務器,從服務器幫助主服務器「打下手」,分散部署在各個國家、省市或 地區,以便讓用戶就近查詢域名,從而減輕主服務器的負載壓力。緩存服務器不太經常使用,通常部署在企業內網的網關位置,用於加速用戶 的域名查詢請求。 所謂遞歸查詢,是指DNS服務器在收到用戶發起的請求時,必須向用戶返回一個準確的查詢結果。若是DNS服務器本地沒有存儲與之對應的 信息,則該服務器須要詢問其餘服務器,並將返回的查詢結果提交給用戶。而迭代查詢則是指,DNS服務器在收到用戶發起的請求時,並不 直接回複查詢結果,而是告訴另外一臺DNS服務器的地址,用戶再向這臺DNS服務器提交請求,這樣依次反覆,直到返回查詢結果。 13.2 安裝Bind服務程序 BIND(Berkeley Internet Name Domain,伯克利因特網名稱域)服務是全球範圍內使用最普遍、最安全可靠且高效的域名解析服務程序。 DNS域名解析服務做爲互聯網基礎設施服務,其責任之重可想而知,所以建議你們在生產環境中安裝部署bind服務程序時加上chroot(俗稱 牢籠機制)擴展包,以便有效地限制bind服務程序僅能對自身的配置文件進行操做,以確保整個服務器的安全。 yum -y install bind-chroot ind服務程序的配置並不簡單,由於要想爲用戶提供健全的DNS查詢服務,要在本地保存相關的域名數據庫,而若是把全部域名和IP地址的 對應關係都寫入到某個配置文件中,估計要有上千萬條的參數,這樣既不利於程序的執行效率,也不方便往後的修改和維護。所以在bind 服務程序中有下面這三個比較關鍵的文件。 主配置文件(/etc/named.conf):只有58行,並且在去除註釋信息和空行以後,實際有效的參數僅有30行左右,這些參數用來定義bind服 務程序的運行。 區域配置文件(/etc/named.rfc1912.zones):用來保存域名和IP地址對應關係的所在位置。相似於圖書的目錄,對應着每一個域和相應IP 地址所在的具體位置,當須要查看或修改時,可根據這個位置找到相關文件。 數據配置文件目錄(/var/named):該目錄用來保存域名和IP地址真實對應關係的數據配置文件。 Linux系統中,bind服務程序的名稱爲named。首先須要在/etc目錄中找到該服務程序的主配置文件,而後把第11行和第17行的地址均修改 爲any,分別表示服務器上的全部IP地址都可提供DNS域名解析服務,以及容許全部人對本服務器發送DNS查詢請求。這兩個地方必定要修改 準確。 vim /etc/named.conf listen-on port 53 {any; }; allow-query {any; }; 如前所述,bind服務程序的區域配置文件(/etc/named.rfc1912.zones)用來保存域名和IP地址對應關係的所在位置。在這個文件中,定 義了域名與IP地址解析規則保存的文件位置以及服務類型等內容,而沒有包含具體的域名、IP地址對應關係等信息。服務類型有三種,分 別爲hint(根區域)、master(主區域)、slave(輔助區域),其中經常使用的master和slave指的就是主服務器和從服務器。將域名解析爲 IP地址的正向解析參數和將IP地址解析爲域名的反向解析參數分別如圖13-3和圖13-4所示。 下面的實驗中會分別修改bind服務程序的主配置文件、區域配置文件與數據配置文件。若是在實驗中遇到了bind服務程序啓動失敗的狀況 ,而您認爲這是因爲參數寫錯而致使的,則能夠執行named-checkconf命令和named-checkzone命令,分別檢查主配置文件與數據配置文件 中語法或參數的錯誤。 #named-checkconf #named-checkzone 13.2.1 正向解析實驗 在DNS域名解析服務中,正向解析是指根據域名(主機名)查找到對應的IP地址。也就是說,當用戶輸入了一個域名後,bind服務程序會自 動進行查找,並將匹配到的IP地址返給用戶。這也是最經常使用的DNS工做模式。 第1步:編輯區域配置文件。該文件中默認已經有了一些可有可無的解析參數,旨在讓用戶有一個參考。咱們能夠將下面的參數添加到區域 配置文件的最下面,固然,也能夠將該文件中的原有信息所有清空,而只保留本身的域名解析信息: 第2步:編輯數據配置文件。咱們能夠從/var/named目錄中複製一份正向解析的模板文件(named.localhost),而後把域名和IP地址的對 應數據填寫數據配置文件中並保存。在複製時記得加上-a參數,這能夠保留原始文件的全部者、所屬組、權限屬性等信息,以便讓bind服 務程序順利讀取文件內容: [root@linuxprobe ~]# cd /var/named/ [root@linuxprobe named]# ls -al named.localhost -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost [root@linuxprobe named]# cp -a named.localhost linuxprobe.com.zone 編輯數據配置文件。在保存並退出後文件後記得重啓named服務程序,讓新的解析數據生效。考慮到正向解析文件中的參數較多,並且相對 都比較重要,劉遄老師在每一個參數後面都做了簡要的說明。 [root@linuxprobe named]# vim linuxprobe.com.zone [root@linuxprobe named]# systemctl restart named $TTL 1D #生存週期爲1天 @ IN SOA linuxprobe.com. root.linuxprobe.com. ( #受權信息開始: #DNS區域的地址 #域名管理員的郵箱(不要用@符號) 0;serial #更新序列號 1D;refresh #更新時間 1H;retry #重試延時 1W;expire #失效時間 3H;)minimum #無效解析記錄的緩存時間 NS ns.linuxprobe.com. #域名服務器記錄 ns IN A 192.168.10.10 #地址記錄(ns.linuxprobe.com.) IN MX 10 mail.linuxprobe.com. #郵箱交換記錄 mail IN A 192.168.10.10 #地址記錄(mail.linuxprobe.com.) www IN A 192.168.10.10 #地址記錄(www.linuxprobe.com.) bbs IN A 192.168.10.20 #地址記錄(bbs.linuxprobe.com.) 第3步:檢驗解析結果。爲了檢驗解析結果,必定要先把Linux系統網卡中的DNS地址參數修改爲本機IP地址,這樣就可使用由本機提供的 DNS查詢服務了。nslookup命令用於檢測可否從DNS服務器中查詢到域名與IP地址的解析記錄,進而更準確地檢驗DNS服務器是否已經可以爲 用戶提供服務。 [root@linuxprobe ~]# systemctl restart network [root@linuxprobe ~]# nslookup > www.linuxprobe.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: www.linuxprobe.com Address: 192.168.10.10 > bbs.linuxprobe.com Server: 127.0.0.1 Address: 127.0.0.1#53 Name: bbs.linuxprobe.com Address: 192.168.10.20 反向解析實驗 在DNS域名解析服務中,反向解析的做用是將用戶提交的IP地址解析爲對應的域名信息,它通常用於對某個IP地址上綁定的全部域名進行整 體屏蔽,屏蔽由某些域名發送的垃圾郵件。它也能夠針對某個IP地址進行反向解析,大體判斷出有多少個網站運行在上面。當購買虛擬主 機時,可使用這一功能驗證虛擬主機提供商是否有嚴重的超售問題。 第1步:編輯區域配置文件。在編輯該文件時,除了不要寫錯格式以外,還須要記住此處定義的數據配置文件名稱,由於一下子還須要 在/var/named目錄中創建與其對應的同名文件。反向解析是把IP地址解析成域名格式,所以在定義zone(區域)時應該要把IP地址反寫, 好比原來是192.168.10.0,反寫後應該就是10.168.192,並且只需寫出IP地址的網絡位便可。把下列參數添加至正向解析參數的後面。 [root@linuxprobe ~]# vim /etc/named.rfc1912.zones zone "linuxprobe.com" IN { type master; file "linuxprobe.com.zone"; allow-update {none;}; }; zone "10.168.192.in-addr.arpa" IN { type master; file "192.168.10.arpa"; }; 第2步:編輯數據配置文件。首先從/var/named目錄中複製一份反向解析的模板文件(named.loopback),而後把下面的參數填寫到文件中 。其中,IP地址僅須要寫主機位,如圖13-5所示。 [root@linuxprobe named]# cp -a named.loopback 192.168.10.arpa [root@linuxprobe named]# vim 192.168.10.arpa [root@linuxprobe named]# systemctl restart named $TTL 1D @ IN SOA linuxprobe.com. root.linuxprobe.com. ( 0;serial 1D;refresh 1H;retry 1W;expire 3H);minimum NS ns.linuxprobe.com. ns A 192.168.10.10 10 PTR ns.linuxprobe.com. #PTR爲指針記錄,僅用於反向解析中。 10 PTR mail.linuxprobe.com. 10 PTR www.linuxprobe.com. 20 PTR bbs.linuxprobe.com. 第3步:檢驗解析結果。在前面的正向解析實驗中,已經把系統網卡中的DNS地址參數修改爲了本機IP地址,所以能夠直接使用nslookup命 令來檢驗解析結果,僅需輸入IP地址便可查詢到對應的域名信息。 [root@linuxprobe ~]# nslookup > 192.168.10.10 Server: 127.0.0.1 Address: 127.0.0.1#53 10.10.168.192.in-addr.arpa name = ns.linuxprobe.com. 10.10.168.192.in-addr.arpa name = www.linuxprobe.com. 10.10.168.192.in-addr.arpa name = mail.linuxprobe.com. > 192.168.10.20 Server: 127.0.0.1 Address: 127.0.0.1#53 20.10.168.192.in-addr.arpa name = bbs.linuxprobe.com. 13.3 部署從服務器 做爲重要的互聯網基礎設施服務,保證DNS域名解析服務的正常運轉相當重要,只有這樣才能提供穩定、快速且不間斷的域名查詢服務。在 DNS域名解析服務中,從服務器能夠從主服務器上獲取指定的區域數據文件,從而起到備份解析記錄與負載均衡的做用,所以經過部署從服 務器能夠減輕主服務器的負載壓力,還能夠提高用戶的查詢效率。 在本實驗中,主服務器與從服務器分別使用的操做系統和IP地址如表13-2所示。 表13-2 主服務器與從服務器分別使用的操做系統與IP地址信息 主機名稱 操做系統 IP地址 主服務器 RHEL 7 192.168.10.10 從服務器 RHEL 7 192.168.10.20 第1步:在主服務器的區域配置文件中容許該從服務器的更新請求,即修改allow-update {容許更新區域信息的主機地址;};參數,而後重 啓主服務器的DNS服務程序。 vim /etc/named.rfc1912.zones zone "linuxprobe.com" IN { type master; file "linuxprobe.com.zone"; allow-update { 192.168.10.20; }; }; zone "10.168.192.in-addr.arpa" IN { type master; file "192.168.10.arpa"; allow-update { 192.168.10.20; }; }; [root@linuxprobe ~]# systemctl restart named 第2步:在從服務器中填寫主服務器的IP地址與要抓取的區域信息,而後重啓服務。注意此時的服務類型應該是slave(從),而再也不是 master(主)。masters參數後面應該爲主服務器的IP地址,並且file參數後面定義的是同步數據配置文件後要保存到的位置,稍後能夠在 該目錄內看到同步的文件。 [root@linuxprobe ~]# vim /etc/named.rfc1912.zones zone "linuxprobe.com" IN { type slave; masters { 192.168.10.10; }; file "slaves/linuxprobe.com.zone"; }; zone "10.168.192.in-addr.arpa" IN { type slave; masters { 192.168.10.10; }; file "slaves/192.168.10.arpa"; }; [root@linuxprobe ~]# systemctl restart named 第3步:檢驗解析結果。當從服務器的DNS服務程序在重啓後,通常就已經自動從主服務器上同步了數據配置文件,並且該文件默認會放置 在區域配置文件中所定義的目錄位置中。隨後修改從服務器的網絡參數,把DNS地址參數修改爲192.168.10.20,這樣便可使用從服務器自 身提供的DNS域名解析服務。最後就可使用nslookup命令順利看到解析結果了。 [root@linuxprobe ~]# cd /var/named/slaves [root@linuxprobe slaves]# ls 192.168.10.arpa linuxprobe.com.zone [root@linuxprobe slaves]# nslookup > www.linuxprobe.com Server: 192.168.10.20 Address: 192.168.10.20#53 Name: www.linuxprobe.com Address: 192.168.10.10 > 192.168.10.10 Server: 192.168.10.20 Address: 192.168.10.20#53 10.10.168.192.in-addr.arpa name = www.linuxprobe.com. 10.10.168.192.in-addr.arpa name = ns.linuxprobe.com. 10.10.168.192.in-addr.arpa name = mail.linuxprobe.com. 安全的加密傳輸 前文反覆說起,域名解析服務是互聯網基礎設施中的重要一環,幾乎全部的網絡應用都依賴於DNS才能正常運行 若是DNS服務發生故障,即使Web網站或者電子郵件系統服務等都正常運行,用戶也沒法找到並使用它們了 互聯網中的絕大多數DNS服務器(超過95%)都是基於BIND域名解析服務搭建的,而bind服務程序爲了提供安全的解析服務,已經對TSIG (RFC 2845)加密機制提供了支持。TSIG主要是利用了密碼編碼的方式來保護區域信息的傳輸(Zone Transfer),即TSIG加密機制保證了 DNS服務器之間傳輸域名區域信息的安全性。 接下來的實驗依然使用了表13-2中的兩臺服務器。 書接上回。前面在從服務器上配妥bind服務程序並重啓後,便可看到從主服務器中獲取到的數據配置文件。 主機名稱 操做系統 IP地址 主服務器 RHEL 7 192.168.10.10 從服務器 RHEL 7 192.168.10.20 [root@linuxprobe ~]# ls -al /var/named/slaves/ total 12 drwxrwx---. 2 named named 54 Jun 7 16:02 . drwxr-x---. 6 root named 4096 Jun 7 15:58 .. -rw-r--r--. 1 named named 432 Jun 7 16:02 192.168.10.arpa -rw-r--r--. 1 named named 439 Jun 7 16:02 linuxprobe.com.zone [root@linuxprobe ~]# rm -rf /var/named/slaves/* 第1步:在主服務器中生成密鑰。dnssec-keygen命令用於生成安全的DNS服務密鑰,其格式爲「dnssec-keygen [參數]」,經常使用的參數以及 做用如表13-3所示。 表13-3 dnssec-keygen命令的經常使用參數 參數 做用 -a 指定加密算法,包括RSAMD5(RSA)、RSASHA一、DSA、NSEC3RSASHA一、NSEC3DSA等 -b 密鑰長度(HMAC-MD5的密鑰長度在1~512位之間) -n 密鑰的類型(HOST表示與主機相關) 使用下述命令生成一個主機名稱爲master-slave的128位HMAC-MD5算法的密鑰文件。在執行該命令後默認會在當前目錄中生成公鑰和私鑰文 件,咱們須要把私鑰文件中Key參數後面的值記錄下來,一下子要將其寫入傳輸配置文件中。 [root@linuxprobe ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave Kmaster-slave.+157+46845 [root@linuxprobe ~]# ls -al Kmaster-slave.+157+46845.* -rw-------. 1 root root 56 Jun 7 16:06 Kmaster-slave.+157+46845.key -rw-------. 1 root root 165 Jun 7 16:06 Kmaster-slave.+157+46845.private [root@linuxprobe ~]# cat Kmaster-slave.+157+46845.private Private-key-format: v1.3 Algorithm: 157 (HMAC_MD5) Key: 1XEEL3tG5DNLOw+1WHfE3Q== Bits: AAA= Created: 20170607080621 Publish: 20170607080621 Activate: 20170607080621 第2步:在主服務器中建立密鑰驗證文件。進入bind服務程序用於保存配置文件的目錄,把剛剛生成的密鑰名稱、加密算法和私鑰加密字符 串按照下面格式寫入到tansfer.key傳輸配置文件中。爲了安全起見,咱們須要將文件的所屬組修改爲named,並將文件權限設置得要小一 點,而後把該文件作一個硬連接到/etc目錄中。 [root@linuxprobe ~]# cd /var/named/chroot/etc/ [root@linuxprobe etc]# vim transfer.key key "master-slave" { algorithm hmac-md5; secret "1XEEL3tG5DNLOw+1WHfE3Q=="; }; [root@linuxprobe etc]# chown root:named transfer.key [root@linuxprobe etc]# chmod 640 transfer.key [root@linuxprobe etc]# ln transfer.key /etc/transfer.key 第3步:開啓並加載Bind服務的密鑰驗證功能。首先須要在主服務器的主配置文件中加載密鑰驗證文件,而後進行設置,使得只容許帶有 master-slave密鑰認證的DNS服務器同步數據配置文件: [root@linuxprobe ~]# vim /etc/named.conf 1 // 2 // named.conf 3 // 4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS 5 // server as a caching only nameserver (as a localhost DNS resolver only). 6 // 7 // See /usr/share/doc/bind*/sample/ for example named configuration files. 8 // 9 include "/etc/transfer.key"; 10 options { 11 listen-on port 53 { any; }; 12 listen-on-v6 port 53 { ::1; }; 13 directory "/var/named"; 14 dump-file "/var/named/data/cache_dump.db"; 15 statistics-file "/var/named/data/named_stats.txt"; 16 memstatistics-file "/var/named/data/named_mem_stats.txt"; 17 allow-query { any; }; 18 allow-transfer { key master-slave; }; ………………省略部分輸出信息……………… [root@linuxprobe ~]# systemctl restart named 至此,DNS主服務器的TSIG密鑰加密傳輸功能就已經配置完成。此時清空DNS從服務器同步目錄中全部的數據配置文件,而後再次重啓bind 服務程序,這時就已經不能像剛纔那樣自動獲取到數據配置文件了。 [root@linuxprobe ~]# rm -rf /var/named/slaves/* [root@linuxprobe ~]# systemctl restart named [root@linuxprobe ~]# ls /var/named/slaves/ 第4步:配置從服務器,使其支持密鑰驗證。配置DNS從服務器和主服務器的方法大體相同,都須要在bind服務程序的配置文件目錄中建立 密鑰認證文件,並設置相應的權限,而後把該文件作一個硬連接到/etc目錄中。 [root@linuxprobe ~]# cd /var/named/chroot/etc [root@linuxprobe etc]# vim transfer.key key "master-slave" { algorithm hmac-md5; secret "1XEEL3tG5DNLOw+1WHfE3Q=="; }; [root@linuxprobe etc]# chown root:named transfer.key [root@linuxprobe etc]# chmod 640 transfer.key [root@linuxprobe etc]# ln transfer.key /etc/transfer.key 第5步:開啓並加載從服務器的密鑰驗證功能。這一步的操做步驟也一樣是在主配置文件中加載密鑰認證文件,而後按照指定格式寫上主服 務器的IP地址和密鑰名稱。注意,密鑰名稱等參數位置不要太靠前,大約在第43行比較合適,不然bind服務程序會由於沒有加載完預設參 數而報錯: [root@linuxprobe etc]# vim /etc/named.conf 1 // 2 // named.conf 3 // 4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS 5 // server as a caching only nameserver (as a localhost DNS resolver only). 6 // 7 // See /usr/share/doc/bind*/sample/ for example named configuration files. 8 // 9 include "/etc/transfer.key"; 10 options { 11 listen-on port 53 { 127.0.0.1; }; 12 listen-on-v6 port 53 { ::1; }; 13 directory "/var/named"; 14 dump-file "/var/named/data/cache_dump.db"; 15 statistics-file "/var/named/data/named_stats.txt"; 16 memstatistics-file "/var/named/data/named_mem_stats.txt"; 17 allow-query { localhost; }; 18 19 /* 20 - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. 21 - If you are building a RECURSIVE (caching) DNS server, you need to enable 22 recursion. 23 - If your recursive DNS server has a public IP address, you MUST enable access 24 control to limit queries to your legitimate users. Failing to do so will 25 cause your server to become part of large scale DNS amplification 26 attacks. Implementing BCP38 within your network would greatly 27 reduce such attack surface 28 */ 29 recursion yes; 30 31 dnssec-enable yes; 32 dnssec-validation yes; 33 dnssec-lookaside auto; 34 35 /* Path to ISC DLV key */ 36 bindkeys-file "/etc/named.iscdlv.key"; 37 38 managed-keys-directory "/var/named/dynamic"; 39 40 pid-file "/run/named/named.pid"; 41 session-keyfile "/run/named/session.key"; 42 }; 43 server 192.168.10.10 44 { 45 keys { master-slave; }; 46 }; 47 logging { 48 channel default_debug { 49 file "data/named.run"; 50 severity dynamic; 51 }; 52 }; 53 54 zone "." IN { 55 type hint; 56 file "named.ca"; 57 }; 58 59 include "/etc/named.rfc1912.zones"; 60 include "/etc/named.root.key"; 61 第6步:DNS從服務器同步域名區域數據。如今,兩臺服務器的bind服務程序都已經配置穩當,並匹配到了相同的密鑰認證文件。接下來在 從服務器上重啓bind服務程序,能夠發現又能順利地同步到數據配置文件了。 [root@linuxprobe ~]# systemctl restart named [root@linuxprobe ~]# ls /var/named/slaves/ 192.168.10.arpa linuxprobe.com.zone 13.5 部署緩存服務器 DNS緩存服務器(Caching DNS Server)是一種不負責域名數據維護的DNS服務器。簡單來講,緩存服務器就是把用戶常用到的域名與 IP地址的解析記錄保存在主機本地,從而提高下次解析的效率。DNS緩存服務器通常用於常常訪問某些固定站點並且對這些網站的訪問速度 有較高要求的企業內網中,但實際的應用並不普遍。並且,緩存服務器是否能夠成功解析還與指定的上級DNS服務器的容許策略有關,所以 當前僅需瞭解便可。 第1步:配置系統的雙網卡參數。前面講到,緩存服務器通常用於企業內網,旨在下降內網用戶查詢DNS的時間消耗。所以,爲了更加貼近 真實的網絡環境,實現外網查詢功能,咱們須要在緩存服務器中再添加一塊網卡,並按照表13-4所示的信息來配置出兩臺Linux虛擬機系統 。並且,還須要在虛擬機軟件中將新添加的網卡設置爲「橋接模式」,而後設置成與物理設備相同的網絡參數(此處須要你們按照物理設 備真實的網絡參數來配置,圖13-6所示爲以DHCP方式獲取IP地址與網關等信息,重啓網絡服務後的效果如圖13-7所示)。 表13-4 用於配置Linux虛擬機系統所需的參數信息 主機名稱 操做系統 IP地址 緩存服務器 RHEL 7 網卡(外網):根據物理設備的網絡參數進行配置(經過DHCP或手動方式指定IP地址與網關等信息) 網卡(內網):192.168.10.10 客戶端 RHEL 7 192.168.10.20 第2步:在bind服務程序的主配置文件中添加緩存轉發參數。在大約第17行處添加一行參數「forwarders { 上級DNS服務器地址; };」,上 級DNS服務器地址指的是獲取數據配置文件的服務器。考慮到查詢速度、穩定性、安全性等因素,使用223.5.5.5 [root@linuxprobe ~]# vim /etc/named.conf 1 // 2 // named.conf 3 // 4 // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS 5 // server as a caching only nameserver (as a localhost DNS resolver only). 6 // 7 // See /usr/share/doc/bind*/sample/ for example named configuration files. 8 // 9 options { 10 listen-on port 53 { any; }; 11 listen-on-v6 port 53 { ::1; }; 12 directory "/var/named"; 13 dump-file "/var/named/data/cache_dump.db"; 14 statistics-file "/var/named/data/named_stats.txt"; 15 memstatistics-file "/var/named/data/named_mem_stats.txt"; 16 allow-query { any; }; 17 forwarders { 223.5.5.5; }; ………………省略部分輸出信息……………… [root@linuxprobe ~]# systemctl restart named 重啓DNS服務,驗證成果。把客戶端主機的DNS服務器地址參數修改成DNS緩存服務器的IP地址192.168.10.10,如圖13-8所示。這樣便可讓 客戶端使用本地DNS緩存服務器提供的域名查詢解析服務。 在將客戶端主機的網絡參數設置穩當後重啓網絡服務,便可使用nslookup命令來驗證明驗結果(若是解析失敗,請讀者留意是不是上級DNS 服務器選擇的問題)。其中,Server參數爲域名解析記錄提供的服務器地址,所以可見是由本地DNS緩存服務器提供的解析內容。 [root@linuxprobe ~]# nslookup > www.linuxprobe.com Server: 192.168.10.10 Address: 192.168.10.10#53 Non-authoritative answer: Name: www.linuxprobe.com Address: 113.207.76.73 Name: www.linuxprobe.com Address: 116.211.121.154 > 8.8.8.8 Server: 192.168.10.10 Address: 192.168.10.10#53 Non-authoritative answer: 8.8.8.8.in-addr.arpa name = google-public-dns-a.google.com. Authoritative answers can be found from: in-addr.arpa nameserver = f.in-addr-servers.arpa. in-addr.arpa nameserver = b.in-addr-servers.arpa. 表13-5 不一樣主機的操做系統與IP地址狀況 主機名稱 操做系統 IP地址 DNS服務器 RHEL 7 北京網絡:122.71.115.10 美國網絡:106.185.25.10 北京用戶 Windows 7 122.71.115.1 海外用戶 Windows 7 106.185.25.1 第1步:修改bind服務程序的主配置文件,把第11行的監聽端口與第17行的容許查詢主機修改成any。因爲配置的DNS分離解析功能與DNS根 服務器配置參數有衝突,因此須要把第51~54行的根域信息刪除。 [root@linuxprobe ~]# vim /etc/named.conf ………………省略部分輸出信息……………… 44 logging { 45 channel default_debug { 46 file "data/named.run"; 47 severity dynamic; 48 }; 49 }; 50 51 zone "." IN { 52 type hint; 53 file "named.ca"; 54 }; 55 56 include "/etc/named.rfc1912.zones"; 57 include "/etc/named.root.key"; 58 ………………省略部分輸出信息……………… 第2步:編輯區域配置文件。把區域配置文件中原有的數據清空,而後按照如下格式寫入參數。首先使用acl參數分別定義兩個變量名稱 (china與american),當下面須要匹配IP地址時只需寫入變量名稱便可,這樣不只容易閱讀識別,並且也利於修改維護。這裏的難點是理 解view參數的做用。它的做用是經過判斷用戶的IP地址是中國的仍是美國的,而後去分別加載不一樣的數據配置文件 (linuxprobe.com.china或linuxprobe.com.american)。這樣,當把相應的IP地址分別寫入到數據配置文件後,便可實現DNS的分離解析 功能。這樣一來,當中國的用戶訪問linuxprobe.com域名時,便會按照linuxprobe.com.china數據配置文件內的IP地址找到對應的服務器 。 [root@linuxprobe ~]# vim /etc/named.rfc1912.zones 1 acl "china" { 122.71.115.0/24; }; 2 acl "american" { 106.185.25.0/24;}; 3 view "china"{ 4 match-clients { "china"; }; 5 zone "linuxprobe.com" { 6 type master; 7 file "linuxprobe.com.china"; 8 }; 9 }; 10 view "american" { 11 match-clients { "american"; }; 12 zone "linuxprobe.com" { 13 type master; 14 file "linuxprobe.com.american"; 15 }; 16 }; 第3步:創建數據配置文件。分別經過模板文件建立出兩份不一樣名稱的區域數據文件,其名稱應與上面區域配置文件中的參數相對應。 [root@linuxprobe ~]# cd /var/named [root@linuxprobe named]# cp -a named.localhost linuxprobe.com.china [root@linuxprobe named]# cp -a named.localhost linuxprobe.com.american [root@linuxprobe named]# vim linuxprobe.com.china $TTL 1D #生存週期爲1天 @ IN SOA linuxprobe.com. root.linuxprobe.com. ( #受權信息開始: #DNS區域的地址 #域名管理員的郵箱(不要用@符號) 0;serial #更新序列號 1D;refresh #更新時間 1H;retry #重試延時 1W;expire #失效時間 3H;)minimum #無效解析記錄的緩存時間 NS ns.linuxprobe.com. #域名服務器記錄 ns IN A 122.71.115.10 #地址記錄(ns.linuxprobe.com.) www IN A 122.71.115.15 #地址記錄(www.linuxprobe.com.) [root@linuxprobe named]# vim linuxprobe.com.american $TTL 1D #生存週期爲1天 @ IN SOA linuxprobe.com. root.linuxprobe.com. ( #受權信息開始: #DNS區域的地址 #域名管理員的郵箱(不要用@符號) 0;serial #更新序列號 1D;refresh #更新時間 1H;retry #重試延時 1W;expire #失效時間 3H;)minimum #無效解析記錄的緩存時間 NS ns.linuxprobe.com. #域名服務器記錄 ns IN A 106.185.25.10 #地址記錄(ns.linuxprobe.com.) www IN A 106.185.25.15 #地址記錄(www.linuxprobe.com.) 第4步:從新啓動named服務程序,驗證結果。將客戶端主機(Windows系統或Linux系統都可)的IP地址分別設置爲122.71.115.1與 106.185.25.1,將DNS地址分別設置爲服務器主機的兩個IP地址。這樣,當嘗試使用nslookup命令解析域名時就能清晰地看到解析結果,分 別如圖13-10與圖13-11所示。 1.DNS技術提供提供三種類型的服務器:DNS主服務器,DNS從服務器,DNS緩存服務器 2.DNS服務器之間傳區域數據文件,使用迭代。用戶與DNS服務器之間用遞歸 3.chroot爲牢籠機制,有效限制Bind服務程序僅對自身的配置文件進行操做,以保證整個服務器的安全 4.DNS正向解析是將域名解析爲IP,反向解析是將IP轉爲域名, 5.是否能夠限制DNS域名解析服務的主機,經過主配置文件的allow-query參數 6.部署DNS從服務器的做用是減輕主服務器的負載壓力,還能夠提高用戶的查詢效率 7.當用戶與DNS服務器之間傳輸數據,TSGI加密機制保障的是DNS服務器與DNS服務器之間迭代查詢的安全 8.部署DNS緩存服務器的做用是將用戶常常用到的域名與IP地址解析記錄保存在本機本地,從而提高下次解析的效率。 通常用於常常訪問某些固定的站點並且這些網站的訪問速度有較高要求的企業內網中,但實際的應用並不普遍 9.DNS分離解析技術的做用可讓位於不一樣地理位置的人訪問相同的網址時,而從不一樣的服務器獲取相同的數據,以提高訪問效率