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

DNS 服務核心原理、正反向解析與主從同步實戰全解析

編輯:DNS 伺服器

前言

域名系統(DNS)是互聯網基礎設施的核心,將易記域名映射為機器可識別的 IP 位址。本文系統梳理 DNS 理論基礎、查詢機制、資源記錄類型、主從同步原理,並提供基於 CentOS 6.7 + BIND 的完整實驗實作,涵蓋快取服務器、正反向解析區域、主從區域傳送、HTTP 服務驗證等企業級部署場景。

一、理論基礎篇

1. DNS 服務定義與企業自建動機

  • 定義:分散式資料庫,提供域名↔IP 映射,核心服務埠 TCP/UDP 53。
  • 企業自建理由:
    • 節省內網域名解析佔用的外網頻寬
    • 解析內網伺服器私有 IP(如內部 Web、郵件、資料庫)
    • Active Directory 域環境依賴內網 DNS 定位網域控制器(SRV 記錄)

2. 核心架構與協議特性

項目說明
架構模型Client/Server,應用層協議
傳輸協議UDP 53(查詢/回應,<512 bytes);TCP 53(區域傳送、>512 bytes 回應)
BINDBerkeley Internet Name Domain,ISC 維護,最廣泛部署的 DNS 軟體
命名空間樹狀層級:根域 → 頂級域 → 二級域 → 三級域…最多 127 級

3. 查詢類型:遞迴 vs 迭代

  • 遞迴查詢:客戶端→本地 DNS,本地 DNS 必須返回最終結果(或錯誤),中間過程對客戶端透明。典型:主機→本地 DNS
  • 迭代查詢:本地 DNS→根域→頂級域→權威域,每層返回下一層 NS 記錄,由本地 DNS 逐層追問。典型:本地 DNS→根/權威 DNS
遞迴查詢流程圖 迭代查詢流程圖

4. 正向解析 vs 反向解析

  • 正向:Domain Name → IP(A/AAAA 記錄),普遍部署
  • 反向:IP → Domain Name(PTR 記錄),主要用於郵件伺服器反向驗證防垃圾郵件
  • 兩者屬於獨立命名空間,各自維護區域檔案

5. DNS 伺服器角色

  • 主 DNS (Master):維護區域權威資料,管理員手動編輯區域檔
  • 從 DNS (Slave):透過區域傳送從主/其他從伺服器複製區域資料,提供冗余與負載分擔
  • 快取 DNS (Caching-only):無權威區域,僅遞迴查詢並快取結果,加速回應
  • 轉發器:將特定查詢轉發給指定上游 DNS,減少跨網查詢流量

6. 資源記錄 (RR) 詳細解析

區域檔由大量 RR 組成,語法:name [TTL] IN rr_type value

類型全稱用途範例
SOAStart of Authority區域權威起始記錄,含序列號、刷新/重試/過期/最小 TTL@ IN SOA ns1.admin. (2024010101 2H 10M 1W 1D)
NSName Server宣告區域授權名稱伺服器@ IN NS ns1
AAddress域名→IPv4www IN A 192.168.1.10
AAAAIPv6 Address域名→IPv6www IN AAAA 2001:db8::1
PTRPointerIP→域名(反向區域),IP 反寫 + .in-addr.arpa.10 IN PTR www.example.com.
CNAMECanonical Name別名記錄,指向另一個規範名稱web IN CNAME www
MXMail Exchanger郵件交換器,含優先權數值(越小優先級越高)@ IN MX 10 mail
TXTText任意文本,常用於 SPF、DKIM、域名驗證@ IN TXT "v=spf1 mx -all"

7. 區域傳送機制與 SOA 關鍵參數

  • 全量傳送 (AXFR):傳送完整區域資料
  • 增量傳送 (IXFR):僅傳送變更部分(需主從 BIND 版本支援)
  • SOA 協調參數:
    • Serial:序列號,主伺服器資料變更時遞增(格式建議 YYYYMMDDNN)
    • Refresh:從伺服器檢查更新間隔(預設 2H)
    • Retry:檢查失敗重試間隔(預設 10M,必須 < Refresh)
    • Expire:長時間無法連絡主伺服器後,從伺服器停止服務(預設 1W)
    • Minimum:否定答案快取 TTL
  • Notify 機制:主伺服器資料變更主動通知從伺服器即時同步

二、實戰實驗篇(CentOS 6.7 × 3 + Windows 7 × 1)

實驗拓撲

