CentOS下各種DNS資源的配置


一.本文環境

  1.CentOS 7 

  2. DNS服務軟件bind

二.DNS資源記錄的配置實現

  1.資源記錄解析庫類型

    資源解析庫,由眾多RR組成(resource record:資源記錄),記錄類型,A,SOA,AAAA,CNAME,PTR,MX,NS

    A:                       將名稱(域名)解析為IP地址

    MX:                    郵件交換服務器記錄

    NS:                    主機名記錄

    PTR:                  反向解析 把IP地址反過來寫,1.2.3.4,要寫作4.3.2.1;而有特定后綴:in-addr.arpa.,所以完整寫法為:4.3.2.1.in-addr.arpa. value: FQDN

    SOA:                 初始授權記錄,一個區域解析庫有且只能由一個SOA記錄 ,必須位於解析庫的第一條記錄

    AAAA:                將名稱解析為IPV6地址

    CNAME :            別名記錄

  2 .資源記錄解析庫語法

    name:當前域的名字可以使用@來代替    TTL:緩存時長          IN:internet      rr_type:上面的其中資源記錄類型           value:類型的值

    在七種記錄中SOA的值是由多部份組成 :服務器名字  管理郵箱 (序列號  同步時間   重試時間  過期時間  否定答案)

  3.實現DNS服務器(三台機器)

    1.yum install bind -y

    2. 需要配置bind 主配置文件(/etc/named.conf)和解析庫文件(/var/named)

    3.首先配置主配置文件/etc/named.conf    

 1 options {  2 // listen-on port 53 { 127.0.0.1; }; #注釋此行 開放端口不然無法被其他機器訪問,改為localhost也可
 3         listen-on-v6 port 53 { ::1; };  4         directory       "/var/named";  5         dump-file       "/var/named/data/cache_dump.db";  6         statistics-file "/var/named/data/named_stats.txt";  7         memstatistics-file "/var/named/data/named_mem_stats.txt";  8         secroots-file   "/var/named/data/named.secroots";  9         recursing-file  "/var/named/data/named.recursing"; 10 // allow-query { localhost; }; #注釋此行 允許訪問 改為any也可
11         allow-transfer   { none; };                #手動增加此行 任何主機不能同步。默認任何主機可以同步,此項不安全所以設為none

  配置/etc/named.conf無需改太多地方,注釋掉兩行,增加一行就行了。

    4.然后增加資源記錄庫文件/var/named/目錄下,創建一個文件,文件名隨意。但是這個文件名要和zone中的文件名一致

 1 [root@CentOS-8 ~]# cat /var/named/bind.dns  2 $TTL 1D  3 ;name TTL IN rr_type value  4 @ IN SOA ns1.baidu.com. mail.baidu.com. (  5                 0000000001 ;序列號 增加就同步到從服務器
 6  1D      ;同步刷新時間  7  2H      ;重試時間  8  2D      ;過期時間  9  1D ;否定緩存時間 10 ) 11 @ IN NS ns1 12 ns1       IN        A             192.168.39.8    
13 www       IN        A             192.168.39.6
14 *         IN        A             192.168.39.6 ;泛解析 15 @         IN        A             192.168.39.6 ;本域

    5.增加一個域。跟上面的第4步對應,在/etc/named.rfc1912.zones 文件中增加,里面由范例直接改就行了

1 zone "baidu.com" IN { 2  type master; 3         file "bind.dns";(這里的文件於第4步文件對應) 4         allow-update { none; }; 5 };

    6.客戶端curl訪問

1 [root@centos7-lvm ~]# curl www.baidu.com 2 <h1>www.google.com</h1>
3 [root@centos7-lvm ~]# curl wwwwwww.baidu.com #因為泛解析所以能正確訪問到 baidu.com這個域
4 <h1>www.google.com</h1>
5 [root@centos7-lvm ~]# curl baidu.com
6 <h1>www.google.com</h1> 
7 [root@centos7-lvm ~]# curl aaaaaa.baidu.com # 因為泛解析所以能正確訪問到 baidu.com這個域
8 <h1>www.google.com</h1>

