案例: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 服務器的行為,如區(qū)域(zones)、轉發(fā)器(forwarders)、ACL(訪問控制列表)等。
?/etc/named.rfc1912.zones- 區(qū)域配置文件,控制具體區(qū)域。專門用于定義 BIND 服務器中使用的區(qū)域(zone)。
?/var/named/named.localhost- 區(qū)域數據文件,存儲區(qū)域信息。
二、配置 BIND 主服務器(正向解析)
本節(jié)環(huán)境
主服務器:20.0.0.11
客戶端:Windows 10 或 Linux
1.修改主配置文件
編輯/etc/named.conf文件,配置監(jiān)聽端口、區(qū)域數據存放位置及允許查詢的網段:
`vim /etc/named.conf`主要修改以下幾項:
配置示例:
options { listen-on port 53 { 20.0.0.100; }; # ☆☆☆修改:監(jiān)聽53端口,指定本地IP,也可用any表示所有IP。 # listen-on-v6 port 53 { ::1; }; # ipv6行如不使用可以注釋掉或者刪除。 directory"/var/named"; # 區(qū)域數據文件的默認存放位置。 dump-file"/var/named/data/cache_dump.db"; # 緩存數據庫文件位置。 statistics-file"/var/named/data/named_stats.txt"; # 狀態(tài)統計文件位置。 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表示所有。 };
?監(jiān)聽端口和 IP 地址:指定 BIND 服務監(jiān)聽的端口和 IP 地址。
?區(qū)域數據文件的存儲路徑:指定區(qū)域數據文件的存儲目錄。
?允許查詢的網段:定義允許訪問 DNS 服務的客戶端網段。
2.配置根區(qū)域
在named.conf中定義根區(qū)域,根區(qū)域用于處理域名解析的根請求:
zone"."IN { # 正向解析“."根區(qū)域
typehint; # 類型為根區(qū)域(索引)
file"named.ca";# 區(qū)域數據文件為named.ca
};
# named.ca文件記錄了13臺根域服務器的域名和IP地址等信息
include"/etc/named.rfc1912.zones";
# 包含區(qū)域配置文件中的所有配置,存儲了標準的區(qū)域配置。
3.配置正向區(qū)域
`vim /etc/named.rfc1912.zones`
提示:vim編輯器的使用
配置示例:
zone"my.com"IN {
# ☆修改:正向解析"benet.com"區(qū)域
typemaster;
# 聲明該區(qū)域是主區(qū)域
file"my.com.zone";
# ☆修改:區(qū)域數據文件的路徑,相對于/var/named路徑目錄,可以加個.
allow-update { none; };
# 不允許自動更新區(qū)域數據
};
? 定位到起始行:j或k上下移動,G直接跳行
? 進入可視模式:V進可視行模式,高亮顯示當前行
? 選擇多行:j向下選行,按一次選一行
? 復制選中的行:選中,按y進行復制到剪貼板
? 移動到粘貼位置:移動到要粘貼的位置
? 粘貼復制的行:p粘貼。當前行上方使用P大P。
? 編輯區(qū)域配置文件/etc/named.rfc1912.zones,文件里有模版,可復制粘貼后修改,添加正向解析區(qū)域:
4.配置正向區(qū)域數據文件
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 天,該區(qū)域數據在 1 天(1D)內有效 @ IN SOA my.com. rname.invalid ( # @-表示該文件定義的根域名,當前的DNS區(qū)域名 # IN-表示“Internet”類的資源記錄類型。 # SOA-第一條解析,起始記錄的解析 ## admin-主機名、服務名 0 ; serial # 序列號,表示該區(qū)域文件的版本,每次修改后應增加 1D ; refresh # 刷新時間,告知從服務器多久查詢一次主服務器 1H ; retry # 重試時間,從服務器未聯系到主服務器后的重試間隔 1W ; expire # 過期時間,從服務器未能更新后,緩存數據的有效期 3H ) ; minimum # 最小TTL值,未命中的緩存記錄的生存時間 NS my.com. # 定義此區(qū)域的名稱服務器 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 # *-通配符,匹配所有未明確定義的子域名,泛域名 ![]()
內容解釋:
?@: 代表當前區(qū)域的根域名。
? 在 DNS 區(qū)域文件中,@代表該文件定義的根域名,也就是當前區(qū)域的名稱。在實際使用中,@將被解析為文件頂部定義的域名。
? 例如,如果區(qū)域文件頂部定義的域名是example.com., 那么@就代表example.com.。
?IN: 表示記錄的類別,一般為互聯網(Internet),通常情況下使用IN。
? 表示“Internet”類(Internet Class)的資源記錄類型。在大多數情況下,DNS 記錄都使用IN,因為它表示記錄屬于互聯網的標準 DNS 記錄類型。
? 除了IN之外,還有其他類,如CH(用于 CHAOS 類),但它們非常少見。
?SOA (Start of Authority): 表示該 DNS 區(qū)域的起始記錄,包含了該區(qū)域的主要信息,如序列號、刷新時間等。
?SOA是“Start of Authority”的縮寫,表示權威起始記錄。每個 DNS 區(qū)域文件必須包含一個且只有一個 SOA 記錄。
?SOA記錄包含了一些重要信息,如主服務器的名稱、負責人的電子郵件地址、區(qū)域的序列號、刷新時間、重試時間、過期時間和最小 TTL(生存時間)值。
?NS (Name Server): 指定負責該區(qū)域的名稱服務器。
?A (Address Record): 將域名映射到 IPv4 地址。
?CNAME (Canonical Name Record): 將一個域名作為別名指向另一個域名。
?MX (Mail Exchange Record): 指定處理電子郵件的郵件服務器。
?TTL (Time to Live): 指定 DNS 記錄在緩存中保留的時間長度,超過時間后需要重新查詢。
? 在/var/named/目錄下創(chuàng)建或修改區(qū)域數據文件,這個文件包含域名與 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
注意:若服務啟動失敗,可以查看日志文件排查錯誤,如果服務卡住,執(zhí)行第二行命令解決:
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為例
# 以我的網絡環(huán)境為例,做如下配置 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 服務器地址:
三、配置反向解析
本節(jié)環(huán)境
主服務器:20.0.0.11
客戶端:Windows 10 或 Linux
1.配置反向區(qū)域
`vim /etc/named.rfc1912.zones`
在此文件中定義 IP 地址段的區(qū)域信息。同樣復制模版修改。
配置示例:
zone"0.0.20.in-addr.arpa"IN {
# 此處 20.0.0.0 反向為 0.0.20
# 再如:192.168.10.0 反向則是 10.168.192
typemaster;
# 定義主區(qū)域
file"my.com.zone.local";
# 反向解析的數據文件
allow-update { none; };
# 禁止自動更新
};
![]()
? 編輯區(qū)域配置文件/etc/named.rfc1912.zones,添加反向解析區(qū)域:
2.配置反向區(qū)域數據文件
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反向指針 功能:反向解析 ![]()
? 創(chuàng)建或修改反向區(qū)域數據文件:
3.啟動 BIND 服務
`systemctl restart named`
? 啟動或重啟 BIND 服務:
4.測試反向解析(Windows)以Windows為例,確保網卡配置信息無誤:
# 以我的網絡環(huán)境為例,做如下配置 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 服務器及自動同步
本節(jié)環(huán)境
主服務器: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;# 類型為主區(qū)域
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區(qū)域名
0 ; serial
#更新序列號,可以是10位以內的整數
1D ; refresh
#刷新時間,重新下載地址數據的間隔
1H ; retry
#重試延時,下載失敗后的重試間隔
1W ; expire
#失效時間,超過該時間仍無法下載則放棄#
3H) ; minimum
#無效解析記錄的生存周期
NS my.com.
#記錄當前區(qū)域的DNS服務器的名稱
A 20.0.0.11
#記錄主機IP地址
IN MX 10 mail.my.com.
#MX為郵件交換記錄,數字越大優(yōu)先級越低
www IN A 20.0.0.11
#記錄正向解析www.benet.com對應的IP
mail IN A 20.0.0.22
#MX為郵件交換記錄,數字越大優(yōu)先級低
ftp IN CNAME www
#CNAME使用別名,ftp 是www的別名
* IN A 20.0.0.30
#泛域名解析,“*"代表任意主機名,給一個不存在的地址
![]()
? 配置正向區(qū)域數據文件my.com.zone,帶屬性拷貝編輯:
? 編輯區(qū)域配置文件/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; };
# 監(jiān)聽53端口,ip地址使用提供服務的本地IP,也可用any表示所有
#listen-on-v6 port 53 { ::1; };
# ipv6行如不使用可以注釋掉或者刪除
directory"/var/named";
# 區(qū)域數據文件的默認存放位置
dump-file"/var/named/data/cache_dump.db";
# 域名緩存數據庫文件的位置
statistics-file"/var/named/data/named_stats.txt";
# 狀態(tài)統計文件的位置
memstatistics-file"/var/named/data/named mem_stats.txt";
# 內存統計文件的位置
allow-query { any; };
# 允許使用本DNS解析服務的網段,也可用any代表所有
};
![]()
`vim /etc/named.rfc1912.zones`
配置示例:
zone"my.com"IN {
typeslave;# 類型為從區(qū)域
file"slaves/my.com.zone";
# 下載的區(qū)域數據文件保存到slaves/目錄下
#allow-update { none; };
# 此行必須刪掉,用于配置主服務器的動態(tài)更新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; };
};
![]()
? 編輯從服務器的區(qū)域配置文件:
? 安裝 BIND 并修改配置文件:
3.啟動服務并驗證
systemctl restart named ls-1 /var/named/slaves/
? 主從都重啟 BIND 服務,并檢查從服務器的區(qū)域數據文件是否成功下載:
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
+關注
關注
88文章
11756瀏覽量
219000 -
服務器
+關注
關注
14文章
10250瀏覽量
91476 -
DNS
+關注
關注
0文章
229瀏覽量
21147 -
軟件包
+關注
關注
0文章
115瀏覽量
12142
原文標題:Linux系統管理員進階:BIND DNS服務器從入門到精通
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
詳解LINUX的安裝配置
Linux環(huán)境下USB的原理、驅動和配置
Bind源代碼包安裝
Linux入門教程之LINUX入門與安裝配置
Linux下Apache服務器的安裝和配置
在linux下安裝Apache+Php+Mysql
Linux下BIND安裝與配置詳解
評論