1. 程式人生 > 其它 >Linux中的DNS正向解析與反向解析

Linux中的DNS正向解析與反向解析

目錄

一、DNS概念

在日常生活中人們習慣使用域名訪問伺服器,但機器間互相只認IP地址,域名寫IP地址之間是多對一的關係,一個ip地址不一定只對應一個域名,且一個完整域名只可以對應一個ip地址,它們之間的轉換工作稱為域名解析,域名解析需要由專門的域名解析伺服器來完成,整個過程是自動進行的

1、 DNS的定義

DNS是“域名系統"的英文縮寫。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。DNS服務使用TCP和UDP的53埠,TCP的53埠用於連線DNS伺服器,UDP的53埠用於解析DNS。每一級域名長度的限制是63個字元,域名總長度則不能超過253個字元。

2、 DNS系統的作用

正向解析:根據域名查詢對應的IP地址
反向解析:根據IP地址檢視對應的域名

3、DNS系統的分散式資料結構

4、 域名結構

http: / /www. sina. com. cn./
http://主機名.子域.二級域.頂級域 根域/

5、域名結構分析

樹狀結構最頂層稱為根域,用“."表示,相應伺服器稱為根伺服器,整個域名空間解析權都歸根伺服器所有,但根伺服器無法承擔龐大的負載,採用“委派”機制,在根域下設定了–些頂級域,然後將不同頂級域解析權分別委派給相應的頂級域伺服器,如將com域的解析權委派給com域伺服器,以後但凡根伺服器收到以com結尾的域名解析請求,都會轉發給com域伺服器,同樣道理,為了減輕頂級域的壓力,又下設了若干二級域,二級域又下設三級域或主機。

根域:處於域名結構的最頂端,一般用一個“ . ” 表示;
頂級域:一般代表一種型別的組織機構或者國家地區,如:
.net(網路供應商)
.com(工商企業)
.org(團體組織)
.edu(教育機構)
.gov(政府部門)
.cn(中國國家域名)
二級域:用來標明頂級域內的一個特定的組織,國家頂級域下面的二級域名由國家網路部門統一管理,頂級域名下面設定的是二級域名,如:
.com.cn
.net.cn
.edu.cn
子域:二級域下所建立的各級域統稱為子域,各個組織或使用者可以自由申請註冊自己的域名;
主機:主機位於域名結構的最下層,就是一臺具體的計算機,如:www、mail都是具體的計算機名字,可以用www.baidu.com.cn.來表示,這種方式稱為FQDN(完全合格域名),也是這臺主機在域名中的全名

6、 DNS伺服器的型別

6.1 主域名伺服器

負責維護一個區域的所有域名資訊,是特定的所有資訊的權威資訊源,資料可以修改;構建主域名伺服器時,需要自行建立所負責區域的地址資料檔案。

6.2 從域名伺服器

起備用域名伺服器的作用,當主域名伺服器出現故障、關閉或者負責過重時,從域名伺服器作為備份伺服器提供域名解析服務。從域名伺服器提供的解析結果不是由自已決定的,而是來自於主域名伺服器。構建從域名伺服器時,需要指定主域名伺服器的位置,以便伺服器能自動同步區域的地址資料庫。

6.3 快取域名伺服器

快取域名伺服器:只提供域名解析結果的快取功能,目的在於提高查詢速度和效率,但沒有域名資料庫。它從某個遠端伺服器取得每次域名伺服器查詢的結果,並將它放在快取記憶體中,以後查詢相同的資訊時用它予以響應。快取域名伺服器不是權威性伺服器,因為提供的所有資訊都是間接資訊。構建快取域名伺服器時,必須設定根域或指定其他DNS伺服器作為解析來源。

6.4 轉發域名伺服器

負責所有非本地域名的本地查詢。轉發域名伺服器接到查詢請求後,在其快取中查詢,如找不到就將請求依次轉發到指定的域名伺服器,直到查詢到結果為止,否則返回無法對映的結果。

7、DNS域名解析過程

首先要知道域名的結構有:主機名、子域、二級域、頂級域、根域

客戶端發出請求後,首先找到根域伺服器,根域伺服器會委派給頂級域伺服器,頂級域伺服器再委派給二級域伺服器,二級域伺服器再委派給子域伺服器,子域伺服器根據主機名的對映解析,解析出對應的IP地址,返還給客戶端,客戶端再使用IP地址進行訪問