9 [root@centos7-lvm ~]#

    dig訪問

 1 [root@centos7-lvm ~]# dig baidu.com  2 
 3 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> baidu.com  4 ;; global options: +cmd  5 ;; Got answer:  6 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64695
 7 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
 8 
 9 ;; OPT PSEUDOSECTION: 10 ; EDNS: version: 0, flags:; udp: 4096
11 ;; QUESTION SECTION: 12 ;baidu.com. IN A 13 
14 ;; ANSWER SECTION: 15 baidu.com.        86400    IN    A    192.168.39.6
16 
17 ;; AUTHORITY SECTION: 18 baidu.com.        86400 IN NS ns1.baidu.com. 19 
20 ;; ADDITIONAL SECTION: 21 ns1.baidu.com.        86400    IN    A    192.168.39.8
22 
23 ;; Query time: 0 msec 24 ;; SERVER: 192.168.39.8#53(192.168.39.8) 25 ;; WHEN: Sat Nov 16 15:55:00 CST 2019
26 ;; MSG SIZE  rcvd: 88

  都可以訪問了,這樣一個DNS服務就完成了。

  4.實現DNS主從服務器的訪問(四台機器)

   1.增加一個從服務器很簡單,新增一個機器,安裝DNS服務軟件bind

    2.同樣需要配置主配置文件/etc/named.conf  注釋兩行增加一行

 1 options {  2         //listen-on port 53 { 127.0.0.1; };
 3         listen-on-v6 port 53 { ::1; };  4         directory       "/var/named";  5         dump-file       "/var/named/data/cache_dump.db";  6         statistics-file "/var/named/data/named_stats.txt";  7         memstatistics-file "/var/named/data/named_mem_stats.txt";  8         recursing-file  "/var/named/data/named.recursing";  9         secroots-file   "/var/named/data/named.secroots"; 10         allow-transfer { none; }; 11         //allow-query { localhost; };

 

    3.配置從服務器的配置文件/etc/named.rfc1912.zones

1 zone "baidu.com" IN { #這個區域必須與主服務器上的區域項匹配 2  type slave; #dns服務器類型 3         masters {192.168.39.8;}; #主服務器的IP 4         file "slaves/baidu.com.slase"; #文件名可以隨意 5 };

 

   4.將主服務配置文件/etc/named.conf中的allow-transfer {none;}; 改為從服務器的IP

 1 options {  2 // listen-on port 53 { 127.0.0.1; };
 3         listen-on-v6 port 53 { ::1; };  4         directory       "/var/named";  5         dump-file       "/var/named/data/cache_dump.db";  6         statistics-file "/var/named/data/named_stats.txt";  7         memstatistics-file "/var/named/data/named_mem_stats.txt";  8         secroots-file   "/var/named/data/named.secroots";  9         recursing-file  "/var/named/data/named.recursing"; 10         allow-transfer { 192.168.39.27; };#  增加可以同步的從服務器IP

   5.其實現在啟動從服務器上的DNS服務便可以同步主服務器上的bind.dns文件.

    但是主服務器並不知道誰是他的從服務器,所以還需要在主服務器的/var/named/bind.dns(資源記錄文件)中加上一個A記錄與一個NS記錄

   

 1 $TTL 1D
 2 ;name TTL  IN      rr_type         value
 3 @          IN       SOA            ns1.baidu.com.    mail.baidu.com. (
 4                                 0000000001
 5                                 1D
 6                                 2H
 7                                 2D
 8                                 1D
 9 )
10 @          IN        NS          slave
11 slave      IN        A           192.168.39.27
12 @          IN        NS            ns1
13 ns1        IN        A             192.168.39.8
14 www        IN        A             192.168.39.6
15 *          IN        A             192.168.39.6 ;泛解析
16 @          IN        A             192.168.39.6 ;本域

 

    6.停止主服務上的DNS 測試從服務器是否可用  

 1 [root@centos7-lvm ~]# dig www.baidu.com  2 
 3 ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> www.baidu.com  4 ;; global options: +cmd  5 ;; Got answer:  6 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32407
 7 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
 8 
 9 ;; OPT PSEUDOSECTION: 10 ; EDNS: version: 0, flags:; udp: 4096
11 ;; QUESTION SECTION: 12 ;www.baidu.com. IN A 13 
14 ;; ANSWER SECTION: 15 www.baidu.com.      86400      IN    A    192.168.39.6
16 
17 ;; AUTHORITY SECTION: 18 baidu.com.          86400 IN NS ns1.baidu.com. 19 baidu.com.          86400 IN NS slave.baidu.com. 20 
21 ;; ADDITIONAL SECTION: 22 slave.baidu.com.    86400      IN    A    192.168.39.27
23 ns1.baidu.com.      86400      IN    A    192.168.39.8
24 
25 ;; Query time: 1 msec 26 ;; SERVER: 192.168.39.27#53(192.168.39.27) #從服務器地址 所以從服務器可用 27 ;; WHEN: Sat Nov 16 16:47:39 CST 2019
28 ;; MSG SIZE  rcvd: 128

  5.實現DNS父域和子域服務

    1.父域子域的實現需要也是通過 A記錄委派實現的  

      2.父域的資源記錄文件上增加子域委派  

 1 $TTL 1D  2 ;name TTL IN rr_type value  3 @ IN SOA ns1.baidu.com. mail.baidu.com. (  4                                 0000000002
 5  1D  6  2H  7  2D  8  1D  9 ) 10 @ IN NS slave 11 slave      IN        A           192.168.39.27
12 @ IN NS ns1
13 google IN NS ns.google
14 ns.google IN A 192.168.39.37 #委派給服務器192.168.39.37 15 ns1 IN A 192.168.39.8 16 www IN A 192.168.39.6 17 * IN A 192.168.39.6 ;泛解析 18 @ IN A 192.168.39.6 ;本域

    3.在父域的DNS服務器上還需要將/etc/named.conf文件中的配置更改

1         dnssec-enable no; #這樣項改為no 默認yes 2         dnssec-validation no;

    4.子域服務器改注釋的兩行和增加的一行完成

    5.配置子域的配置文件/etc/named.rfc1912.conf 和創建資源文件 /var/named/google.baidu.com

    /etc/named.rfc1912.conf 

zone "google.baidu.com" IN { type master; file "google.baidu.com"; allow-update { none; }; };

    創建資源配置文件   /var/named/google.baidu.com  

 1 $TTL 1D
 2 @        IN   SOA   NS1 mail (
 3                                 000000001
 4                                 1D
 5                                 2H
 6                                 3D
 7                                 10H
 8 )
 9 @        IN   NS    NS1
10 NS1      IN   A     192.168.39.37
11 www      IN   A     192.168.39.6

    6.測試子域

1 [root@centos7-lvm ~]# curl www.google.baidu.com
2 www.google.baidu.com

   6.DNS轉發

   1.DNS轉發

    DNS轉發分全局轉發和特定區域轉發。

    實現DNS全局轉發很簡單只需在主配置文件/etc/named.conf文件中增加兩行

 

 1 options {  2 // listen-on port 53 { 127.0.0.1; };
 3         listen-on-v6 port 53 { ::1; };  4         directory       "/var/named";  5         dump-file       "/var/named/data/cache_dump.db";  6         statistics-file "/var/named/data/named_stats.txt";  7         memstatistics-file "/var/named/data/named_mem_stats.txt";  8         recursing-file  "/var/named/data/named.recursing";  9         secroots-file   "/var/named/data/named.secroots"; 10 // allow-query { localhost; };
11         allow-transfer {none;}; 12 forward first; #轉發由兩種方式 only 與 first only是不會去找根域 而first回去找根 13 forwarders {192.168.39.8;}; #轉發到DNS的ip

 

    實現DNS特定區域的轉發,僅轉發對特定的區域的請求,比全局轉發優先級高   

1 zone "baidu.com" IN { 2  type forward; 3  forward first; 4         forwarders { 180.76.76.76; }; #返回的是真正的百度頁面 因為優先級比全局高,不是我自己弄的頁面了 5 };

     7.智能DNS

  1.實現DNS需要設置acl訪問控制,設置訪問的IP段。

    2.設置view視圖,將匹配的acl與相應的zone文件配置關聯起來。

    3.zone文件中的file配置是將解析庫關聯起來。

    4.解析庫中的CNAME(別名記錄)配合A記錄來最終實現智能DNS

  根據如上步驟來配置 /etc/named.conf  文件實現

  1.設置acl

  acl: 把一個或多個地址歸並為一個集合,並通過一個統一的名稱調用

注意:只能先定義后使用;因此一般定義在配置文件中,處於options的前面

 

 

 1 acl beijingnet {  2         192.168.39.0/24;  3 };  4 
 5 acl shanghainet {  6         172.16.0.0/16;  7 };  8 
 9 acl othernet { 10  any; 11 };

 

  2.view 的配置

   View:視圖,將ACL和區域數據庫實現對應關系,以實現智能DNS

    一個bind服務器可定義多個view,每個view中可定義一個或多個zone
    每個view用來匹配一組客戶端
    多個view內可能需要對同一個區域進行解析,但使用不同的區域解析庫文件
   注意:
    一旦啟用了view,所有的zone都只能定義在view中,所以需要將原來的根域的配置(zone "." ) 移到其他配置中,我此處移到了/etc/named/rfc1912.conf中

    而且需要將include "/etc/named.rfc1912.conf" 刪除
    僅在允許遞歸請求的客戶端所在view中定義根區域
    客戶端請求到達時,是自上而下檢查每個view所服務的客戶端列表

view beijing { match-clients { beijingnet;}; #match-clients 中的一定要與acl的名稱匹配 include "/etc/named.beijing"; }; view shanghai { match-clients { shanghainet;}; include "/etc/named.shanghai"; }; view other { match-clients { othernet;}; include "/etc/named.other"; }; include "/etc/named.root.key";

  3.配置zone文件

  配置zone根前面一樣,如下。

zone "baidu.com" {
        type master;
        file "beijingnet";
};

  此處我創建了三個文件分別對應三個區域,格式都一樣,只是file 指向了不一樣的資源解析文件。

  4.資源解析記錄

  創建與zone對應的資源解析文件,zone文件有三個,所以資源解析文件也與之相匹配。

  在資源解析文件中需要增加別名記錄與A記錄,其他的都一樣。

  

 1 [root@CentOS-8 named]# cat *net  2 $TTL 1D  3 @ IN SOA master mail (  4                 000000001
 5  1D  6  3H  7  1D  8  1D  9 ) 10 @ IN NS master 11 master     IN  A     192.168.39.8
12 www IN CNAME web 13 web        IN  A     192.168.39.6    
14 
15 
16 
17 
18 $TTL 1D 19 @ IN SOA master mail ( 20                 000000001
21  1D 22  3H 23  1D 24  1D 25 ) 26 @ IN NS master 27 master     IN  A     192.168.39.8
28 www IN CNAME web 29 web        IN  A     192.192.39.27    
30 
31 
32 
33 
34 $TTL 1D 35 @ IN SOA master mail ( 36                 000000001
37  1D 38  3H 39  1D 40  1D 41 ) 42 @ IN NS master 43 master     IN  A     192.168.39.8
44 www IN CNAME web 45 web        IN  A     192.168.39.17

  8.總結

    NS記錄往往跟一條A記錄把名字解析為IPV4的地址

    NS記錄和A可實現子域委派,主從服務器。

    CNAME配合A記錄實現CND,

    主服務器只可允許從服務器同步。從服務器不可任何主機同步(allow-transfer {none;};)

    子域的委派和DNS轉發需要關閉如下

    關閉dnsec功能
    dnssec-enable no;
    dnssec-validation no;

    

   

     

 

 

    

    

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM