天天看點

安裝和控制DNS伺服器

安裝和控制DNS伺服器

BIND(Berkeley Internet Name Domain,伯克利Internet 域名服務 )是一款開放源碼的DNS伺服器軟體,Bind由美國加州大學Berkeley分校開發和維護的,但不是唯一能夠提供域名服務的DNS服務程式,但它卻是應用最為廣泛的,BIND可以運作在大多數Linux/UNIX主機中。其官方站點位于https://www.isc.org/。

1、安裝BIND軟體

在CentOS7.x系統中,系統CD光牒自帶了BIND服務的多個安裝檔案,各軟體包的主要作用如下。

  • bind:提供了域名服務的主要程式及相關檔案。
  • bind-utils:提供了對DNS伺服器的測試工具程式,如nslookup等。
  • bind-1ibs:提供了bind、bind-utils需要使用的庫函數。
  • bind-chroot:可選軟體包,為BIND服務提供一個僞裝的根目錄(将/var/named/chroot/檔案夾作為BIND的根目錄),以提高安全性。也稱為jail(監牢)機制

預設已安裝bind-utils和bind-libs,是以隻需要安裝bind即可。

[root@localhost ~]# rpm -q bind-utils bind-libs

bind-utils-9.9.4-61.el7.x86_64

bind-libs-9.9.4-61.el7.x86_64

[root@localhost ~]# yum -y install bind

查詢是否已安裝與BIND相關的軟體包

[root@localhost ~]# rpm -q bind bind-utils bind-libs

bind-9.9.4-61.el7.x86_64

bind-utils-9.9.4-61.el7.x86_64

bind-libs-9.9.4-61.el7.x86_64

2、BIND服務控制

BIND軟體包安裝完畢以後,會自動增加一個名為named的系統服務,通過systemctl工具都可以控制DNS域名服務的運作。例如,執行以下操作可以查詢named服務的運作狀态。

[root@localhost ~]# systemctl status named

● named.service - Berkeley Internet Name Domain (DNS)

   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)

   Active: inactive (dead)

3、BIND服務的配置檔案

使用BIND軟體建構域名服務時,主要涉及兩種類型的配置檔案:主配置檔案和區域資料檔案。其中,主配置檔案用于設定named服務的全局選項、注冊區域及通路控制等各種運作參數;區資料檔案用于存放某個DNS區域的位址解析記錄(正向或反向記錄)。

①. 主配置檔案

主配置檔案named.conf通常位于/etc/目錄下,在named.conf檔案中,主要包括全局配置、區域配置兩個部分,每一條配置記錄的行尾以分号“;”表示結束,以“#”号或者“//”開始的部分表示注釋文字(大段注釋可以使用“/* …… */”的格式)。

1). 全局配置部分

全局配置參數包括在形如“options { };”的大括号中,如可以設定監聽的位址和端口、區資料檔案存放的目錄、允許哪些客戶機查詢等。

[root@localhost ~]# cd /etc/

[root@localhost etc]# vim named.conf

……                                                                                                               //省略部分參數

options {

         listen-on port 53 { 192.168.200.111; };                                //監聽位址和端口

         directory "/var/named";                                 //區域資料檔案的預設存放位置

         allow-query { 192.168.100.0/24; 192.168.200.0/24;  };      //允許使用本DNS服務的網段

};

……                                                                                                               //省略部分參數

上述配置内容中,除了directory項通常會保留以外,其他的配置項都可以省略。若不指定listen-on配置項時,named預設在所有接口的UDP 53端口監聽服務,不指定allow-query配置項時,預設會響應所有客戶機的查詢請求。

2). 區域配置部分

區域配置參數使用“zone …… {  };”的配置格式,一台DNS伺服器可以為多個區域提供解析,是以在named.conf檔案中也可以有很多個zone配置段。區域類型按照解析方向可分為正向區域、反向區域。

[root@localhost etc]# vim named.conf

……                                                                                             //省略部分參數

zone "crushlinux.com" IN {                                                  //正向"crushlinux.com"區域

         type master;                                                                    //類型為主區域

         file "crushlinux.zheng";                                      //區域資料檔案為crushlinux. zheng

         allow-transfer { 192.168.200.112; };                     //允許下載下傳的從伺服器位址

};

zone "200.168.192.in-addr.arpa" IN {                              //反向"192.168.200.0/24"區域

         type master;

         file "crushlinux.fan";

};

……                                                                                             //省略部分參數

在上述配置内容中,有幾個地方需要注意。

■ 每個zone區域都是可選的(包括根域、回環域、反向域),具體根據實際需要而定,zone配置部分的“IN”關鍵字也可以省略。

■ 反向區域的名稱由倒序的網絡位址和“in-addr.arpa”組合而成。例如,對于192.168.200.0/24網段,其反向區域名稱表示為“200.168.192.in-addr.arpa”。

■ file配置項用于指定實際的區域資料檔案,檔案名稱由管理者自行設定。

■ 區域配置中的部分參數(如allow-transfer)也可以放在全局配置裡。

修改完主配置檔案以後,可以執行named-checkconf指令對named.conf檔案進行文法檢查。如果檔案中沒有文法錯誤,該指令将不給出任何提示,反之,則會給出相應的提示資訊,隻要根據出錯提示修正檔案中的錯誤即可。帶“-z”選項的named-checkconf指令還可以嘗試加載主配置檔案中對應的區域資料庫檔案,并檢查該檔案是否存在問題。例如,當出現“…file not found”的錯誤時,表示找不到對應的檔案。