角色主機名IP
主 DNSDNS-master10.68.7.235
從 DNSDNS-slave10.68.7.231
Web 伺服器http10.68.7.234
Windows 客戶端Windows-Client10.68.7.236

任務一:部署快取 DNS 服務器

# 安裝套件
yum -y install bind bind-utils bind-libs

# 編輯主配置 /etc/named.conf
options {
    listen-on port 53 { 10.68.7.235; 127.0.0.1; };
    directory "/var/named";
    allow-query { any; };
    recursion yes;
    dnssec-enable no;  # 實驗環境關閉 DNSSEC 避免驗證失敗
    dnssec-validation no;
};

# 啟動驗證
service named start
ss -tunlp | grep :53

任務二:配置主 DNS 正向解析區域 (yangbin.com)

# 建立區域檔 /var/named/yangbin.com.zone
$TTL 1D
$ORIGIN yangbin.com.
@ IN SOA ns1.yangbin.com. admin.yangbin.com. (
    2016120701 ; Serial
    2H         ; Refresh
    5M         ; Retry
    7D         ; Expire
    1D )       ; Minimum
  IN NS ns1
  IN NS ns2
  IN MX 10 mx1
  IN MX 20 mx2
ns1 IN A 10.68.7.235
ns2 IN A 10.68.7.231
mx1 IN A 10.68.7.232
mx2 IN A 10.68.7.233
www IN A 10.68.7.234
web IN CNAME www

# 在 /etc/named.rfc1912.zones 定義區域
zone "yangbin.com" IN {
    type master;
    file "/var/named/yangbin.com.zone";
    allow-update { none; };
};

# 權限與驗證
chown :named /var/named/yangbin.com.zone
named-checkzone "yangbin.com" /var/named/yangbin.com.zone
service named reload
rndc status
dig @10.68.7.235 www.yangbin.com A

任務三:配置主 DNS 反向解析區域 (7.68.10.in-addr.arpa)

# 區域檔 /var/named/7.68.10.in-addr.arpa
$TTL 1D
$ORIGIN 7.68.10.in-addr.arpa.
@ IN SOA ns1.yangbin.com. admin.yangbin.com. ( ...同正向... )
  IN NS ns1.yangbin.com.
  IN NS ns2.yangbin.com.
235 IN PTR ns1.yangbin.com.
231 IN PTR ns2.yangbin.com.
232 IN PTR mx1.yangbin.com.
233 IN PTR mx2.yangbin.com.
234 IN PTR www.yangbin.com.

# 區域定義
zone "7.68.10.in-addr.arpa" IN {
    type master;
    file "7.68.10.in-addr.arpa";
    allow-update { none; };
};

任務四:配置從 DNS 實現主從同步

# 從伺服器 /etc/named.rfc1912.zones
zone "yangbin.com" IN {
    type slave;
    masters { 10.68.7.235; };
    file "slaves/yangbin.com.zone";
};
zone "7.68.10.in-addr.arpa" IN {
    type slave;
    masters { 10.68.7.235; };
    file "slaves/7.68.10.in-addr.arpa";
};

# 主伺服器需允許區域傳送(在區域定義加入 allow-transfer { 10.68.7.231; };)
# 關鍵驗證:查看 /var/log/messages 確認 Transfer completed
# 修改主區域序列號後執行 rndc reload,觀察從伺服器自動同步(Notify 機制)

任務五:部署 HTTP 服務與 Windows 客戶端驗證

# http 伺服器
yum -y install httpd
echo "ServerName www.yangbin.com" >> /etc/httpd/conf/httpd.conf
service httpd start

# Windows 7 設定 DNS 指向 10.68.7.235 (主) 或 10.68.7.231 (從)
# 瀏覽器訪問 https://www.yangbin.com 成功顯示測試頁面
Windows 客戶端驗證成功畫面

三、生產環境最佳實踐總結

  1. 安全性:限制區域傳送目標(allow-transfer)、關閉開放遞迴(allow-recursion)、啟用 DNSSEC、隱藏 BIND 版本號(version "None";)
  2. 高可用:一主多從、異地部署從伺服器、使用 Anycast 架構
  3. 維運:序列號規範化(YYYYMMDDNN)、定期 rndc dumpdb 檢查快取、監控查詢日誌(rndc querylog)、時間同步(NTP)
  4. 測試工具:dig +trace 追蹤解析路徑、dig -t axfr 模擬區域傳送檢洩、rndc status 監控服務狀態
Copyright © Windows教程網 All Rights Reserved