1. 程式人生 > >域名解析系統 —— DNS服務

域名解析系統 —— DNS服務

前言:

最近整理一些以前的學習筆記。
過去都是儲存在本地,此次傳到網路留待備用。


 

DNS

  • 域名系統(Domain Name System)
  • 作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路
  • 目前,每一級域名長度的限制是63個字元,域名總長度則不能超過253個字元
  • 協議: TCP/UDP
  • 預設埠: 53
  • DNS伺服器的功能:
    • 正向解析:根據註冊的域名查詢對應的ip地址
    • 反向解析:根據ip地址查詢對應的註冊域名,不常用
  • FQDN(Full Qualified Domain Name),完整合格域名

    • 網站名 = 伺服器名.域名字尾
    • www.pku.edu.cn = 站點名.***.二級域.一級域
  • 所有完整的域名都會以 .(點) 結尾:

                根域 .
      ┌─────┬─────┼─────┬─────┬─────┬──────┬─
    .com   .cn   .us   .tw   .kr   .hk   .......  #一級DNS伺服器
      ┌─────┴────┬─────────┬─────────┬─
    .com.cn   .net.cn   .org.cn  .edu.cn          #二級DNS伺服器
      ├─────────────────┬───────────────┬─
    .lala.com.cn   .haha.com.cn   .xixi.com.cn    #三級DNS伺服器
          ├─────────────────────┬─
      web1.lala.com.cn    tts.lala.com.cn         #完整主機名
    
  • 常見的頂級域名/一級域名:

    國家/地區域.cn.us.kr.hk.tw...
    組織域.com.net.edu.org.gov...

 

DNS解析庫

  • 資源記錄:rr(resource record),有型別的概念;用於此記錄解析的屬性。

    | 資源記錄 | 名稱 | 意義 | | ------------ | ------------ | ------------ | A | Address地址 IPv4 | 此記錄列出特定主機名的 IP 地址 AAAA | Address地址 IPv6 | NS | Name Server域名伺服器 | 此記錄指定負責給定區域的名稱伺服器 SOA | Start of Authority授權狀態 | MX | Mail Exchanger郵件交換 | 此記錄列出了負責接收發到域中的電子郵件的主機 CNAME | Canonical Name規範名 | 此記錄指定標準主機名的別名 PTR | Pointer指標 |

 

DNS查詢過程

  • DNS查詢機制:

    • 遞迴查詢(Recursive Query)
      • 首選DNS伺服器,跑到相應其他DNS伺服器上,將詢問的最終結果帶回來的過程
      • 客戶端與首選DNS伺服器互動
      • 預設開啟遞迴查詢( recursion yes|no )
    • 迭代查詢(Iterative Query)
      • 首選DNS伺服器與其他DNS伺服器互動
  • DNS的查詢順序:

      1、本地hosts檔案   2、本地DNS快取   3、本地DNS伺服器   4、發起迭代查詢
    

 

BIND域名服務

  • Berkeley Internet Name Domain , 伯克利因特網域名服務
  • 是目前世界上使用最為廣泛的DNS伺服器軟體,支援各種unix平臺和windows平臺
  • 官網: https://www.isc.org/
  • 軟體:
    • bind , 域名服務包
    • bind-chroot , 提供虛擬根支援,依賴bind
  • 系統服務: named
  • 協議埠: TCP/UDP 53
  • 執行時的虛擬根路徑: /var/named/chroot
  • 主配置檔案: /etc/named.conf      //設定負責本機解析的域名
  • 地址庫檔案: /var/named      //主機名與ip地址的對應關係


 

一、搭建基本的DNS伺服器

svr7.test.cn  ---> 192.168.4.7
pc207.test.cn ---> 192.168.4.207
www.test.cn   ---> 192.168.4.100

服務端(192.168.4.7)

1.安裝軟體包

]# yum -y install bind bind-chroot

2.修改配置檔案

]# vim /etc/named.conf
options {
    listen-on port 53 { 192.168.4.7; };   #監聽伺服器的地址和埠
    directory    "/var/named";            #預設,指定地址庫檔案存放路徑
    allow-query  { any; };                #允許任何客戶機查詢
};
zone    "test.cn"    IN {          #指定本機負責解析的域名
    type    master;                #指定本機為權威的主DNS伺服器
    file    "test.cn.zone";        #指定地址庫檔案為test.cn.zone
};

]# named-checkconf /etc/named.conf  #檢查配置檔案語法

3.建立地址區域檔案

]# cd /var/named/                           #準備模板檔案
]# cp -p named.localhost test.cn.zone       #許可權屬性不變拷貝模板
]# ls -l test.cn.zone
-rw-r----- 1 root named 152 6月  21 2007 test.cn.zone

]# vim test.cn.zone                 #編輯區域檔案
$TTL 1D                                 ;TTL=Time To Live=生存時間
@   IN SOA  @ rname.invalid. (          ;SOA=Start Of Authority=授權資訊開始,@區域名
                    0   ; serial,序列號        ;分號; 開始的部分表示註釋
                    1D  ; refresh,重新整理時間
                    1H  ; retry,重試時間間隔
                    1W  ; expire,過期時間
                    3H )    ; minimum,無法解析時否定答案的TTL值