[root@localhost etc]# named-checkconf -z /etc/named.conf

zone crushlinux.com/IN: loading from master file crushlinux.zheng failed: file not found

zone crushlinux.com/IN: not loaded due to errors.

_default/crushlinux.com/IN: file not found

……                                                                                             //省略部分參數

關于named.conf檔案中各種配置項的詳細說明,可以執行"man named.conf,,檢視手冊頁,也可參考配置樣本檔案/usr/share/doc/bind-9.8.2/sample/etc/named.conf。

②. 區域資料配置檔案

區域資料配置檔案通常位于/var/named/目錄下,每個區域資料檔案對應一個DNS解析區域,檔案名及内容由該域的管理者自行設定。

根域“.”的區域資料檔案比較特殊。Internet中所有的DNS伺服器都使用同一份根區域資料檔案,其中列出了所有根伺服器的域名和IP位址。根區域資料檔案可以從國際網際網路絡資訊中心(InterNIC)的官方網站位址http://www.internic.net/下載下傳。

在區域資料檔案中,主要包括TTL配置項、 SOA (Start of Authority,授權資訊開始)記錄、位址解析記錄。檔案中的注釋資訊以分号“;”開始。

1). TTL配置及SOA記錄部分

第一行的TTL配置用于設定預設生存周期,即緩存解析結果的有效時問。 SOA記錄部分用于設定區域名稱、管理郵箱,以及為從域名服務指定更新參數。

[root@localhost ~]# cd /var/named/

[root@localhost named]# vim crushlinux.zheng

$TTL          86400                                 ;有效解析記錄的生存周期

@     IN     SOA crushlinux.com. admin.crushlinux.com.  (      ;SOA标記、域名、管理郵箱

         2011030501                       ;更新序列号,可以是10位以内的整數

         3H                                         ;重新整理時間,重新下載下傳位址資料的間隔

         15M                                      ;重試延時,下載下傳失敗後的重試間隔

         1W                                        ;失效時間,超過該時間仍無法下載下傳則放棄

         1D                                         ;無效解析記錄的生存周期

)

上述配置内容中,時間機關預設為秒,也可以使用以下機關: M (分)、H (時)、W (周)、D(天)。檔案中的“@”符号當于“crushlinux.com.”,“admin.crushlinux.com.”,表示域管理者的電子郵箱位址(由于“@”符号已有其他含義,是以将郵件位址中的“@”用代替)。SOA記錄中的更新序列号用來同步主、從伺服器的區域資料,當從伺服器判斷區域更新時,若發現主伺服器中的序列号與本地區域資料中的序列号相同,則不會進行下載下傳。

2).位址解析記錄部分

位址解析記錄用來設定DNS區域内的域名、 IP位址映射關系,包括正向解析記錄和反向解嶄記錄。反向解析記錄隻能用在反向區域資料檔案中。

[root@localhost named]# vim crushlinux.zheng

……                                                                                             //省略部分參數

@                        IN              NS             ns1.crushlinux.com.

                            IN              MX   10     mail.crushlinux.com.

ns1                     IN              A                192.168.200.111

www                  IN              A                192.168.200.111

mail                    IN              A                192.168.200.113

map                   IN              A                192.168.200.114

ftp                      IN              CNAME    www

上述配置内容中,用到以下四種常見的位址解析記錄。

■ NS域名伺服器(Name Server):記錄目前區域的DNS伺服器的主機位址。

■ MX郵件交換(Mail Exchange):記錄目前區域的郵件伺服器的主機位址,數字10表示(當有多個MX記錄時)選擇郵件伺服器的優先級,數字越大優先級越低。

■ A位址(Address):記錄正向解析條目(IPV4)。例如,“WWW IN A 192.168.200.111”表示或名www.crushlinux.com對應的IP位址是192.168.200.111。

■ AAAA 位址(Address):記錄正向解析條目(IPV6)。

■ CNAME别名(Canonical Name):記錄某一個正向解析條目的其他名稱。例如,“ftp IN CNAME www”表示域名ftp.crushlinux.com是www.crushlinux.com的别名。

其中,NS、MX記錄行首的“@”符号可以省略(預設繼承SOA記錄行首的@資訊),但是必須保留一個空格或Tab制表位。

在反向區域資料檔案中,不會用到A位址記錄,而是使用PTR指針(Point)記錄。例如,對于反向區域crushlinux.fan,添加的反向解析記錄可以是以下形式。

[root@localhost named]# vim crushlinux.fan

……                                                                                             //省略部分參數

@                        IN              NS             ns1.crushlinux.com.

                            IN              MX   10     mail.crushlinux.com.

111                     IN              PTR           ns1.crushlinux.com.

111                 IN             PTR           www.crushlinux.com.

113                 IN             PTR           mai.crushlinux.com.

114                     IN              PTR           map.crushlinux.com.

使用PTR記錄時,第一列中隻需要指明對應IP位址的“主機位址”部分即可,如“111”、“113”等,系統在查找位址記錄時會自動将目前反向域的網絡位址作為字首。例如,上述檔案中的“4 IN PTR  mai1.crushlinux.com.”,表示IP位址為192.168.200.113的主機的域名是mail.crushlinux.com.。

