天天看點

企業内部DNS跨國配置案例一、步驟梳理二、bind配置檔案結構三、搭建過程四、結果測試五、測試工具六、注意事項七、安全相關七、實驗中遇到的坑

企業内部DNS跨國配置案例一、步驟梳理二、bind配置檔案結構三、搭建過程四、結果測試五、測試工具六、注意事項七、安全相關七、實驗中遇到的坑
背景介紹:總公司與北京分公司均由總公司進行統一管理。總公司的主從DNS擔任解析總公司伺服器與北京分公司的伺服器解析任務。總公司DNS委派其他兩個公司管理自己域下的伺服器解析任務。要求任何一個節點都能解析到公司全部域名的結果。這裡僅僅是搭建DNS伺服器,以解析的結果為驗證。是以暫不考慮網絡方面的事情,隻要確定DNS能互相解析就算配置成功。

一、步驟梳理

  • 設定主從伺服器的配置
  • 設定主伺服器位元組區域解析資料庫
  • bj.jd.com

    子域配置設定給自己管理
  • yd.jd.com

    sh.jd.com

    分别委派給各自的伺服器
  • 子域伺服器設定各自的區域解析資料庫
  • 子域伺服器設定将

    jd.com

    域轉發至主從伺服器中

二、bind配置檔案結構

本地解析檔案
   /etc/hosts
主配置檔案
   /etc/named.conf
   /etc/named.rfc1912.zones
   /etc/rndc.key
解析庫檔案
   /var/named
           \----slaves      #檔案夾,當為slave,則在master同步的資料放在此檔案
           \----named.ca        #網際網路根的資訊
           \----name            #自定義的資料檔案放在此目錄下           

三、搭建過程

1.主DNS伺服器

安裝bind并配置DNS的主配置檔案

//安裝bind
yum install bind
//
//配置bind的主配置檔案
vim /etc/named.conf
  listen-on port 53 { 10.0.0.57; };    //設定監聽的IP
  allow-query     { any; };            //設定允許所有人通路DNS服務
  forwarders { 114.114.114.114; };     //設定轉發,本機沒有的記錄全部轉發至其他DNS
  dnssec-enable no;                    //關閉DNS安全認證
  dnssec-validation no;                //關閉DNS安全确認
  include "/etc/named.rfc1912.zones";  //引入外部區域配置檔案
           

在區域配置檔案

/etc/named.rfc1912.zones

建立新的解析區域

//修改區域配置檔案
vim /etc/named.rfc1912.zones
  zone "jd.com" IN {                   //建立jd.com域
          type master;                 //在jd域為主DNS
          file "jd.com.zone";          //區域資料庫的配置檔案名稱,預設路徑在/var/named/.....
  }; 

  zone "bj.jd.com" IN {                //建立子域bj.jd.com
          type master;                 //在子域中為主DNS
          file "bj.jd.com.zone";       //區域資料庫的配置檔案名稱,預設路徑在/var/named/.....
  };
           

建立解析資料庫檔案,資料庫預設全部在

/var/named

目錄下,建立的區域資料庫檔案名一定要與上面配置的區域資料庫名稱一緻。NS類型的記錄為設定管理此域的伺服器,因為配置了主從兩個伺服器是以要将兩個伺服器都建立NS記錄。但是僅僅建立NS記錄是不夠的,因為用戶端通路的時候不能知道到底誰是NS伺服器,是以還需要給管理此域的伺服器建立一條A記錄,解析出管理此域的伺服器。