test.cn.   NS  svr7          ;NS=NameServer,宣告test.cn.域名的DNS伺服器為svr7.test.cn.
svr7       A   192.168.4.7   ;指定svr7.test.cn.的ip地址為192.168.4.7
www        A   1.1.1.1    
ftp        A   2.2.2.2

]# named-checkzone test.cn test.cn.zone     #檢查配置檔案,命令 區域名 配置檔案
zone test.cn/IN: loaded serial 0
OK                                         #檢查結果ok

4.啟服務

]# systemctl restart named
]# systemctl enable named

 

客戶端

1.設定DNS伺服器

]# echo 'nameserver    192.168.4.7 > /etc/resolv.conf'

2.檢測域名解析

  • host
    ]# host svr7.test.cn
    svr7.test.cn has address 192.168.4.7
    
  • nslookup
    ]# nslookup www.test.cn
    Server:		192.168.4.7
    Address:	192.168.4.7#53
    Name:	www.test.cn
    Address: 1.1.1.1
    


 

二、多區域DNS服務

1.修改配置檔案(接上例192.168.4.7)

]# vim /etc/named.conf          #追加新的區域
zone  "qq.com"   IN  {
    type master;
    file  "qq.com.zone";
};

2.編輯區域檔案

]# cp -p /var/named/test.cn.zone /var/named/qq.com.zone
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS  svr7   
svr7     A   192.168.4.7
www      A   3.3.3.3
ftp      A   4.4.4.4

3.重啟服務

]# systemctl restart named

4.客戶端測試

]# nslookup www.qq.com
Server:		192.168.4.7
Address:	192.168.4.7#53
Name:	www.qq.com
Address: 3.3.3.3

 

三、特殊的解析記錄

接上例

1.基於DNS域名的負載均衡:

#服務端
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7 
svr7      A    192.168.4.7
www       A    192.168.4.11         ;配置www的負載均衡
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4

]# systemctl restart named

#客戶端測試
]# nslookup www.qq.com
Server:		192.168.4.7
Address:	192.168.4.7#53
Name:	www.qq.com
Address: 192.168.4.12
Name:	www.qq.com
Address: 192.168.4.13
Name:	www.qq.com
Address: 192.168.4.11

2.泛域名解析:

伺服器:
]# cd /var/named
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7
svr7      A    192.168.4.7
www       A    192.168.4.11
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4
*         A    1.2.3.4            ;泛域名解析
]# systemctl restart named

客戶端:
]# host ftp.qq.com
ftp.qq.com has address 4.4.4.4
]# host fan.qq.com
fan.qq.com has address 1.2.3.4

3.有規律的泛域名解析:

web1.qq.com------》192.168.10.1
web2.qq.com------》192.168.10.2
web3.qq.com------》192.168.10.3
web4.qq.com------》192.168.10.4
......
web50.qq.com------》192.168.10.50

函式: $GENERATE 生成連續範圍的數字

伺服器:
]# cd /var/named/
]# vim qq.com.zone
$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
qq.com.  NS    svr7
svr7      A    192.168.4.7
www       A    192.168.4.11
www       A    192.168.4.12
www       A    192.168.4.13
ftp       A    4.4.4.4
*         A    1.2.3.4            ;泛域名解析
$GENERATE  1-50  web$   A   192.168.10.$    ;使用$GENERATE函式生成有規律的泛域名解析

]# systemctl restart named

#客戶端
]# host web.qq.com
web.qq.com has address 1.2.3.4
]# host web1.qq.com
web1.qq.com has address 192.168.10.1
]# host web11.qq.com
web11.qq.com has address 192.168.10.11
]# host web50.qq.com
web50.qq.com has address 192.168.10.50

 

四、DNS的子域授權

接上例