在區域資料配置檔案中,凡是不以點号".″結尾的主機位址,系統在查找位址記錄時都會自動将目前的域名作為字尾。例如,若目前的DNS域為“crushlinux.com”,則在檔案中的主機位址“www”相當于“www.crushlinux.com”。是以,當使用完整的FQDN位址時,務必記得位址末尾的點号“.”不能省略。

修改完區域資料檔案以後,可以執行named-checkconf指令對該檔案進行文法檢查。依次指定區域名稱、資料檔案名作為參數。如果檔案中沒有文法錯誤,系統将給出“OK”的提示資訊。例如,若要檢查DNS區域crushlinux.com的區域資料檔案crushlinux.zheng,可以執行以下操作。

[root@localhost ~] # cd /var/named/

[root@localhost named] # named-checkzone crushlinux.com crushlinux.zheng

zone crushlinux.com/IN: loaded seria1 2011030501

0K

當一台伺服器需要同時承載某個DNS區域内的許多個不同的域名時(如IDC的虛拟主機伺服器、提供個人首頁空問的網站伺服器等),可以在區域資料檔案的最後一行添加泛域名解析記錄,即使用“*”以比對任意主機名。

*                   IN       A      192.168.200.111

基于域名解析的負載均衡:同一個域名對應到多個IP位址

www       IN       A      192.168.200.111

www       IN       A      192.168.200.112

www       IN       A      192.168.200.113

5、建構緩存域名伺服器

學習了DNS伺服器的相關基礎知識、BIND軟體包的安裝,以及DNS伺服器的配置檔案組成、配置格式等。下面分别講解建構緩存域名伺服器、主域名伺服器、從域名伺服器的基本過程。

     緩存域名伺服器通常架設在公司的區域網路内,主要目的是提高域名解析的速度,減少對網際網路通路的出口流量。例如,在一個小型企業的内部網絡,如下圖中,可單獨建立一台(或內建在網關主機中)緩存域名伺服器,為各部門的員工計算機提供DNS解析服務。

參考上述網絡結構,本小節案例使用的基本環境和要求如下所述。

■ 緩存域名伺服器的IP位址為192.168.200.111,并能夠正常通路網際網路。

■ 緩存域名伺服器代為處理用戶端的DNS解析請求,并緩存查詢結果。

■ 區域網路内的各PC将首選DNS伺服器位址設為192.168.200.111。

下面講解使用BIND建構此緩存域名伺服器的基本步驟。

①. 建立主配置檔案named.conf

若使用範本檔案建立named.conf,應注意修改或删除預設的監聽設定、查詢控制,以便能夠為區域網路段的客戶機提供服務。另外,logging、view配置部分一般用不到,可以先注釋以避免其幹擾。

[root@localhost ~]# vim /etc/named.conf

options {

         listen-on port 53 { 192.168.200.111; };

         directory       "/var/named";

         dump-file       "/var/named/data/cache_dump.db";   //設定域名緩存資料庫檔案位置

         statistics-file "/var/named/data/named_stats.txt";            //設定狀态統計檔案位置

         memstatistics-file "/var/named/data/named_mem_stats.txt";

         allow-query     { 192.168.200.0/24; };

         recursion yes;

};

zone "." IN {                                                            //正向“.”根區域

        type hint;                                              //類型為根區域

        file "named.ca";                                  //區域資料檔案為named.ca

};

上述配置内容中,dump-file、statistics-file、memstatistics-file等配置項用于指定緩存資料庫檔案、狀态統計檔案的位置。添加了“zone "." IN{ ……};”部分的根區域設定,盡管緩存伺服器并沒有自主要制的區域資料,但可以向根伺服器進行疊代查詢,并将最終獲得的解析結果回報給客戶。

有時候為了提高解析效率,也可以不向根區域查詢,而是将來自用戶端的查詢請求轉發給國内電信營運商的DNS伺服器(如北京的202.106.0.20、 202.106.148.1),緩存伺服器收到傳回的查詢結果後再傳遞給用戶端。隻要去掉“zone "." IN{ ……};”的設定,并在全局配置中正确設定forwarders參數即可實作該功能。

[root@localhost etc]# vim named.conf

options {

         ……                                                                                                               //省略部分内容

         forwarders{202.106.0.20;   202.106.148.1;};

};

②. 确認根域的區域資料檔案named.ca

根區域的區域資料檔案預設位于檔案/var/named/named.ca中,該檔案記錄了Internet中13台根域伺服器的域名和IP位址等相關資訊。

[root@localhost ~]# ls /var/named/

data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves

③. 啟動named服務

執行“systemctl start named”指令,啟動named服務,并通過netstat指令确認named服務的端口監聽狀态。若服務啟動失敗或發現沒有正常監聽UDP53端口,可以根據錯誤提示資訊(或者/var/log/messages檔案中的日志記錄)排除錯誤,然後再重新開機服務即可。

[root@localhost ~]# systemctl start named

[root@localhost ~]# systemctl enable named

Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.

[root@localhost ~]# netstat -anpu | grep named

udp        0      0 192.168.200.111:53      0.0.0.0:*                           63751/named

④. 驗證緩存域名伺服器

在區域網路内的客戶機中,将首選DNS伺服器的位址設為192.168.200.111.生效後,執行“nslookup www.baidu.com”指令對其進行解析,驗證其是否能夠獲得該域名對應的IP位址資訊。

