主從DNS域名解析伺服器

sarynsuo發表於2021-01-03

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

DNS的定義

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

域名結構

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

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

根域

位於域名空間最頂層,一般用一個 “.” 表示

頂級域

一般代表一種型別的組織機構或國家地區,
如 .net(網路供應商)、.com(工商企業)、.org(團體組織)、.edu(教育機構)、.gov(政府部門)、.cn(中國國家域名)

二級域

用來標明頂級域內的一個特定的組織,國家頂級域下面的二級域名由國家網路部門統一管理,
如 .cn 頂級域名下面設定的二級域名:.com.cn、.net.cn、.edu.cn

子域

二級域下所建立的各級域統稱為子域,各個組織或使用者可以自由申請註冊自己的域名

主機

主機位於域名空間最下層,就是一臺具體的計算機,
如 www、mail都是具體的計算機名字,可用www.sina.com.cn.、mail.sina.com.cn. 來表示,這種表示方式稱為 FQDN (完全合格域名),也是這臺主機在域名中的全名

DNS域名解析方式:

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

DNS伺服器型別:

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

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

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

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

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

1.安裝bind軟體包
yum install -y bind

2.配置正向解析
(1)先檢視需要修改的配置檔案所在路徑

/etc/named.conf					#主配置檔案
/etc/named.rfc1912.zones		#區域配置檔案
/var/named/named.localhost		#區域資料配置檔案

(2)修改主配置檔案

options {
    listen-on port 53 { 192.168.80.10; };	●監聽53埠,ip地址使用提供服務的本地IP,也可用any表示所有
#listen-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";	#記憶體統計檔案的位置
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    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)修改區域配置檔案,新增正向區域配置

zone "benet.com" IN {				●正向解析“benet.com”區域
        type master;				#型別為主區域
        file "benet.com.zone";		●指定區域資料檔案為benet.com.zone
        allow-update { none; };
};

(4)配置正向區域資料檔案

cp -p named.localhost benet.com.zone	#保留原始檔的許可權和屬主的屬性複製
vim /var/named/benet.com.zone
$TTL 1D														#設定快取解析結果的有效時間
@       IN SOA  benet.com. admin.benet.com. (
                                        0       ; serial			
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.									#記錄當前區域的DNS伺服器的名稱
		A		192.168.126.10								#記錄主機IP地址
www IN	A       192.168.126.10								#記錄正向解析www.benet.com對應的IP
mail IN A       192.168.126.11
ftp	IN	CNAME	www											#CNAME使用別名,ftp是www的別名
*	IN	A		192.168.126.100							#泛域名解析,“*”代表任意主機名
						
#“@”這裡是一個變數,當前DNS區域名
#SOA標記用於同步主從伺服器的區域資料,如更新序列號相同則不會更新
#“benet.com.”此為完全合格域名(FQDN),後面有個“.”不能漏掉
#“admin.benet.com.”表示管理員郵箱,這裡的“@”是變數,所以用“.”表示

(5)在客戶端的域名解析配置檔案中新增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

(6)啟動服務,關閉防火牆

systemctl stop firewalld
setenforce 0	
#如果服務啟動失敗,可以檢視日誌檔案來排查錯誤
tail -f /var/log/messages
#如果服務啟動卡住,可以執行下面命令解決
rndc-confgen -r /dev/urandom -a

(7)測試DNS解析

nslookup www.benet.com

3.配置反向解析
(1)修改區域配置檔案,新增反向區域配置

zone "80.168.192.in-addr.arpa" IN {				●反向解析的地址倒過來寫,代表解析192.168.80段的地址
        type master;
        file "benet.com.zone.local";			●指定區域資料檔案為benet.com.zone.local
        allow-update { none; };
};

(2)配置反向區域資料檔案

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.80段地址
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      benet.com.
        A       192.168.80.10
200 IN  PTR     www.benet.com.

#PTR為反向指標,反向解析192.168.80.200地址結果為www.benet.com.

(3)重啟服務進行測試

host 192.168.80.200
nslookup 192.168.80.200

4.構建主從域名伺服器
(1)修改主域名伺服器的區域配置檔案,修改正、反向區域配置

zone "benet.com" IN {
		type master;                  				●型別為主區域
		file "benet.com.zone";
		allow-transfer { 192.168.80.11; };  		●允許從伺服器下載正向區域資料,這裡添從伺服器的IP地址
};

zone "80.168.192.in-addr.arpa" IN {			
        type master;
        file "benet.com.zone.local";		
        allow-transfer { 192.168.80.11; };
};

(2)修改從域名伺服器的主配置檔案

vim /etc/named.conf
options {
    listen-on port 53 { 192.168.80.11; };	●監聽53埠,ip地址使用提供服務的本地IP即可,也可用any代表所有
#listen-on-v6 port 53 { ::1; };			
    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";	
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; }; 				●允許使用本DNS解析服務的網段,也可用any代表所有
	……
}

(3)修改從域名伺服器區域配置檔案,新增正、反區域配置

zone "benet.com" IN {
		type slave;							●型別為從區域
		masters { 192.168.80.10; };			●指定主伺服器的IP地址
		file "slaves/benet.com.zone";   	●下載的區域資料檔案儲存到slaves/目錄下
};

zone "80.168.192.in-addr.arpa" IN {	
        type slave;
		masters { 192.168.80.10; };
        file "slaves/benet.com.zone.local";
};

(4)主、從都重啟動服務,並檢視區域資料檔案是否已下載成功

ls -l /var/named/slaves/

(5)在客戶端的域名解析配置檔案中新增從DNS伺服器地址

(6)測試

nslookup 192.168.80.200

#停止主伺服器的服務,模擬主伺服器故障
systemctl stop named
host 192.168.80.200
nslookup 192.168.80.200


相關文章