
連結:https://www.cnblogs.com/RichardLuo/p/DNS_P1.html

Linux基礎服務——Bind DNS服務 Part1
DNS正向解析
實驗環境:
CentOS8.3.2011 IP地址:192.168.100.50
VMware虛擬環境 NAT網段
需要解析的區域為 test.com
環境準備
Yum源配置(略),安裝net-tools vim等常用工具。
[root@localhost ~]
# yum install -y vim net-tools bind bind-utils
Last metadata expiration check: 0:00:07 ago on Thu 03 Jun 2021 08:07:03 AM EDT.
Package vim-enhanced-2:8.0.1763-15.el8.x86_64 is already installed.
Package net-tools-2.0-0.52.20160912git.el8.x86_64 is already installed.
Package bind-32:9.11.20-5.el8.x86_64 is already installed.
Package bind-utils-32:9.11.20-5.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to
do
.
Complete!關閉SElinux與防火牆(防火牆可選擇開放相應服務或埠)
[root@localhost ~]
# setenforce 0 (臨時關閉SElinux,重啟系統後SElinux將回到Enforcing狀態)
永久關閉SElinux方法
[root@localhost ~]# vim /etc/sysconfig/selinux
將檔案內的 SELINUX=enforcing 改為 SELINUX=disabled
防火牆配置
[root@localhost ~]
# firewall-cmd –add-service=dns –permanent
(亦可開放tcp與udp53埠,若使用rndc則需開啟tcp/953埠)
實驗步驟
Bind主配置檔案為/etc/named.conf,DNS區域檔案儲存與/var/named下,服務名稱為named,服務賬戶為named,首先配置主配置檔案。
[root@localhost ~]# vim /etc/named.conf
主配置檔案預設分為options中的全域性設定、logging的日誌設定 、zone定義的區域設定和include包含其他的配置檔案。
先檢視下列的部分全域性設定。

預設服務監聽在IPV4和IPV6的本地環回的53埠上(TCP/UDP),並定義了服務所使用的檔案與目錄,指定了允許訪問的主機,這些選項根據實際需要進行修改。我們將服務監聽所有地址上、並允許任何主機進行訪問。如下圖所示。

對於日誌的配置先按下不提,對於test.com這個域進行解析則需要先定義該區域。
如下圖,預設配置已經定義了根(hint)區域,幷包含了其他檔案中預定義的區域。

我們可以直接在主配置檔案中定義,也可以進入其他的配置檔案進行定義(不建議進入預設的引入的配置檔案定義區域),此處在主配置檔案中進行定義。
注意配置時行末需要新增分號
。

zone後跟雙引號內的內容為區域名稱
區域內的引數,type為區域型別。區域分為大致四個型別,分別是:
-
Forward(轉發)
-
master(主)
-
salve(從)
-
hint(根)
file指的是區域檔案儲存的位置,預設路徑是相對於/var/named目錄下的。
此時對主配置檔案的操作已經結束了
區域檔案編寫
接下來編寫區域檔案,進入/var/named目錄
[root@localhost ~]
# cd /
var
/named/
[root@localhost named]
# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves預設/var/named目錄具有以上內容,salves用於存放從域的區域檔案,named.ca存放dns的根伺服器的資訊,一般編寫區域檔案可以複製named.localhost檔案的內容開始,修改該檔案的內容。
[root@localhost named]
# cp named.localhost test.com.zones

預設檔案內容如上
對於@符號的意義如下(Bind官網文件),可以理解為這裡的@為區域名稱後加上一個. 在這裡的意思為test.com.
4.3.5.1. The @ (at-sign)When used in the label (or name) field, the asperand or at-sign (@) symbol represents the current origin. At the start of the zone file, it is the <zone_name>, followed by a trailing dot (.).
第一行的$TTL設定了DNS資訊的TTL 預設為1天
第二行則是本區域的SOA記錄,SOA這種記錄是所有區域性檔案中的強制性記錄。它必須是一個檔案中的第一個記錄。
緊隨SOA的@代表著該區域的主DNS伺服器,之後配置中我們將會替換該值,rname.invalid.為區域管理員的郵箱,郵箱地址中的@符號使用.進行替換。在後續括號中的內容則為其他的DNS相關資訊。
-
NS記錄指定了那些主機能夠為該域提供解析。
-
A記錄則是指定域名與IP地址關係的記錄。
-
AAAA則是IPV6的解析。記錄的一般形式為 [域名] [型別] [IP地址]若域名為空,則會自動填充@在其中。
下面進行配置,結果如下圖。

為什麼部分A記錄採用的是完全合格域名(FQDN),其他的則只需要整個域名的其中一部分呢?它們之間並沒有區別,因為在區域檔案中隱藏著一個變數——$ORIGIN。
這個變數實際上代表著區域名稱後跟一個.(英文句點),它會對不是完全合格域名的記錄進行補齊。
所以實際上NS記錄的完整形式是 test.com. NS dns.test.com.
這樣減輕了配置量,也使配置檔案的可讀性提高了,簡單的區域檔案編寫完畢,可以啟動服務以提供解析服務。
啟動服務與功能檢測
[root@localhost named]
# chgrp named test.com.zones
修改檔案所有者以使得named賬戶可讀。
[root@localhost named]# systemctl enable –now named(開啟自啟服務並啟動服務)使用主機測試DNS解析是否正常。(解析成功)

官方站點:www.linuxprobe.com
Linux命令大全:www.linuxcool.com

劉遄老師QQ:5604215
Linux技術交流群:2636170
(新群,火熱加群中……)
想要學習Linux系統的讀者可以點選"閱讀原文"按鈕來了解書籍《Linux就該這麼學》,同時也非常適合專業的運維人員閱讀,成為輔助您工作的高價值工具書!