6、建構主域名伺服器

主域名伺服器通常架設在Internet環境中,提供某一個域或某幾個域内的主機名與IP位址的查詢服務。為了分擔域名查詢的壓力、提供區域資料的備份,有時還會另外架設一台從域名伺服器,與主域名伺服器同時提供服務,如下圖所示。

參考下圖的網絡結構,将分别介紹主域名伺服器、從域名伺服器的建構過程。案例使用的基本網絡環境和要求如下所述。

■ 主、從域名伺服器均位于Internet中,所負責的DNS區域為“crushlinux.com”。

■ 主伺服器的IP位址為192.168.200.111,主機名為nsl.crushlinux.como

■ 從伺服器的IP位址為192.168.200.112,主機名為ns2.crushlinux.como

■ 參考各伺服器的位址映射關系,為192.168.200.0/24網段提供反向解析。

■ 在crushlinux.com區域中,除了NS記錄以外,提供的解錄還包括以下内容。

● 網站伺服器www.crushlinux.com,IP位址為192.168.200.111。

● 郵件伺服器mai1.crushlinux.com,IP位址為192.168.200.112。

● 線上教育訓練伺服器study.crushlinux.com,IP位址為192.168.200.113。

● 設定crushlinux.com域的泛域名解析,對應的IP位址為192.168.200.111。

■ 客戶機将首選、備用DNS伺服器分别設為192.168.200.111和192.168.200.112,使用其中的任何一個伺服器.都能夠正常查詢crushlinux.com區域中的主機位址。

下面首先講解使用BIND建構主域名伺服器的基本步驟。

①. 确認本機的網絡位址、主機映射、預設DNS伺服器位址。

将主域名伺服器的IP位址設為192.168.200.111、主機名設為ns1.crushlinux.com,通過修改網絡配置檔案的方式進行。另外,為了提高域名解析效率,建議将兩個DNS伺服器的位址映射直接寫入到/etc/hosts檔案中,并在/etc/resolv.conf檔案中指定兩個DNS伺服器的位址。

[root@localhost ~]# tail -2 /etc/hosts

192.168.200.111               nsl.crushlinux.com        nsl

192.168.200.112               ns2.crushlinux.com       ns2

[root@localhost ~]# tail -2 /etc/resolv.conf

nameserver   192.168.200.111

nameserver   192.168.200.112

②. 建立主配置檔案named.confo

新建立的named.conf主配置檔案,由于隻需要提供crushlinux.com域的正向解析和192.168.200.0/24網段的反向解析,是以相應地添加這兩個區域即可。根區域、回環域等其他配置内容可以省略。

[root@localhost ~]# cd /etc/

[root@localhost etc]# vim named.conf

options {

         directory "/var/named";

};

zone "crushlinux.com" IN {                                                  //正向"crushlinux.com"區域

         type master;                                                                    //類型為主區域

         file "crushlinux.zheng";                                      //區域資料檔案為crushlinux. com. zone

         allow-transfer { 192.168.200.112; };                     //允許從伺服器位址下載下傳正向域資料

};

zone "200.168.192.in-addr.arpa" IN {                              //反向"192.168.200.0/24"區域

         type master;

         file "crushlinux.fan";

         allow-transfer { 192.168.200.112; };                     //允許從伺服器位址下載下傳反向域資料

};

當不需要建立從域名伺服器時,上述配置内容中的“allow-transfer ……”部分可以不添加,當不需要提供反向解析時,“zone "200.168.192.in-addr.arpa" IN { …… }”部分也可以去掉。

③. 建立正向、反向區域資料檔案。

根據named.conf中的zone區域設定,分别建立正向區域資料檔案crushlinux.zheng.反向區域資料檔案crushlinux.fan配置内容可以參考區域資料檔案/var/named/named.localhost。

[root@localhost ~]# cd /var/named/

[root@localhost named]# vim crushlinux.zheng

$TTL          86400                ;有效解析記錄的生存周期

@     IN     SOA crushlinux.com. admin.crushlinux.com. (          ;SOA标記、域名、管理郵箱

         2011030501     ;更新序列号,可以是10位以内的整數

         3H                       ;重新整理時間,重新下載下傳位址資料的間隔

         15M                   ;重試延時,下載下傳失敗後的重試間隔

         1W                     ;失效時間,超過該時間仍無法下載下傳則放棄

         1D                       ;無效解析記錄的生存周期

)

@              IN     NS             ns1.crushlinux.com.

                   IN     NS             ns2.crushlinux.com.

                   IN     MX   10     mail.crushlinux.com.

ns1            IN     A                192.168.200.111

ns2            IN     A                192.168.200.112

mail          IN     A                192.168.200.112

www         IN     A                192.168.200.111

study       IN     A                192.168.200.113

*                IN     A                192.168.200.111

[root@localhost named]# vim crushlinux.fan

$TTL          86400

@     IN     SOA crushlinux.com. admin.crushlinux.com. (

         2011030501    

         3H

         15M

         1W

         1D

)

@              IN     NS             ns1.crushlinux.com.

                   IN     NS             ns2.crushlinux.com.

111            IN     PTR           www.crushlinux.com.

112            IN     PTR           mail.crushlinux.com.

113            IN     PTR           study.crushlinux.com.

111            IN     PTR           ns1.crushlinux.com.

112            IN     PTR           ns2.crushlinux.com.