父域    www.test.cn       總公司        svr7 伺服器 192.168.4.7
子域    www.bj.test.cn    北京分公司     pc207 伺服器 192.168.4.207
  • 父域主機配置子域授權(192.168.4.7)

    ]# cd /var/named
    ]# vim  test.cn.zone
    test.cn.     NS   svr7
    bj.test.cn.  NS   pc207.bj            ;指定子域的DNS伺服器
    svr7         A    192.168.4.7
    pc207.bj     A    192.168.4.207 
    www          A    1.1.1.1    
    ftp          A    2.2.2.2
    ]# systemctl restart named
    
  • 子域主機配置(192.168.4.207)

    ]# yum -y install bind bind-chroot      #安裝軟體
    ]# vim /etc/named.conf                  #修改配置檔案
    options  {
        directory  "/var/named";
    };
    zone  "bj.test.cn"   IN  {      ;解析子域域名
        type  master;
        file  "bj.test.cn.zone";
    };
    ]# cd /var/named
    ]# cp -p named.localhost bj.test.cn.zone
    ]# vim bj.test.cn.zone       #編輯區域檔案
    $TTL 1D
    @   IN SOA  @ rname.invalid. (
                        0   ; serial
                        1D  ; refresh
                        1H  ; retry
                        1W  ; expire
                        3H )    ; minimum
    bj.test.cn.   NS  pc207             ;設定域伺服器
    pc207         A   192.168.4.207   
    www           A   11.12.13.14
    ]# systemctl restart named              #重啟服務
    ]# systemctl enable named
    
  • 測試

    ]# nslookup www.bj.test.cn 192.168.4.207
    Server:		192.168.4.207
    Address:	192.168.4.207#53
    Name:	www.bj.test.cn
    Address: 11.12.13.14
    

 

五、快取DNS

  • 作用:加速解析過程,讓客戶端最快得到解析結果。

  • 軟體包:bind bind-chroot

  • 方式

    • 全域性轉發:

      • 將請求轉發給指定的公共DNS(其他快取DNS),請求遞迴服務。
    • 根域迭代:

      • 依次向根、一級、二級...域的DNS伺服器迭代。
  • 例項:

    • 思路:192.168.4.254作為快取DNS伺服器,真正的DNS是172.40.1.10

    1.安裝軟體包

    ]# yum -y install bind bind-chroot
    

    2.編輯配置檔案

    ]# cat /etc/resolv.comf
    nameserver 172.40.1.10
    
    ]# vim /etc/named.conf
    options {
        directory    "/var/named";
        forwarders    { 172.40.1.10; };     #當本地快取中沒有對應的解析時指定去172.40.1.10解析
    };
    ]# systemctl restart named
    

    3.客戶端.虛擬機器使用解析

    ]# nslookup www.360.com 192.168.4.254
    

 

六、Split分離解析

  • 讓客戶端訪問網路中最近的伺服器。
  • 當不同類別的客戶機請求解析同一個域名時,得到不同的解析結果(Ip)。
  • 當收到客戶機的DNS查詢請求的時候,能夠區分客戶機的來源地址,為不同類別的客戶機提供不同的解析結果(IP地址)。

BIND的view檢視

  • 根據源地址集合將客戶機分類,不同客戶機獲得不同結果(待遇有差別)。

    • 注意:客戶機分類得當(所有的客戶端都要找到對應的分類)
    • 注意:由上到下匹配,匹配即停止
    • 注意:所有的zone都必須在view欄位中
  • 格式:

    view    "檢視名"    {
     match-clients    { IP; }    //匹配客戶端地址
     zone    "解析的域名" {
     ...    地址庫1;
     }
    };
    
    view   "nsd"    {
     match-clients   {  192.168.4.207;  }   #匹配客戶端的地址
     zone "test.cn"    {
     ...... 地址庫1;
    }; };
    
    view   "abc"   {
     match-clients  {   any;   }             
     zone "test.cn"    {                           
     ...... 地址庫2;
    }; };
    
  • 例項,環境及需求:

    • 權威DNS:svr7.test.cn 192.168.4.7
    • 負責區域:test.cn
    • A記錄分離解析 —— 以 www.test.cn 為例
    • 客戶機的解析結果:
      • 192.168.4.207 -----> 192.168.4.100
      • 其他地址 ----------> 1.2.3.4
    操作步驟
    
    虛擬機器A
    1.修改配置檔案/etc/named.conf
    view  "nsa"  {
        match-client  { 192.168.4.207; };
        zone  "test.cn"  {
        type    master;
        file    "test.cn.nsd";
        };
    };
    view  "abc"  {
        match-client  { any; };
        zone  "test.cn"  {
        type  master;
        file  "test.cn.abc";
        };
    };
    
    2.建立地址庫檔案
    ]# vim /var/named/test.cn.nsd
    test.cn.    NS   svr7
    svr7        A    192.168.4.7
    www         A    192.168.4.100
    ]# vim /var/named/test.cn.abc
    test.cn.    NS   svr7
    svr7        A    192.168.4.7
    www         A    1.2.3.4
    
    3.重啟named服務
    ]# systemctl restart named
    
    4.在虛擬機器A、B分別測試解析
    
    

 

七、DNS快取使用變數

]# vim /etc/named.conf
options {
    directory    "/var/named";
};
acl 變數名 { 地址1; 地址2; 地址3; 地址4;...};
view "nsd" {
    match-clients { 變數名; };
    zone "test.cn" {
    type    master;
    file    "test.cn.nsd";
    };
};
view "abc" {
    match-clients { any; };
    zone "test.cn" {
    type    master;
    file    "test.cn.abc"