Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> DNS 伺服器

DNS 域名系統深度解析:架構、資源記錄、查詢流程與 BIND 實戰配置

編輯:DNS 伺服器

DNS 核心概念

域名系統(Domain Name System, DNS)是互聯網的「電話簿」,將人類易記的域名(如 example.com)轉換為機器路由所需的 IP 位址。DNS 採用分層分散式資料庫架構,全球協同運作,是網路通訊不可或缺的基礎設施。

一、DNS 名稱空間與區域劃分

1. 域名層級結構

  • 根域 (.):頂層權威,全球 13 組根伺服器叢集(A-M.root-servers.net)
  • 頂級域 (TLD):
    • 通用頂級域 (gTLD):.com、.net、.org、.edu、.gov…
    • 國家代碼頂級域 (ccTLD):.cn、.tw、.hk、.jp…
    • 基礎架構域:.arpa(用於反向解析)
  • 二級域:組織註冊的域名,如 google.com、baidu.com
  • 三級域及以下:子域劃分,如 www.google.com、mail.google.com,最多 127 級
DNS 域名空間樹狀結構

2. 區域 vs 域名

  • 域:邏輯命名空間範圍
  • 區域:DNS 伺服器實際管轄的授權範圍,一個區域包含連續的域名樹分支
  • 關係:區域 ≤ 域;一台授權伺服器可同時服務多個區域
區域與域關係圖

二、域名解析查詢流程

1. 遞迴查詢

客戶端→本地 DNS,本地 DNS 負責完整查詢鏈路並返回最終結果。特點:客戶端只發一次請求,負擔轉移給本地 DNS。

遞迴查詢流程

2. 迭代查詢

本地 DNS→根域→TLD→權威域,每層返回下一層 NS 記錄,本地 DNS 逐層追問。特點:減輕上層伺服器負載,利用快取加速。

迭代查詢流程

3. 完整解析路徑

Client → 本地 hosts → 本地 DNS 快取 → 本地 DNS (遞迴) → 根域 (迭代) → TLD → 權威域 → 返回結果 → 快取 → Client

三、資源記錄 (RR) 完整手冊

參考自《鳥哥的 Linux 私房菜》,區域檔關鍵符號:

  • $TTL:預設快取生存時間(秒)
  • $ORIGIN:重新定義區域根域名
  • @:代表當前區域名($ORIGIN 值)
  • .:結尾的點表示完整域名 (FQDN),避免自動附加區域後綴
記錄類型格式範例說明
SOA@ IN SOA ns1 admin (2024010101 2H 10M 1W 1D)區域權威起始記錄,含序列號、刷新/重試/過期/最小 TTL
NS@ IN NS ns1授權名稱伺服器宣告,需配合 A 記錄
Awww IN A 192.168.1.10域名→IPv4,最常用
AAAAwww IN AAAA 2001:db8::1域名→IPv6
PTR10 IN PTR www.example.com.反向解析,IP 反寫 + .in-addr.arpa.
CNAMEweb IN CNAME www別名→規範名,便於 IP 變更維護
MX@ IN MX 10 mail郵件交換器,優先權數值越小越優先
TXT@ IN TXT "v=spf1 mx -all"文本記錄,用於 SPF、DKIM、域名驗證

四、DNS 伺服器類型與部署架構

  • 主域名伺服器:權威資料來源,管理員手動維護區域檔
  • 輔助/從域名伺服器:透過區域傳送同步資料,提供容錯、分流、減輕主伺服器負載
  • 快取域名伺服器:無權威區域,純遞迴查詢+快取,加速內網解析
  • 轉發器:將特定查詢轉發給上游 DNS(如 ISP DNS),減少跨網流量

五、BIND 9 實戰配置(CentOS/RHEL 環境)

1. 套件安裝

yum install bind bind-libs bind-utils bind-chroot
# bind-utils 提供 dig、host、nslookup、nsupdate 測試工具

2. 目錄結構與關鍵檔案

