Linux系統管理員進階:BINDDNS伺服器從入門到精通

Linux系統管理員進階:BIND DNS伺服器從入門到精通


文章目錄

  • • 案例:BIND 安裝與配置詳解
      • • 一、安裝 BIND 軟體包
        • • 二、配置 BIND 主伺服器(正向解析)
        • • 三、配置反向解析
        • • 四、配置主從 DNS 伺服器及自動同步

案例:BIND 安裝與配置詳解

一、安裝 BIND 軟體包

  1. 1. 安裝 BIND 軟體包
    • • 透過網路源或掛載的光碟安裝 BIND:

      yum install bind -y
    • • 或者透過 RPM 包安裝,前提是掛載系統盤 ISO 映象:

      `rpm -ivh bind-x.x.x-x.el7.x86_64.rpm`
  2. 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. 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. 2. 配置根區域在 named.conf 中定義根區域,根區域用於處理域名解析的根請求:

    zone "." IN {        # 正向解析“."根區域type hint;       # 型別為根區域(索引)    file "named.ca"# 區域資料檔案為named.ca};# named.ca檔案記錄了13臺根域伺服器的域名和IP地址等資訊include "/etc/named.rfc1912.zones";  # 包含區域配置檔案中的所有配置,儲存了標準的區域配置。 
  3. 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. 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. 5. 檢查啟動檔案格式

    named-checkzone my.com /var/named/my.com.zone # 輸出:zone my.com/IN: loaded serial 0O
    • • 檢查:
  6. 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. 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. 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. 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. 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. 3. 啟動 BIND 服務

    `systemctl restart named`
    • • 啟動或重啟 BIND 服務:
  4. 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. 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. 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. 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. 3. 啟動服務並驗證

    systemctl restart namedls -1 /var/named/slaves/
    • • 主從都重啟 BIND 服務,並檢查從伺服器的區域資料檔案是否成功下載:
  4. 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. 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. 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 個模組
1.38張最全工程師技能圖譜
2.面試大禮包
3.Linux書籍
4.go書籍
······
6.自動化運維工具
18.訊息佇列合集
 以上所有資料獲取請掃碼
備註:最新運維資料
100%免費領取
(後臺不再回復,掃碼一鍵領取)


相關文章