vim /var/named/jd.com.zone
  $TTL 1D
  @       IN SOA  dns1 root.jd.com. (
                                        16      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS      dns1                  //NS指定管理此域的伺服器
          NS      dns2                  //NS指定管理此域的伺服器
  sh      NS      dns.sh                //将sh子域委派給sh.jd.com進行管理
  yd      NS      dns.yd                //将yd子域委派給sh.yd.com進行管理
  dns1    A       10.0.0.57             //為管理此域的伺服器與子域伺服器建立A記錄
  dns2    A       10.0.0.56
  dns.sh  A       10.0.0.66
  dns.yd  A       10.0.0.67
  www     A       10.10.0.10            //為主伺服器直接管理的解析記錄建立A記錄
  oa      A       10.10.0.11
  sql     A       10.10.0.12
           

因在/etc/named.rfc1912.zones檔案中建立了兩個區域,是以一共要對應兩個區域解析資料庫。上面建立的資料庫時給jd.com建立的資料檔案。現在需要建立的是bj.jd.com的資料庫檔案,也就是Master伺服器自己管理的子域。因為總公司與北京分公司都在北京,是以主DNS直接自己管理自己的子域。

$TTL 1D
@       IN SOA   dns1 root.bj.jd.com. (
                                        5       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
        NS      dns2
dns1    A       10.0.0.57
dns2    A       10.0.0.56
ftp     A       10.20.0.12
oa      A       10.20.0.13           

2.從伺服器

修改從伺服器的主配置檔案

vim /etc/named.conf
options {
        listen-on port 53 { 10.0.0.56; };
        allow-query     { any; };
        recursion yes;
        dnssec-enable no; 
        dnssec-validation no; 
};
 include "/etc/named.rfc1912.zones";           

建立區域檔案,因為從伺服器隻是同步主伺服器的資料,是以不需要解析的資料庫檔案,隻需要設定好誰是主伺服器即可。

zone "jd.com" IN {                       //設定需要同步的區域,主從是相對于區域而言的是以要設定區域。
        type slave;                      //設定伺服器類型為slave從
        masters { 10.0.0.57 ;};          //設定主伺服器的IP位址
        file "slaves/jd.com.zone";       //主服務配置檔案都會在/var/named/slaves目錄下,設定同步回來的資料庫檔案名
};

zone "bj.jd.com" IN {                    //含義與上面類似,這裡設定同步自己管理的子域
        type slave;
        masters { 10.0.0.57 ;}; 
        file "slaves/bj.jd.com.zone";
};           

3.印度

後面印度分公司與上海分公司的配置除了設定一下需要轉發的區域,其他的跟之前的主伺服器配置都是大同小異。是以下面的僅僅對不通配置進行标注。

options {
        listen-on port 53 { 10.0.0.67; };
//      listen-on-v6 port 53 { ::1; };
        allow-query     { any; };
        recursion yes;
        dnssec-enable no;
        dnssec-validation no;
};
 include "/etc/named.rfc1912.zones";           

設定轉發區域。由于子公司僅僅管理自己的yd.jd.com域,那公司内部需要通路總公司的域名,就需要将其轉發至上遊的總公司。

zone "yd.jd.com" IN {
        type master;
        file "yd.jd.com.zone";
};

zone "jd.com" IN {                        //設定轉發,用戶端通路jd.com域時全部轉發至指定的伺服器
        type forward;
        forward first;
        forwarders {10.0.0.57;};         //設定轉發至10.0.0.57伺服器。
};
           

建立印度分公司的區域解析檔案

$TTL 1D
@       IN SOA  dns root.yd.jd.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns 
dns     A       10.0.0.67
oa      A       10.40.0.13
ftp     A       10.40.0.12           

4.上海

修改主配置檔案

options {
        listen-on port 53 { 10.0.0.66; };
        listen-on-v6 port 53 { ::1; };
        allow-query     { any; };
        recursion yes;
        dnssec-enable no;
        dnssec-validation no;
};
 include "/etc/named.rfc1912.zones";           

建立區域記錄,設定轉發

zone "sh.jd.com" IN {
        type master;
        file "sh.jd.com.zone";
};

zone "jd.com" IN {                        //設定轉發,用戶端通路jd.com域時全部轉發至指定的伺服器
        type forward;
        forward first;
        forwarders {10.0.0.57;};         //設定轉發至10.0.0.57伺服器。
};           

建立上海分公司自己管理的區域解析檔案。

$TTL 1D
@       IN SOA  dns root.sh.jd.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns
dns     A       10.0.0.66
ftp     A       10.30.0.12
oa      A       10.30.0.1           

四、結果測試

将windwos的DNS設定為10.0.0.66,然後嘗試解析10.0.0.67管理的域。成功得到解析結果。

企業内部DNS跨國配置案例一、步驟梳理二、bind配置檔案結構三、搭建過程四、結果測試五、測試工具六、注意事項七、安全相關七、實驗中遇到的坑

五、測試工具

dig [-t type] name [@SERVER] [query options]
dig隻用于測試dns系統,不會查詢hosts檔案進行解析
#常用組合
dig www.taobao.com @10.0.0.10                #指定以10.0.0.10為DNS進行解析
 dig +trace taobao.com                       #跟蹤解析的過程           

六、注意事項

  • 權限:BIND安裝時會建立一個使用者,BIND運作也是用此使用者的身份運作的。是以在解析的時候要確定建立的namde使用者擁有對資料可的讀權限。
  • 端口:在bind的主配置檔案named.conf確定監聽的端口已經設定、確定可以對所有人提供DNS服務。
  • 主從更新機制:當Master的版本号變大時,Slave才會同步Master上的資料。
  • SELinux:SELinux安全的可能讓自己也無法通路服務,索性直接關閉
  • Iptables:當任何配置都沒有錯誤的時候注意防火牆是否配置正确
  • 建立委派:建立委派一定要将主主配置檔案

    dnssec-enable

    dnssec-validation

    設定為no
  • 其他疑問:鳥哥的文章或許能解開你的疑惑 鳥哥官網

七、安全相關

在全局配置檔案中/etc/named.conf可以配置與安全相關的選項

  • allow-query {}: 允許查詢的主機;白名單
  • allow-transfer {}:允許區域傳送的主機;白名單
  • allow-recursion {}: 允許遞歸的主機,建議全局使用
  • allow-update {}: 允許更新區域資料庫中的内容

七、實驗中遇到的坑

  • 啟動服務時提示:Failed to start Berkeley Internet Name Domain (DNS).

    解決辦法:多半是因為配置檔案寫錯,根據systemclt status named 檢視報警的具體配置

  • rndc reload同步配置rndc: neither /etc/rndc.conf nor /etc/rndc.key was found

    解決辦法:這個是由于key的問題,可以忽略不管付

    傳送門
  • 添加域後重新開機服務提示 loading from master file sh.jd.com.zone; failed: file not found

    解決辦法:檢查主配置檔案與資料庫檔案的名字是否相符

  • 建立委派後提示:zone jd.com/IN: sh.jd.com/NS 'sh.jd.com' (out of zone) has no addresses records (A or AAAA)配置檔案檢查無誤,傳回但是解析無傳回結果

    解決辦法:在父域中建立委派,然後通過named-checkzone指令檢查區域配置檔案,一直提示A記錄不存在。檢查父域到子域能否ping通,檢查子域防火牆是否關閉