Linux系統管理員進階:BIND DNS伺服器從入門到精通
文章目錄
-
• 案例:BIND 安裝與配置詳解 -
• -
• -
• 一、安裝 BIND 軟體包 -
• 二、配置 BIND 主伺服器(正向解析) -
• 三、配置反向解析 -
• 四、配置主從 DNS 伺服器及自動同步
案例:BIND 安裝與配置詳解
一、安裝 BIND 軟體包
-
1. 安裝 BIND 軟體包 -
• 透過網路源或掛載的光碟安裝 BIND: yum install bind -y
-
• 或者透過 RPM 包安裝,前提是掛載系統盤 ISO 映象: `rpm -ivh bind-x.x.x-x.el7.x86_64.rpm`
-
2. 檢視 BIND 配置檔案路徑 rpm -qc bind
該命令顯示 BIND 安裝後的配置檔案路徑,重要的幾個講解:
-
• /etc/named.conf
:主配置檔案,控制 BIND 服務的全域性設定。 該檔案用於配置 DNS 伺服器的行為,如區域(zones)、轉發器(forwarders)、ACL(訪問控制列表)等。 -
• /etc/named.rfc1912.zones
– 區域配置檔案,控制具體區域。專門用於定義 BIND 伺服器中使用的區域(zone)。 -
• /var/named/named.localhost
– 區域資料檔案,儲存區域資訊。
二、配置 BIND 主伺服器(正向解析)
本節環境
主伺服器:20.0.0.11
客戶端:Windows 10 或 Linux
-
1. 修改主配置檔案編輯 /etc/named.conf
檔案,配置監聽埠、區域資料存放位置及允許查詢的網段:`vim /etc/named.conf`
主要修改以下幾項:
配置示例:options { listen-on port 53 { 20.0.0.100; }; # ☆☆☆修改:監聽53埠,指定本地IP,也可用any表示所有IP。# 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"; # 記憶體統計檔案位置。# allow-query { 20.0.0.0/24; 172.16.100.0/24; }; allow-query { any; }; # ☆☆☆修改:允許訪問本DNS解析服務的網段,也可用any表示所有。};
-
• 監聽埠和 IP 地址:指定 BIND 服務監聽的埠和 IP 地址。 -
• 區域資料檔案的儲存路徑:指定區域資料檔案的儲存目錄。 -
• 允許查詢的網段:定義允許訪問 DNS 服務的客戶端網段。 -
2. 配置根區域在 named.conf
中定義根區域,根區域用於處理域名解析的根請求:zone "." IN { # 正向解析“."根區域type hint; # 型別為根區域(索引) file "named.ca"; # 區域資料檔案為named.ca};# named.ca檔案記錄了13臺根域伺服器的域名和IP地址等資訊include "/etc/named.rfc1912.zones"; # 包含區域配置檔案中的所有配置,儲存了標準的區域配置。
-
3. 配置正向區域 `vim /etc/named.rfc1912.zones`
提示:vim編輯器的使用配置示例:zone "my.com" IN { # ☆修改:正向解析"benet.com"區域type master; # 宣告該區域是主區域 file "my.com.zone"; # ☆修改:區域資料檔案的路徑,相對於/var/named路徑目錄,可以加個. allow-update { none; };# 不允許自動更新區域資料};
-
• 定位到起始行: j
或k
上下移動,G
直接跳行 -
• 進入可視模式: V
進可視行模式,高亮顯示當前行 -
• 選擇多行: j
向下選行,按一次選一行 -
• 複製選中的行:選中,按 y
進行復制到剪貼簿 -
• 移動到貼上位置:移動到要貼上的位置 -
• 貼上複製的行: p
貼上。當前行上方使用P
大P。 -
• 編輯區域配置檔案 /etc/named.rfc1912.zones
,檔案裡有模版,可複製粘貼後修改,新增正向解析區域: -
4. 配置正向區域資料檔案 cd /var/named/cp -p named.localhost my.com.zone# 保留原始檔的許可權和屬主的屬性複製vim my.com.zone
資料檔案通常包括 SOA 記錄、NS 記錄、A 記錄等。宏定義$,註釋;配置示例:$TTL 1D# $-宏定義# TTL(Time to Live)-快取生存時間,表示在 DNS 伺服器或客戶端的快取中,有效解析記錄的生命週期# 1D 表示 1 天,該區域資料在 1 天(1D)內有效@ IN SOA my.com. rname.invalid (# @-表示該檔案定義的根域名,當前的DNS區域名 # IN-表示“Internet”類的資源記錄型別。# SOA-第一條解析,起始記錄的解析## admin-主機名、服務名 0 ; serial # 序列號,表示該區域檔案的版本,每次修改後應增加 1D ; refresh # 重新整理時間,告知從伺服器多久查詢一次主伺服器 1H ; retry # 重試時間,從伺服器未聯絡到主伺服器後的重試間隔 1W ; expire # 過期時間,從伺服器未能更新後,快取資料的有效期 3H ) ; minimum # 最小TTL值,未命中的快取記錄的生存時間NS my.com. # 定義此區域的名稱伺服器A 20.0.0.11# A-將域名對映到IPV4# 為域名 my.com 設定IP地址## MX 10 mail.my.com. ## 定義郵件交換記錄www IN A 20.0.0.20# 定義子域名 www 的 A 記錄## mail IN A 20.0.0.20 ## 定義子域名 mail 的 A 記錄ftp IN CNAME www # CNAME-別名,將 ftp 子域名設定為 www 子域名的別名* IN A 20.0.0.20# *-萬用字元,匹配所有未明確定義的子域名,泛域名![]()
內容解釋: -
• @: 代表當前區域的根域名。 -
• 在 DNS 區域檔案中, @
代表該檔案定義的根域名,也就是當前區域的名稱。在實際使用中,@
將被解析為檔案頂部定義的域名。 -
• 例如,如果區域檔案頂部定義的域名是 example.com.
, 那麼@
就代表example.com.
。 -
• IN: 表示記錄的類別,一般為網際網路(Internet),通常情況下使用 IN
。 -
• 表示“Internet”類(Internet Class)的資源記錄型別。在大多數情況下,DNS 記錄都使用 IN
,因為它表示記錄屬於網際網路的標準 DNS 記錄型別。 -
• 除了 IN
之外,還有其他類,如CH
(用於 CHAOS 類),但它們非常少見。 -
• SOA (Start of Authority): 表示該 DNS 區域的起始記錄,包含了該區域的主要資訊,如序列號、重新整理時間等。 -
• SOA
是“Start of Authority”的縮寫,表示權威起始記錄。每個 DNS 區域檔案必須包含一個且只有一個 SOA 記錄。 -
• SOA
記錄包含了一些重要資訊,如主伺服器的名稱、負責人的電子郵件地址、區域的序列號、重新整理時間、重試時間、過期時間和最小 TTL(生存時間)值。 -
• NS (Name Server): 指定負責該區域的名稱伺服器。 -
• A (Address Record): 將域名對映到 IPv4 地址。 -
• CNAME (Canonical Name Record): 將一個域名作為別名指向另一個域名。 -
• MX (Mail Exchange Record): 指定處理電子郵件的郵件伺服器。 -
• TTL (Time to Live): 指定 DNS 記錄在快取中保留的時間長度,超過時間後需要重新查詢。 -
• 在 /var/named/
目錄下建立或修改區域資料檔案,這個檔案包含域名與 IP 地址的對映關係,可以直接複製改名原模板: -
5. 檢查啟動檔案格式 named-checkzone my.com /var/named/my.com.zone # 輸出:zone my.com/IN: loaded serial 0O
-
• 檢查: -
6. 啟動 BIND 服務並關閉防火牆 `systemctl start named`
systemctl stop firewalldsetenforce 0 # 關閉 SELinux
注意:若服務啟動失敗,可以檢視日誌檔案排查錯誤,如果服務卡住,執行第二行命令解決:tail -f /var/log/messagesrndc-confgen -r /dev/urandom -a
netstat -natpul | grep 53
`named-checkconf -z /etc/named.conf`
-
• 對域名語法進行檢查(named.conf): -
• 檢查埠,確認啟動成功 -
• 關閉防火牆以確保 DNS 服務的正常執行: -
• 啟動 BIND 服務: -
7. 客戶端配置和測試DNS解析(Windows)啟動同網段下的客戶端,以Windows為例 # 以我的網路環境為例,做如下配置IP 20.0.0.120 # 同網段即可NETMASK 255.255.255.0GATEWAY 20.0.0.11 # 指向DNS伺服器DNS 20.0.0.11
nslookup www.my.com # 解析www域名對應的IP地址# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:www.my.comAddress:20.0.0.20nslookup ftp.my.com # 解析ftp的別名對應的IP地址# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:www.my.comAddress:20.0.0.20nslookup aa.my.com # 解析泛域名對應的IP地址# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:www.my.comAddress:20.0.0.20![]()
都可以看到返回伺服器地址,測試成功 -
• cmd使用nslookup命令測試: -
• 在Windows下更改網絡卡配置: -
8. 客戶端配置和測試DNS解析(Linux) vim /etc/resolv.confnameserver 20.0.0.11
vim /etc/sysconfig/network-scripts/ifcfg-ens33DNS1=20.0.0.11systemctl restart network
host www.my.comnslookup www.my.com
-
• 使用 host
或nslookup
命令測試 DNS 解析是否成功: -
• 或者在網路介面配置檔案中新增 DNS 伺服器地址,修改後需重啟網絡卡: -
• 編輯客戶端的 /etc/resolv.conf
檔案,新增 DNS 伺服器地址:
三、配置反向解析
本節環境
主伺服器:20.0.0.11
客戶端:Windows 10 或 Linux
-
1. 配置反向區域 `vim /etc/named.rfc1912.zones`
在此檔案中定義 IP 地址段的區域資訊。同樣複製模版修改。配置示例:zone "0.0.20.in-addr.arpa" IN {# 此處 20.0.0.0 反向為 0.0.20# 再如:192.168.10.0 反向則是 10.168.192type master;# 定義主區域 file "my.com.zone.local";# 反向解析的資料檔案 allow-update { none; }; # 禁止自動更新}; ![]()
-
• 編輯區域配置檔案 /etc/named.rfc1912.zones
,新增反向解析區域: -
2. 配置反向區域資料檔案 cd /var/named/cp -p my.com.zone my.com.zone.localvim my.com.zone.local
資料檔案中通常包含 IP 地址與域名的對映。配置示例:$TTL 1D@ IN SOA my.com. rname.invalid. (# 點.必須加上,否則報錯,下同 0 ; serial # 序列號# 更新序列號,10位以內數字,用於主從同步,主伺服器這個數值要大於從伺服器否則無法同步 1D ; refresh # 重新整理時間 1H ; retry # 重試時間 1W ; expire # 過期時間 3H ) ; minimum # 最小TTLNS my.com.100 IN PTR www.my.com. # 將IP地址的最後一段(100)解析為www.my.com200 IN PTR mail.my.com. # 將IP地址的最後一段(200)解析為mail.my.com# 20是192.168.10.20的意思# RTP反向指標 功能:反向解析![]()
-
• 建立或修改反向區域資料檔案: -
3. 啟動 BIND 服務 `systemctl restart named`
-
• 啟動或重啟 BIND 服務: -
4. 測試反向解析(Windows)以Windows為例,確保網絡卡配置資訊無誤: # 以我的網路環境為例,做如下配置IP 20.0.0.120 # 同網段即可NETMASK 255.255.255.0GATEWAY 20.0.0.11 # 指向DNS伺服器DNS 20.0.0.11
nslookup 20.0.0.100 # 解析末段為 100 IP地址的域名# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:www.my.comAddress:20.0.0.100nslookup 20.0.0.200 # 解析末段為 200 IP地址的域名# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:mail.my.comAddress:20.0.0.200![]()
可以看到返回伺服器地址和域名資訊,測試成功 -
• cmd使用nslookup命令測試: -
5. 測試反向解析(Linux) `host 20.0.0.100`
若沒問題將會反向解析出域名www.my.com。 -
• 使用 host
命令測試反向解析,測試IP地址是否正確解析為域名:
四、配置主從 DNS 伺服器及自動同步
本節環境
主伺服器:20.0.0.11
從伺服器:20.0.0.12
客戶端:Windows 10 或 Linux
-
1. 主伺服器配置 options { listen-on port 53 { any; }; allow-query { any; };};
zone "my.com" IN {type master; # 型別為主區域 file "my.com.zone"; allow-transfer { 20.0.0.12; };}; # 設定從伺服器地址 # 反向解析沒有配置,這段關係不大zone "0.0.20.in-addr.arpa" IN {type master; file "my.com.zone.local"; allow-transfer { 20.0.0.12; };};![]()
cd /var/named/cp -p name.localhost my.com.zonevim /var/named/my.com.zone
配置示例(只有正向解析,無反向解析)$TTL 1D #有效解析記錄的生存週期@ in SOA my.com. rname.invalid ( #“@"符號表示當前的DNS區域名 0 ; serial #更新序列號,可以是10位以內的整數 1D ; refresh #重新整理時間,重新下載地址資料的間隔 1H ; retry #重試延時,下載失敗後的重試間隔 1W ; expire #失效時間,超過該時間仍無法下載則放棄# 3H) ; minimum #無效解析記錄的生存週期 NS my.com. #記錄當前區域的DNS伺服器的名稱 A 20.0.0.11 #記錄主機IP地址IN MX 10 mail.my.com. #MX為郵件交換記錄,數字越大優先順序越低www IN A 20.0.0.11#記錄正向解析www.benet.com對應的IPmail IN A 20.0.0.22 #MX為郵件交換記錄,數字越大優先順序低 ftp IN CNAME www #CNAME使用別名,ftp 是www的別名* IN A 20.0.0.30#泛域名解析,“*"代表任意主機名,給一個不存在的地址![]()
-
• 配置正向區域資料檔案 my.com.zone
,帶屬性複製編輯: -
• 編輯區域配置檔案 /etc/named.rfc1912.zones
,新增從伺服器地址: -
• 修改 /etc/named.conf
,允許所有網段查詢: -
2. 從伺服器配置 yum install -y bindvim /etc/named.conf#編輯後可以使用named-checkconf語法檢查,後面引數可省named-checkconf -z /etc/named.conf
配置示例:options { listen-on port 53 { 20.0.0.12; };# 監聽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"; # 記憶體統計檔案的位置 allow-query { any; };# 允許使用本DNS解析服務的網段,也可用any代表所有}; ![]()
`vim /etc/named.rfc1912.zones`
配置示例:zone "my.com" IN {type slave; # 型別為從區域 file "slaves/my.com.zone";# 下載的區域資料檔案儲存到slaves/目錄下#allow-update { none; };# 此行必須刪掉,用於配置主伺服器的動態更新DNS記錄 masters { 20.0.0.11; };}; # 設定主伺服器地址 zone "0.0.20.in-addr.arpa" IN {type slave; file "slaves/my.com.zone.local"; masters { 20.0.0.11; };}; ![]()
-
• 編輯從伺服器的區域配置檔案: -
• 安裝 BIND 並修改配置檔案: -
3. 啟動服務並驗證 systemctl restart namedls -1 /var/named/slaves/
-
• 主從都重啟 BIND 服務,並檢查從伺服器的區域資料檔案是否成功下載: -
4. 測試(Windows) nslookup www.my.com # 解析www域名對應的IP地址# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:www.my.comAddress:20.0.0.11nslookup ftp.my.com # 解析ftp的別名對應的IP地址# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:www.my.comAddress:20.0.0.11nslookup mail.my.com # 解析mail域名對應的IP地址# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:mail.my.comAddress:20.0.0.22nslookup aa.my.com # 解析泛域名對應的IP地址# 輸出:伺服器:UnKnownAddress:20.0.0.11名稱:aa.my.comAddress:20.0.0.30![]()
經測試,全部一一對應,是成功的 -
• 在cmd下使用nsloopup命令分別測試: -
5. 測試(Linux) `echo"nameserver 20.0.0.11" >> /etc/resolv.conf`
host 20.0.0.12host www.my.comnslookup 20.0.0.11
-
• 測試 -
• 在Linux的域名解析配置檔案中新增從DNS伺服器地址 -
6. 模擬故障 `systemctl stop named`
注意:在Windows端需將從DNS伺服器IP設定為首選DNS,否則無論是重啟還是中斷主DNS伺服器網路,Windows系統都只認首選,備選不會選擇,暫時未解決。Linux未測試。 -
• 再在Windows端測試 -
• 停止主伺服器的服務,模擬主伺服器故障
連結: https://blog.csdn.net/qq_44421043/article/details/141304442?spm=1001.2014.3001.5502
(版權歸原作者所有,侵刪)
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組





······



以上所有資料獲取請掃碼
備註:最新運維資料

100%免費領取
(後臺不再回復,掃碼一鍵領取)