④. 啟動named服務或重載配置。

啟動named服務,如果之前named服務已經在運作,也可以重新開機服務或重載配置。

[root@localhost named]# chgrp named crushlinux.zhengcrushlinux.fan

[root@localhost ~]# named-checkconf /etc/named.conf

[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.zheng

zone crushlinux.com/IN: loaded serial 2019010801

OK

[root@localhost ~]# named-checkzone crushlinux.com /var/named/crushlinux.fan

zone crushlinux.com/IN: NS \'ns1.crushlinux.com\' has no address records (A or AAAA)

zone crushlinux.com/IN: NS \'ns2.crushlinux.com\' has no address records (A or AAAA)

zone crushlinux.com/IN: not loaded due to errors.

[root@localhost named]# systemctl reload named

⑤. 驗證主域名伺服器。

用戶端将DNS伺服器指向192.168.200.111 (主域名伺服器的IP位址) ,使用nslookup指令驗證DNS查詢結果。例如,以下操作使用Windows 7客戶機分别驗證了正向解析、泛域名解析、反向解析的查詢結果。

C:\Users\Administrator> nslookup study.crushlinux.com                    //驗證正向域名解析

伺服器: nsl.crushlinux.com

Address: 192.168.200.111

名稱: Study.crushlinux.com

Address: 192.168.200.113

C:\Users\Administrator>nslookup www.crushlinux.com

伺服器:  ns1.crushlinux.com

Address:  192.168.200.111

名稱:    www.crushlinux.com

Address:  192.168.200.111

C: \Users\Administrator> nslookup xxyyzz.crushlinux.com                //驗證泛域名解析

伺服器: nsl.crushlinux.com

Address: 192.168.200.111.

名稱: xxyyzz.crushlinux.com

Address: 192.168.200.111

C:\Users\Administrator> nslookup192.168.200.112                  //驗證反向域名解析

伺服器: nsl.crushlinux.com

Address: 192.168.200.111

名稱: mai1.crushlinux.com

Address: 192.168.200.112

7、建構從域名伺服器

繼續用上面的應用案例,在已經建構好主域名伺服器192.168.200.111的基礎之上,繼續建構從域名伺服器192.168.200.112。

①. 确認本機的網絡位址、主機映射、預設DNS伺服器位址

将從域名伺服器的IP位址設為192.168.200.112,主機名設為ns2.crushlinux.com,通過修改網絡配置檔案的方式進行。另外,主機映射檔案/etc/hosts和DNS解析檔案/etc/resolve.conf的内容與主伺服器中的内容相同。

②. 建立主配置檔案named.conf

在從域名伺服器中,named.conf檔案的内容與主伺服器的内容大部分相同,隻是不需要再設定“allow-transfer ……”,更關鍵的一點是, zone部分的區域類型應設定為“slave”,并添加“masters {  };”語句來指定主域名伺服器的位址。

[root@localhost ~]# yum -y install bind

[root@localhost ~]# cd /etc/

[root@localhost etc]# vim named.conf

options {

         directory  "/var/named";

};

zone "crushlinux.com" IN {                                         //正向"crushlinux.com"區域

         type slave;                                                               //類型為從區域

         masters { 192.168.200.111; };                           //指定主伺服器的IP位址

         file "slaves/crushlinux.zheng";                        //下載下傳的區域檔案儲存到slave/crushlinux. com. zone

};

zone "200.168.192.in-addr.arpa" IN {                     //反向"173.16.16.0/24"區域

         type slave;

         masters { 192.168.200.111; };        

         file " slave/Crushlinux.fan";

};

由于從伺服器的區域資料檔案是從主伺服器中下載下傳而來,是以該檔案儲存的名稱可以自行定義,不用非得與主伺服器中的一緻。但需要注意的是,named服務預設以名為“named”的使用者身份運作,是以要确認named使用者對存放目錄有寫入權限。

[root@localhost ~]# ls -l /var/named/slaves/

總用量 0

③. 啟動named服務,檢視區域資料檔案是否下載下傳成功

在從域名伺服器中啟動named服務,若配置無誤,則named将會從主域名伺服器中自動下載下傳指定的區域資料檔案,并儲存到“slaves/”目錄下。另外,通過系統日志檔案/var/log/messages也可以觀察到下載下傳區域資料檔案的過程。

[root@localhost ~]# systemctl start named

[root@localhost ~]# ls -l /var/named/slaves/

總用量 8

-rw-r--r-- 1 named named 483 1月   8 23:03 crushlinux.fan

-rw-r--r-- 1 named named 538 1月   8 23:03 crushlinux.zheng

④. 驗證從域名伺服器

對于用戶端來說,從域名伺服器與主域名伺服器并沒有什麼差別,通過主伺服器能夠查詢到的資訊,通過從伺服器也同樣能夠查詢到。驗證從域名伺服器時,隻需要将用戶端的首選DNS伺服器位址設為192.168.200.112(從域名伺服器的IP位址),使用nslookup指令進行正常測試即可。例如,以下操作是使用Linux客戶機的測試結果。

[root@localhost etc]# nslookup study.crushlinux.com

伺服器:  mail.crushlinux.com

Address:  192.168.200.112

名稱:    study.crushlinux.com

Address:  192.168.200.113

[root@localhost etc]# nslookup 192.168.200.112

伺服器:  mail.crushlinux.com

Address:  192.168.200.112

名稱:    mail.crushlinux.com

Address:  192.168.200.112

8、DNS解析綜合學習案例

1、使用者需把/dev/myvg/mylv邏輯卷以支援磁盤配額的方式挂載到網頁目錄下

2、在網頁目錄下建立測試檔案index.html,内容為使用者名稱,通過浏覽器通路測試

3、建立使用者賬戶,對LVM配置磁盤配額限制使用者磁盤容量為軟限制80M;硬限制100M、檔案數量軟限制為80個;硬限制為100個。

4、建構主從DNS域名解析環境

5、主從DNS都可将www.crushlinux.com域名解析為192.168.200.113

6、客戶機可通過浏覽器通路www.crushlinux.com得到WEB伺服器相應内容

7、主域名伺服器要同時擔任緩存域名伺服器功能

8、客戶機通過nslookup域名測試工具可解析到www.jd.com等網站的域名解析結果

9、DNS生産環境案例

在域名營運商購買域名備案後,可将域名DNS更改為自己建構的DNS伺服器。

[root@localhost ~]# nslookup www.crushlinux.com 134.175.27.146

Server:              134.175.27.146

Address: 134.175.27.146#53

Name:      www.crushlinux.com

Address: 180.153.100.100

10、建構DNS域名伺服器的分離解析

DNS分離解析域名伺服器概述

         DNS分離解析域名伺服器實際也是主域名DNS伺服器,這裡所說的分離解析(Split DNS),主要是指根據不同來源的用戶端請求,提供不同的域名解析記錄。來自不同位址的客戶機請求解析同一域名時,為其提供不同的解析結果。

分離解析案例:

如下圖所示:Crushlinux工作室的DNS域名伺服器架設在公司網關伺服器中,網關伺服器擁有兩個網卡,ens32(VMnet8)的IP位址為192.168.200.111屬于公司的内網通信網絡;網卡ens34(Vmnet2)的IP位址為172.16.1.1屬于公司的公網通信網絡。公司注冊的域名有網站伺服器:www.crushlinux.com和郵件伺服器:mail.crushlinux.com。

案例需求:

  • 來自Internet的客戶機解析www.crushlinux.com和mail.crushlinux.com域名時考慮伺服器的安全性,需解析為公司的公網位址172.16.1.1。使其通過公司的網關伺服器轉發後通路網站和郵件伺服器。
  • 來自公司區域網路中的客戶機解析www.crushlinux.com和mail.crushlinux.com域名時考慮到使用者通路速度分别解析為伺服器區域網路位址192.168.200.112和192.168.200.113。使其通過公司區域網路直接通路相應伺服器。
  • 客戶機切換網絡模式,模拟内網與公網位址進行解析測試。

10.1、前期環境準備

[root@localhost ~]# ip a | grep ens

2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    inet 192.168.200.111/24 brd 192.168.200.255 scope global ens32

3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    inet 172.16.1.1/24 brd 172.16.1.255 scope global ens34

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# iptables -F

[root@localhost ~]# setenforce 0

setenforce: SELinux is disabled

[root@localhost ~]# yum -y install bind

10.2、修改/etc/named.conf主配置檔案中為不同網絡的客戶機位址準備不同的zone區域設定,各自使用獨立的資料檔案

[root@localhost ~]# vim /etc/named.conf

options {

         directory         "/var/named";

};

view "LAN" {

match-clients { 192.168.200.0/24; };     //比對區域網路的用戶端

zone "crushlinux.com" IN {

         type master;

         file "crushlinux.zheng.lan";

};

};

view "WAN" {

match-clients { any; };    //比對網際網路的用戶端

zone "crushlinux.com" IN {

        type master;

        file "crushlinux.zheng.wan";

};

};

10.3、分别建立不同的區域資料檔案

[root@localhost ~]# cd /var/named/

[root@localhost named]# vim crushlinux.zheng.lan

$TTL 86400

@     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                   2019011001

                   3H

                   15M

                   1W

                   1D

)

         IN     NS    ns.crushlinux.com.

         IN     MX 10      mail.crushlinux.com.