7.1 遞迴查詢

遞迴查詢是一種DNS 伺服器的查詢模式,在該模式下DNS 伺服器接收到客戶機請求,必須使用一個準確的查詢結果回覆客戶機。如果DNS 伺服器本地沒有儲存查詢DNS 資訊,那麼該伺服器會詢問其他伺服器,並將返回的查詢結果提交給客戶機。

7.2 迭代查詢

DNS 伺服器另外一種查詢方式為迭代查詢,DNS 伺服器會向客戶機提供其他能夠解析查詢請求的DNS 伺服器地址,當客戶機發送查詢請求時,DNS 伺服器並不直接回複查詢結果,而是告訴客戶機另一臺DNS 伺服器地址,客戶機再向這臺DNS 伺服器提交請求,依次迴圈直到返回查詢的結果為止。

7.3 遞迴查詢與迭代查詢的示意圖

二、使用BIND構建域名伺服器

1、構建域名伺服器準備工作

1.1 BIND (Berkeley Internet Name Daemon)

• BIND是應用最廣泛的DNS服務程式

1.2 相關軟體包

• bind-9.9.4-37.el7.x86_ 64.rpm
• bind-utils-9.9.4-37.el7.x86_64.rpm
• bind-libs-9.9.4-37.el7 .x86_ 64.rpm
• bind-chroot-9.9.4-37.el7.x8664.rpm

1.3 BIND伺服器端程式

• 主要執行程式: /usr/sbin/named

• 預設監聽埠: 53

• 主配置檔案
◆/etc/named.conf

• 儲存DNS解析記錄的資料檔案位於
◆/var/named/

三、構建DNS域名解析伺服器步驟

1 、安裝bind軟體包,檢視需要修改的配置檔案所在路徑

rpm -qc bind                           #查詢bind軟體配置檔案所在路徑yum install -y bind                                             #安裝bind程式
/etc/ named. conf                    #主配置檔案
/etc/ named.rfc1912.zones            #區域配置檔案
/var/named/named.localhost           #區域資料配置檔案

2、 修改主配置檔案

vim /etc/ named.conf
options {
   listen-on port 53 { 192.168.80.10; };                                              #監聽53埠,ip地址使用提供服務的本地IP,也可用any表示所有
   1isten-on-v6 port 53 { ::1; };                                                          #ipv6行如不使用可以註釋掉或者刪除
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.80.0/24; 172.16.100.0/24; };                       #允許使用本DNS解析服務的網段,也可用any代表所有
.....
}
 
zone "." IN {                                                                                       #正向解析“."根區域
    type hint;                                                                                      #型別為根區域
    file "named.ca";                                                                            #區域資料檔案為named.ca,記錄了13臺根域伺服器的域名和IP地址等資訊
};
include "/etc/named.rfc1912.zones";                                              #包含區域配置檔案裡的所有配置

3、 修改區域配置檔案,新增正向區域配置

vim /etc/named.rfc1912.zones                                                #檔案裡有模版,可複製粘貼後修改
zone "benet.com" IN  {                                                           #正向解析"benet.com"區域
type master;                                                                           #型別為主區域
file "benet.com.zone";                                                           #指定區域資料檔案為benet.com.zone
allow-update { none; } ;
};

4、 配置正向區域資料檔案

cd  /var/named/
cp -p named. localhost benet. com. zone                                           #保留原始檔的許可權和屬主的屬性複製
vim /var/ named/benet .com.zone
$TTL 1D                                                                                                #有效解析記錄的生存週期
@       IN SOA benet.com.admin.benet.com. (                                     #“@"符號表示當前的DNS區域名
                                      0     ; serial                                                     #更新序列號,可以是10位以內的整數
                                     1D     ; refresh                                                 #重新整理時間,重新下載地址資料的間隔
                                     1H     ; retry                                                     #重試延時,下載失敗後的重試間隔
                                     1W     ; expire                                                 #失效時間,超過該時間仍無法下載則放棄
                                     3H )   ; minimum                                            #無效解析記錄的生存週期
                                     
        NS    benet. com.                                                                          #記錄當前區域的DNS伺服器的名稱
        A     192.168.80.10                                                                       #記錄主機IP地址
