案例:BIND 安裝與配置詳解
一、安裝 BIND軟件包
1.安裝 BIND 軟件包
? 通過網絡源或掛載的光盤安裝 BIND:
yum installbind-y
? 或者通過 RPM 包安裝,前提是掛載系統盤 ISO 鏡像:
`rpm -ivh bind-x.x.x-x.el7.x86_64.rpm`
2.查看 BIND 配置文件路徑
rpm -qcbind該命令顯示 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 { # 正向解析“."根區域 typehint; # 類型為根區域(索引) 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"區域 typemaster; # 聲明該區域是主區域 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 記錄等。
宏定義$,注釋;
配置示例:
$TTL1D # $-宏定義 # 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 0 O
? 檢查:
6.啟動 BIND 服務并關閉防火墻
`systemctl start named`
systemctl stop firewalld setenforce 0 # 關閉 SELinux
注意:若服務啟動失敗,可以查看日志文件排查錯誤,如果服務卡住,執行第二行命令解決:
tail-f /var/log/messages rndc-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.0 GATEWAY 20.0.0.11 # 指向DNS服務器 DNS 20.0.0.11
nslookup www.my.com # 解析www域名對應的IP地址 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:www.my.com Address:20.0.0.20 nslookup ftp.my.com # 解析ftp的別名對應的IP地址 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:www.my.com Address:20.0.0.20 nslookup aa.my.com # 解析泛域名對應的IP地址 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:www.my.com Address:20.0.0.20 ![]()
都可以看到返回服務器地址,測試成功
? cmd使用nslookup命令測試:
? 在Windows下更改網卡配置:
8.客戶端配置和測試DNS解析(Linux)
vim /etc/resolv.conf nameserver 20.0.0.11
vim /etc/sysconfig/network-scripts/ifcfg-ens33 DNS1=20.0.0.11 systemctl restart network
host www.my.com nslookup 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.192 typemaster; # 定義主區域 file"my.com.zone.local"; # 反向解析的數據文件 allow-update { none; }; # 禁止自動更新 }; ![]()
? 編輯區域配置文件/etc/named.rfc1912.zones,添加反向解析區域:
2.配置反向區域數據文件
cd/var/named/ cp-p my.com.zone my.com.zone.local vim my.com.zone.local
數據文件中通常包含 IP 地址與域名的映射。
配置示例:
$TTL1D @ IN SOA my.com. rname.invalid. ( # 點.必須加上,否則報錯,下同 0 ; serial # 序列號 # 更新序列號,10位以內數字,用于主從同步,主服務器這個數值要大于從服務器否則無法同步 1D ; refresh # 刷新時間 1H ; retry # 重試時間 1W ; expire # 過期時間 3H ) ; minimum # 最小TTL NS my.com. 100 IN PTR www.my.com. # 將IP地址的最后一段(100)解析為www.my.com 200 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.0 GATEWAY 20.0.0.11 # 指向DNS服務器 DNS 20.0.0.11
nslookup 20.0.0.100 # 解析末段為 100 IP地址的域名 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:www.my.com Address:20.0.0.100 nslookup 20.0.0.200 # 解析末段為 200 IP地址的域名 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:mail.my.com Address: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 { typemaster;# 類型為主區域 file"my.com.zone"; allow-transfer { 20.0.0.12; }; }; # 設置從服務器地址 # 反向解析沒有配置,這段關系不大 zone"0.0.20.in-addr.arpa"IN { typemaster; file"my.com.zone.local"; allow-transfer { 20.0.0.12; }; }; ![]()
cd/var/named/ cp-p name.localhost my.com.zone vim /var/named/my.com.zone
配置示例(只有正向解析,無反向解析)
$TTL1D #有效解析記錄的生存周期 @ inSOA 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對應的IP mail 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 -ybind vim /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 { typeslave;# 類型為從區域 file"slaves/my.com.zone"; # 下載的區域數據文件保存到slaves/目錄下 #allow-update { none; }; # 此行必須刪掉,用于配置主服務器的動態更新DNS記錄 masters { 20.0.0.11; }; }; # 設置主服務器地址 zone"0.0.20.in-addr.arpa"IN { typeslave; file"slaves/my.com.zone.local"; masters { 20.0.0.11; }; }; ![]()
? 編輯從服務器的區域配置文件:
? 安裝 BIND 并修改配置文件:
3.啟動服務并驗證
systemctl restart named ls-1 /var/named/slaves/
? 主從都重啟 BIND 服務,并檢查從服務器的區域數據文件是否成功下載:
4.測試(Windows)
nslookup www.my.com # 解析www域名對應的IP地址 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:www.my.com Address:20.0.0.11 nslookup ftp.my.com # 解析ftp的別名對應的IP地址 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:www.my.com Address:20.0.0.11 nslookup mail.my.com# 解析mail域名對應的IP地址 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:mail.my.com Address:20.0.0.22 nslookup aa.my.com # 解析泛域名對應的IP地址 # 輸出: 服務器:UnKnown Address:20.0.0.11 名稱:aa.my.com Address:20.0.0.30 ![]()
經測試,全部一一對應,是成功的
? 在cmd下使用nsloopup命令分別測試:
5.測試(Linux)
`echo"nameserver 20.0.0.11">> /etc/resolv.conf`
host 20.0.0.12 host www.my.com nslookup 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
-
Linux
+關注
關注
87文章
11507瀏覽量
213503 -
服務器
+關注
關注
13文章
9772瀏覽量
87782 -
DNS
+關注
關注
0文章
226瀏覽量
20413 -
軟件包
+關注
關注
0文章
110瀏覽量
11922
原文標題:Linux系統管理員進階:BIND DNS服務器從入門到精通
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論