ns     IN     A      192.168.200.111

www         IN     A      192.168.200.112

mail IN     A      192.168.200.113

[root@localhost named]# vim crushlinux.zheng.wan

$TTL 86400

@     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                   2019011001

                   3H

                   15M

                   1W

                   1D

)

         IN     NS    ns.crushlinux.com.

         IN     MX 10      mail.crushlinux.com.

ns     IN     A      172.16.1.1

www         IN     A      172.16.1.1

mail IN     A      172.16.1.1

[root@localhost named]# chgrp named crushlinux.zheng.*

[root@localhost named]# ls -l crushlinux.zheng.*

-rw-r--r-- 1 root named 229 1月  10 23:51 crushlinux.zheng.lan

-rw-r--r-- 1 root named 214 1月  10 23:52 crushlinux.zheng.wan

[root@localhost named]# systemctl restart named

10.4、客戶機設定網絡模式為VMnet8,DNS伺服器指向為192.168.200.111,解析測試

C:\Users\Crushlinux>nslookup www.crushlinux.com

伺服器:  UnKnown

Address:  192.168.200.111

名稱:    www.crushlinux.com

Address:  192.168.200.112

C:\Users\Crushlinux>nslookup mail.crushlinux.com

伺服器:  UnKnown

Address:  192.168.200.111

名稱:    mail.crushlinux.com