IN   MX 10    mail.benet.com.                                                             #Mx為郵件交換記錄,數字越大優先順序越低
www  IN A     192. 168.80.10                                                             #記錄正向解析www.benet.com對應的IP
mail IN A     192. 168.80.11
ftp  IN CNAME WWW                                                                       #CNAME使用別名,ftp是www的別 名
*    IN A     192.168.80.100                                                                #泛域名解析,“*"代表任意主機名
 
 
#“@"這裡是一個變數,當前DNs區域名
#SOA記錄中的更新序列號用於同步主、從伺服器的區域資料,當從伺服器判斷區域更新時,若發現主伺服器中的序列號與本地區域資料中的序列號相同,則不會進行下載
# "benet.com.”此為完全合格域名(FQDN) ,後面有個“. "不能漏掉
#“admin. benet. ccm.”表示管理員郵箱,這裡的“@”符號已有其他含義,所以用“."代替

5、 啟動服務,關閉防火牆

systemctl start named
systemctl stop firewalld
setenforce 0
 
#如果服務啟動失敗,可以檢視日誌檔案來排查錯誤
tail -f /var/log/messages
 

6、 在客戶端的域名解析配置檔案中新增DNS伺服器地址

vi /etc/resolv.conf                                                  #修改完後立即生效
nameserver 192.168.80.10
或
vi /etc/sysconfig/network-scripts/ifcfg-ens33      #修改完後需要重啟網絡卡
DNS1=192.168.80.10
systemctl restart network

四、例項操作一:構建域名伺服器的正向解析

1、安裝bind軟體包,檢視需要修改的配置檔案所在路徑


  


  

2、修改主配置檔案

3、修改區域配置檔案,新增正向區域配置

4、配置正向區域資料檔案(先複製資料配置檔案,再修改複製的檔案)

5、啟動服務,關閉防火牆

6、在/etc/resolv.conf中修改域名地址

7、DNS域名解析測試

五、配置反向解析的步驟

1.掛載,安裝bind軟體包,檢視需要修改的配置檔案所在路徑

rpm -qc bind                                   #查詢bind軟體配置檔案所在路徑
/etc/ named. conf                          #主配置檔案
/etc/ named.rfc1912.zones           #區域配置檔案
/var/named/named.localhost      #區域資料配置檔案

2.修改主配置檔案

vim /etc/ named.conf
options {
   listen-on port 53 { 192.168.80.10; };                                                        #監聽53埠,ip地址使用提供服務的本地IP,也可用any表示所有
   1isten-on-v6 port 53 { ::1; };                                                                   #ipv6行如不使用可以註釋掉或者刪除
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.80.0/24; 172.16.100.0/24; };                                 #允許使用本DNS解析服務的網段,也可用any代表所有
.....
}
 
zone "." IN {                                                                                              #正向解析“."根區域
    type hint;                                                                                             #型別為根區域
    file "named.ca";                                                                                  #區域資料檔案為named.ca,記錄了13臺根域伺服器的域名和IP地址等資訊
};
include "/etc/named.rfc1912.zones";                                                    #包含區域配置檔案裡的所有配置

3.修改區域配置檔案,新增反向區域配置

vim /etc/named.rfc1912.zones                         #檔案裡有模版,可複製粘貼後修改
zone "80.168.192.in-addr.arpa" IN {                 #反向解析的地址倒過來寫,代表解析192.168.116段的地址
    type master;
    file "benet. com. zone. local";                      #指定區域資料檔案為benet.com.zone.local
    allow-update { none; } ;
};

4.配置反向區域資料檔案

cd /var/ named/
cp -p named. localhost benet .com.zone.local
 
vim /var/named/benet.com.zone.local
$TTL 1D
@   IN SOA benet.com.admin.benet.com. (                                 #這裡的“@”代表192.168.116段地址
                                  0    ; serial
                                 1D    ; refresh
                                 1H    ; retry
                                 1W    ; expire
                                 3H )  ; minimum
      NS      benet. com.
      A       192.168.80. 10
200 IN PTR    WWW.benet.com.
100 IN PTR    mail.benet.com.
 
#PTR為反向指標,反向解析192.168.80.200地址結果為www.benet.com.

六、例項二:構建域名伺服器的反向解析

1、修改/etc/named.rfc1912.zones配置檔案,新增反向區域配置

2、複製並配置反向區域資料檔案


 


  

3、在客戶端的域名解析配置檔案中新增DNS伺服器地址

 

4、重啟服務後進行解析測試