/etc/named.conf              # 主配置檔
/etc/named.rfc1912.zones     # 區域定義檔(建議獨立管理)
/etc/rndc.key                # rndc 遠程控制金鑰
/var/named/                  # 區域資料檔預設目錄
/var/named/chroot/           # chroot 獄環境(生產建議啟用)

3. 快取服務器最小配置

options {
    listen-on port 53 { 192.168.1.10; 127.0.0.1; };
    directory "/var/named";
    allow-query { 192.168.1.0/24; };
    recursion yes;
    dnssec-enable no;  # 內網測試建議關閉
};
zone "." IN { type hint; file "named.ca"; };
zone "localhost" IN { type master; file "localhost.zone"; };
zone "0.0.127.in-addr.arpa" IN { type master; file "named.local"; };

4. 根提示檔案更新

dig -t NS . @a.root-servers.net > /var/named/named.ca

5. 主域名伺服器正向區域配置 (example.com)

# /etc/named.rfc1912.zones
zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-transfer { 192.168.1.20; };  # 僅允許指定從伺服器
};

# /var/named/example.com.zone
$TTL 86400
$ORIGIN example.com.
@ IN SOA ns1.example.com. hostmaster.example.com. (
    2024010101 ; Serial
    3H         ; Refresh
    15M        ; Retry
    1W         ; Expire
    1D )       ; Minimum
  IN NS ns1
  IN NS ns2
  IN MX 10 mail
ns1 IN A 192.168.1.10
ns2 IN A 192.168.1.20
mail IN A 192.168.1.10
www IN A 192.168.1.100
www IN A 192.168.1.101  # 輪詢負載均衡
ftp IN A 192.168.1.100
web IN CNAME www

6. 反向區域配置 (1.168.192.in-addr.arpa)

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "1.168.192.zone";
    allow-transfer { 192.168.1.20; };
};

# 區域檔:以 PTR 為主,無需 MX/A/AAAA/CNAME
$TTL 86400
@ IN SOA ns1.example.com. hostmaster.example.com. ( ... )
  IN NS ns1.example.com.
100 IN PTR www.example.com.
101 IN PTR www.example.com.
10  IN PTR mail.example.com.
10  IN PTR ns1.example.com.

7. 從伺服器配置(區域傳送同步)

zone "example.com" IN {
    type slave;
    masters { 192.168.1.10; };
    file "slaves/example.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
    type slave;
    masters { 192.168.1.10; };
    file "slaves/1.168.192.zone";
};

8. 子域授權

父區域新增 NS + A 記錄授權子域:

sub.example.com. IN NS ns1.sub.example.com.
ns1.sub.example.com. IN A 192.168.2.10

子域伺服器獨立管理 sub.example.com 區域,父域解析子域需轉發或遞迴查詢。

9. 視圖:分流內外網解析

view "internal" {
    match-clients { 192.168.1.0/24; };
    zone "example.com" IN { type master; file "example.com.int.zone"; };
};
view "external" {
    match-clients { any; };
    zone "example.com" IN { type master; file "example.com.ext.zone"; };
};

10. 常用管理與測試指令

指令用途
named-checkconf檢查主配置語法
named-checkzone "zone" file檢查區域檔語法
rndc status查看服務狀態
rndc reload [zone]熱重載配置/區域
rndc retransfer zone強制觸發區域傳送
dig +trace @server domain追蹤完整解析路徑
dig -t axfr @server zone模擬全量區域傳送(檢洩)
dig -x IP @server反向解析測試
host -t type domain [server]簡易查詢工具

六、安全加固建議

  1. 限制遞迴查詢來源(allow-recursion)
  2. 限制區域傳送目標(allow-transfer)
  3. 隱藏版本號(version "None";)
  4. 啟用 DNSSEC 驗證(dnssec-validation yes;)
  5. 部署 chroot 獄環境(bind-chroot)
  6. 定期更新根提示檔(named.ca)
  7. 監控異常查詢流量(rndc querylog)
Copyright © Windows教程網 All Rights Reserved