Address:  192.168.200.113

10.5、客戶機設定網絡模式為VMnet2,DNS伺服器指向為172.16.1.1,解析測試

C:\Users\Crushlinux>nslookup www.crushlinux.com

伺服器:  UnKnown

Address:  172.16.1.1

名稱:    www.crushlinux.com

Address:  172.16.1.1

C:\Users\Crushlinux>nslookup mail.crushlinux.com

伺服器:  UnKnown

Address:  172.16.1.1

名稱:    mail.crushlinux.com

Address:  172.16.1.1

11、DNS view的多種應用方式

11.1、match-clients直接指定位址

[root@localhost ~]# vim /etc/named.conf

options {

         directory         "/var/named";

};

view "LAN" {

match-clients { 192.168.200.0/24; };     //比對區域網路的用戶端

zone "crushlinux.com" IN {

         type master;

         file "crushlinux.zheng.lan";

};

};

view "WAN" {

match-clients { any; };    //比對網際網路的用戶端

zone "crushlinux.com" IN {

        type master;

        file "crushlinux.zheng.wan";

};

};

11.2、基于acl通路控制清單

[root@localhost ~]# vim /etc/named.conf

options {

         directory         "/var/named";

};

acl lan { 192.168.200.0/24; };          //定義通路控制清單

acl wan { any; };

view "LAN" {

match-clients { lan; };     //比對區域網路的用戶端

zone "crushlinux.com" IN {

         type master;

         file "crushlinux.zheng.lan";

};

};

view "WAN" {

match-clients { wan; };   //比對網際網路的用戶端

zone "crushlinux.com" IN {

        type master;

        file "crushlinux.zheng.wan";

};

};

11.3、基于通路控制檔案

[root@localhost ~]# cat /var/named/lan.txt

acl lan {

192.168.200.0/24;

};

[root@localhost ~]# cat /var/named/wan.txt

acl wan {

any;

};

[root@localhost ~]# vim /etc/named.conf

[root@localhost ~]# cat /etc/named.conf

options {

         directory         "/var/named";

};

include "/var/named/lan.txt";

include "/var/named/wan.txt";

view "LAN" {

match-clients { lan; };

zone "crushlinux.com" IN {

         type master;

         file "crushlinux.zheng.lan";

};

};

view "WAN" {

match-clients { wan; };

zone "crushlinux.com" IN {

        type master;

        file "crushlinux.zheng.wan";

};

};

12、建構智能DNS域名解析伺服器

随着原中國電信集團按南北地域分家,新的中國電信和網通集團随即成立,網際網路的骨幹網也被一分為二了,北有網通、南有電信。從此,細心的網民可以發現,有些經常通路的網站速度一下子慢了下來,有時候還有通路不到的情況出現。例如北方地區的網絡使用者通路中國網通的伺服器會非常快,而通路中國電信的伺服器時,感覺非常慢。這種現象不僅影響了網站的通路量,更嚴重的是它直接影響了一些經營性網站的經濟效益。據分析,産生這個問題的根本原因是中國電信分家之後,電信與網通之間的互連存在問題。雖然資訊産業部已經在規劃南北互通計劃,但在今後相當長的一段時期内,南北方網互連的問題還會長期存在。

智能DNS解析是針對電信和網通互聯互通不暢的問題推出的一種DNS解決方案。

智能DNS域名解析伺服器能自動判斷通路者的IP位址并根據IP位址所屬的營運商不同可為其解析出對應營運商伺服器的IP位址,使網通使用者通路到網通伺服器,電信使用者通路到電信伺服器,而不需要使用者進行選擇。避免使用者通路跨營運商導緻使用者通路速度緩慢。

         例如一個企業網站站點帶寬租用了三個營運商的帶寬:電信、網通、移動,同樣有三個來自不同營運商網絡的通路使用者,那電信使用者通路企業網站時,智能DNS會進行自動判斷,根據IP來源營運商,為其解析為電信營運商IP位址,使使用者通路同營運商伺服器;其他營運商的使用者通路的也同理,如下圖所示。

智能DNS政策解析還可以實作就近通路機制。有些使用者在國外和國内都放置了伺服器,使用我們的DNS政策解析服務可以讓國外的網絡使用者通路你國外的伺服器,國内的使用者通路國内的伺服器,進而使國内外的使用者都能迅速的通路到你的伺服器。

智能DNS作用

  • 雙線路的機房:服務本身有兩個IP,一個電信IP,一個網通IP或者其他線路。
  • 鏡象網站:在網通及電信的機房放置多個相同的鏡象站點, 讓不同的地方客戶通路不同的站點。
  • 負載均衡:對于流量比較大的網站,可以把流量配置設定到幾台不同的伺服器上,以提高網站速度。
  • 個性化站點服務:比如通過IP表的重新定義, 讓國外的客戶自動通路英文版的網站; 讓國内的客戶自動通路中文版的網站。
  • CDN(内容分發網絡)加速器:通過與squid、Nginx、Varnish等WEB緩存軟體結合實作CDN加速器。
  • 防止DDOS(分布式拒絕服務)攻擊:通過多個線路分散攻擊流量,進而達到抵擋DDOS攻擊。

CDN加速基礎原理

智能DNS域名伺服器案例:

