BindDNS服務——DNS正向解析

連結: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等常用工具。
highlighter- code-theme-dark Bash

[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與防火牆(防火牆可選擇開放相應服務或埠)
highlighter- code-theme-dark Bash

[root@localhost ~]

# setenforce 0 (臨時關閉SElinux,重啟系統後SElinux將回到Enforcing狀態)
[root@localhost ~]# systemctl stop firewalld && systemctl disable firewalld(關閉防火牆與禁止防火牆開啟自啟動)

永久關閉SElinux方法
highlighter- code-theme-dark Bash
[root@localhost ~]# vim /etc/sysconfig/selinux
將檔案內的 SELINUX=enforcing 改為 SELINUX=disabled
防火牆配置
highlighter- code-theme-dark Bash

[root@localhost ~]

# firewall-cmd –add-service=dns –permanent
[root@localhost ~]# firewall-cmd –reload

(亦可開放tcp與udp53埠,若使用rndc則需開啟tcp/953埠)

實驗步驟

Bind主配置檔案為/etc/named.conf,DNS區域檔案儲存與/var/named下,服務名稱為named,服務賬戶為named,首先配置主配置檔案。
highlighter- code-theme-dark Bash
[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目錄
highlighter- code-theme-dark CSS
[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檔案的內容開始,修改該檔案的內容。
highlighter- code-theme-dark Bash

[root@localhost named]

# cp named.localhost test.com.zones
[root@localhost named]# vim 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相關資訊。

  1. NS記錄指定了那些主機能夠為該域提供解析。
  2. A記錄則是指定域名與IP地址關係的記錄。
  3. AAAA則是IPV6的解析。

    記錄的一般形式為 [域名] [型別] [IP地址]

    若域名為空,則會自動填充@在其中。

下面進行配置,結果如下圖。

為什麼部分A記錄採用的是完全合格域名(FQDN),其他的則只需要整個域名的其中一部分呢?它們之間並沒有區別,因為在區域檔案中隱藏著一個變數——$ORIGIN。

這個變數實際上代表著區域名稱後跟一個.(英文句點),它會對不是完全合格域名的記錄進行補齊。

所以實際上NS記錄的完整形式是 test.com. NS dns.test.com.

這樣減輕了配置量,也使配置檔案的可讀性提高了,簡單的區域檔案編寫完畢,可以啟動服務以提供解析服務。


啟動服務與功能檢測

highlighter- code-theme-dark Bash

[root@localhost named]

# chgrp named test.com.zones

修改檔案所有者以使得named賬戶可讀。

[root@localhost named]# systemctl enable –now named(開啟自啟服務並啟動服務)

使用主機測試DNS解析是否正常。(解析成功)

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


相關文章