如下圖所示:Crushlinux工作室的DNS域名伺服器架設在公司網關伺服器中,網關伺服器擁有兩個網卡,ens32(VMnet8)的IP位址為192.168.200.111屬于公司的内網通信網絡;網卡ens34(Vmnet2)的IP位址為172.16.1.1(VMnet2)屬于公司的公網通信網絡。公司注冊的域名有網站伺服器:www.crushlinux.com和郵件伺服器:mail.crushlinux.com。

案例需求:

  • 來自Internet的電信客戶機解析www.crushlinux.com和mail.crushlinux.com域名時需解析為電信位址172.16.1.12。
  • 來自Internet的網通客戶機解析www.crushlinux.com和mail.crushlinux.com域名時需解析為網通位址172.16.1.13。
  • 客戶機切換IP位址模拟電信與網通營運商進行解析測試。

12.1、前期環境準備

[root@localhost ~]# ip a | grep ens

2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    inet 192.168.200.111/24 brd 192.168.200.255 scope global ens32

3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

    inet 172.16.1.1/24 brd 172.16.1.255 scope global ens34

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# iptables -F

[root@localhost ~]# setenforce 0

setenforce: SELinux is disabled

[root@localhost ~]# yum -y install bind

12.2、修改/etc/named.conf主配置檔案中為不同營運商的客戶機位址準備不同的zone區域設定,各自使用獨立的資料檔案

[root@localhost ~]# cat /var/named/wangtong.txt

acl wangtong {

172.16.1.3;

};

[root@localhost ~]# cat /var/named/dianxin.txt

acl dianxin {

172.16.1.2;

};

[root@localhost ~]# cat /etc/named.conf

options {

         directory         "/var/named";

};

include "/var/named/dianxin.txt";

include "/var/named/wangtong.txt";

view "dianxin" {

match-clients { dianxin; };

zone "crushlinux.com" IN {

         type master;

         file "crushlinux.zheng.dianxin";

};

};

view "wangtong" {

match-clients { wangtong; };

zone "crushlinux.com" IN {

        type master;

        file "crushlinux.zheng.wangtong";

};

};

12.3、分别建立不同的區域資料檔案

[root@localhost ~]# cd /var/named/

[root@localhost ~]# cat /var/named/crushlinux.zheng.dianxin

$TTL 86400

@     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                   2019011001

                   3H

                   15M

                   1W

                   1D

)

                  IN     NS    ns.crushlinux.com.

                  IN     MX 10      mail.crushlinux.com.

ns              IN     A      172.16.1.1

www         IN     A      172.16.1.12

mail          IN     A      172.16.1.12

[root@localhost ~]# cat /var/named/crushlinux.zheng.wangtong

$TTL 86400

@     IN     SOA crushlinux.com.  admin.crushlinux.com. (

                   2019011001

                   3H

                   15M

                   1W

                   1D

)

                  IN     NS    ns.crushlinux.com.

                  IN     MX 10      mail.crushlinux.com.

ns              IN     A      172.16.1.1

www         IN     A      172.16.1.13

mail          IN     A      172.16.1.13

[root@localhost named]# chgrp named crushlinux.zheng.*

[root@localhost named]# ls -l crushlinux.zheng.*

-rw-r--r-- 1 root named 229 1月  10 23:51 crushlinux.zheng.lan

-rw-r--r-- 1 root named 214 1月  10 23:52 crushlinux.zheng.wan

[root@localhost named]# systemctl restart named

12.4、客戶機設定網絡模式為VMnet2,IP位址為172.16.1.2模拟電信使用者,解析測試

C:\Users\Crushlinux>nslookup www.crushlinux.com

伺服器:  UnKnown

Address:  172.16.1.1

名稱:    www.crushlinux.com

Address:  172.16.1.12

12.5、客戶機設定網絡模式為VMnet2,IP位址為172.16.1.3模拟網通使用者,解析測試

C:\Users\Crushlinux>nslookup www.crushlinux.com

伺服器:  UnKnown

Address:  172.16.1.1

名稱:    www.crushlinux.com

Address:  172.16.1.13

13、擷取不同營運商的IP位址範圍

https://github.com/clangcn/everyday-update-cn-isp-ip

根據APNIC的最新IP位址清單及whois資訊,每日0點(中原標準時間)生成的各主要營運商IP位址段。

中國電信 IP位址段:(http://ispip.clang.cn/chinatelecom.html)

中國聯通(網通)IP位址段:(http://ispip.clang.cn/unicom_cnc.html)

中國移動 IP位址段:(http://ispip.clang.cn/cmcc.html)

中國鐵通 IP位址段:(http://ispip.clang.cn/crtc.html)

中國教育網 IP位址段:(http://ispip.clang.cn/cernet.html)

中國其他ISP IP位址段:(http://ispip.clang.cn/othernet.html)

[root@localhost ~]# cat ispip.sh

#!/bin/bash

url="http://ispip.clang.cn/"

for i in chinatelecom unicom_cnc cmcc crtc cernet othernet

do

         wget $url$i.html -O /tmp/$i.txt

         sed -n \'/^[0-9]/ s/<br>/;/gp\' /tmp/$i.txt | sed "1iacl $i {" | sed \'$a};\' > /var/named/$i.txt

done

[root@localhost ~]# chmod +x ispip.sh

[root@localhost ~]# crontab -e

*       */5   *       *       *       /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1

05     0       *       *       *       /bin/bash /root/ispip.sh

[root@localhost ~]# systemctl restart crond