一、DNS(域名系統)詳解
1. 核心功能與特點
特性 | 說明 |
---|---|
核心作用 | 將域名(如?www.example.com )轉換為 IP 地址(如?192.168.1.1 ),實現人類可讀地址與機器可讀地址的映射。 |
端口與協議 | -?默認端口:53(同時支持 UDP 和 TCP)。 -?UDP:快速查詢(適用于大部分場景)。 -?TCP:數據量較大時(如 DNSSEC 查詢或區域傳輸)使用。 |
分布式數據庫 | 全球分布式部署,無單點故障,由根服務器、頂級域服務器、權威服務器等層級構成。 |
查詢類型 | -?遞歸查詢:客戶端向本地 DNS 服務器發起請求,由服務器完成全部查詢。 -?迭代查詢:服務器僅返回下一級服務器地址,由客戶端逐步查詢。 |
2. DNS 查詢流程示例
-
用戶輸入域名:訪問?
www.example.com
。 -
本地 DNS 查詢:客戶端向本地 DNS 服務器(如 ISP 提供)發起請求。
-
根域名服務器:本地 DNS 向根服務器查詢?
.com
?頂級域服務器的地址。 -
頂級域服務器:根服務器返回?
.com
?服務器的地址,本地 DNS 向?.com
?服務器查詢?example.com
?的權威服務器。 -
權威服務器:頂級域服務器返回?
example.com
?的權威 DNS 地址,本地 DNS 向其查詢?www
?子域的 IP。 -
返回結果:權威服務器返回?
www.example.com
?的 IP,本地 DNS 緩存并返回給客戶端。
3. DNS 記錄類型
記錄類型 | 作用 | 示例 |
---|---|---|
A | 將域名指向 IPv4 地址。 | www.example.com → 192.168.1.1 |
AAAA | 將域名指向 IPv6 地址。 | www.example.com → 2001:db8::1 |
CNAME | 域名別名(指向另一個域名)。 | blog.example.com → www.example.com |
MX | 郵件服務器地址。 | example.com → mail.example.com |
TXT | 存儲文本信息(如 SPF、DKIM 記錄)。 | v=spf1 include:_spf.example.com ~all |
NS | 指定域名的權威 DNS 服務器。 | example.com → ns1.example-dns.com |
4. 安全問題與防護
威脅 | 防護措施 |
---|---|
DNS 劫持 | 篡改 DNS 響應,引導用戶至惡意網站。解決方案:使用 DNSSEC(數字簽名驗證響應真實性)。 |
DNS 污染 | 偽造 DNS 查詢結果。解決方案:配置可信的 DNS 服務器(如 Google DNS?8.8.8.8 )。 |
DDoS 攻擊 | 攻擊 DNS 服務器導致服務癱瘓。解決方案:部署 Anycast 網絡分散流量壓力。 |
二、因特網域名結構
1. 域名層次結構
域名采用樹狀分層結構,從右到左層級遞增,格式為:子域名.二級域名.頂級域名.根域
示例:mail.server.example.com.
在 “mail.server.example.com.” 里,“mail” 和 “server” 都是子域名,“example” 是 二級域名,“.com” 就是頂級域名,根域名以一個點 “.” 來表示。
例如,我們常見的域名 “baidu.com”,其完整的寫法其實是 “bidu.com.”,最后的點代表根域名,只是在日常使用和書寫時習慣性省略。
-
根域:隱含的?
.
(通常省略)。 -
頂級域(TLD):如?
.com
、.cn
。 -
二級域:用戶注冊的域名(如?
example.com
)。 -
子域:用戶自定義的分支(如?
mail.example.com
)。
2. 頂級域名(TLD)分類
類別 | 說明 | 示例 |
---|---|---|
國家頂級域(ccTLD) | 基于 ISO 3166 國家代碼,表示特定國家或地區。 | .cn (中國)、.us (美國)、.jp (日本) |
通用頂級域(gTLD) | 面向全球的通用類別,早期僅限特定用途,現擴展至數千種。 | .com (商業)、.org (組織)、.net (網絡)、.edu (教育機構) |
新通用頂級域(nTLD) | 2012 年后開放申請,涵蓋行業、品牌、興趣等。 | .app (應用)、.blog (博客)、.io (科技公司) |
基礎結構域 | 唯一反向解析域,用于 IP 到域名的映射。 | .arpa (反向解析,如?1.168.192.in-addr.arpa ) |
3. 域名管理架構
機構/角色 | 職責 |
---|---|
ICANN | 全球域名系統的最高管理機構,負責分配頂級域名和 IP 地址。 |
注冊局(Registry) | 管理特定頂級域(如 Verisign 管理?.com ),維護域名數據庫。 |
注冊商(Registrar) | 向用戶提供域名注冊服務(如 GoDaddy、阿里云)。 |
注冊人(Registrant) | 域名實際擁有者,支付費用并配置 DNS 記錄。 |
4. 域名解析示例
以?www.example.cn
?為例:
-
根服務器:指引查詢?
.cn
?頂級域服務器。 -
頂級域服務器(.cn):指引查詢?
example.cn
?的權威服務器。 -
權威服務器(example.cn):返回?
www
?子域的 A 記錄 IP 地址。
三、域名服務器的類型劃分
1、根域名服務器(Root Name Server)
-
核心作用:
-
管理根域(
.
),存儲所有頂級域名服務器(TLD)的地址信息。 -
指導本地域名服務器下一步應查詢的頂級域服務器,不直接解析最終IP。
-
-
全球分布:
-
IPv4根服務器:共13臺(1臺主根在美國,其余12臺輔根分布美、歐、日)。
-
IPv6根服務器(雪人計劃):新增25臺,中國部署4臺(1主根+3輔根),打破無根服務器歷史。
-
-
管理權:
-
由?ICANN?統一管理,負責全球互聯網域名與IP地址的協調。
-
-
重要性:
-
根服務器癱瘓將導致全球DNS系統失效,是互聯網核心基礎設施。
-
2、頂級域名服務器(TLD Name Server)
-
職責:
-
管理特定頂級域(如?
.com
、.cn
、.org
),返回對應二級域名的權威服務器地址。 -
分類:
-
國家頂級域(ccTLD):如?
.cn
(中國)、.us
(美國)。 -
通用頂級域(gTLD):如?
.com
(商業)、.edu
(教育)。
-
-
-
協作流程:
-
根服務器 → 頂級域名服務器 → 權威域名服務器 → 完成解析。
-
3、權威域名服務器(Authoritative Name Server)
-
功能:
-
管理特定區(Zone)的完整DNS記錄(如?
example.com
?區的A、MX、CNAME記錄)。 -
“區”與“域”:
-
一個域(Domain)可劃分為多個區(Zone),每個區由獨立的權威服務器管理。
-
-
-
部署模式:
-
通常以主從架構運行,主服務器負責數據修改,從服務器同步數據提供冗余。
-
4、本地域名服務器(Local DNS Server)
-
角色:
-
直接接收客戶端查詢請求(如瀏覽器、手機),執行遞歸解析。
-
不屬于層次結構,但作為查詢入口,向根、頂級、權威服務器發起迭代查詢。
-
-
常見類型:
-
ISP提供的公共DNS(如?
8.8.8.8
)、企業內網DNS、家庭路由器內置DNS。
-
5、主從DNS服務器(Master/Slave Server)
類型 | 職責 | 特點 |
---|---|---|
主DNS服務器 | 存儲區數據的原始副本,允許管理員修改記錄。 | - 數據變更后觸發區域傳輸(AXFR/IXFR)。 - 唯一可寫節點。 |
從DNS服務器 | 從主服務器同步數據,提供只讀解析服務。 | - 自動同步,保障高可用性。 - 主故障時可接管查詢。 |
-
同步機制:
-
全量傳輸(AXFR):首次同步或強制更新時復制全部數據。
-
增量傳輸(IXFR):僅同步變更部分,減少帶寬消耗。
-
關鍵協作流程示例
-
用戶訪問?
www.example.cn
:-
本地DNS服務器向根服務器查詢?
.cn
?頂級域服務器地址。 -
根服務器返回?
.cn
?服務器地址,本地DNS轉向查詢?.cn
?服務器。 -
.cn
?服務器返回?example.cn
?的權威服務器地址。 -
本地DNS向權威服務器查詢?
www
?子域IP,返回結果并緩存。
-
-
主從同步:
-
主服務器更新記錄后,通知從服務器發起IXFR請求同步數據。
-
四、DNS域名解析的過程
DNS域名解析過程如下?:
-
客戶端瀏覽器接收到IP地址后,使用這個IP地址與目標主機建立連接。
-
瀏覽器向目標主機發送一個HTTP請求,然后接收并顯示目標主機返回的網頁內容。
-
這個過程涉及到多個層次的域名服務器之間的交互和查詢,目的是將用戶輸入的域名轉換成可訪問的IP地址。
-
在整個過程中,緩存的存在大大提高了解析效率,減少了網絡流量和查詢時間。
-
客戶機向本地域名服務器的查詢一般采用遞歸查詢。
-
當本地的域名服務器收到請求之后,就先查詢本地的域名緩存,如果有該記錄項,則本地的域名服務器就直接把查詢的結果返回。
-
如果本地的緩存中沒有該及錄項,則本地域名服務器就直接把請求發給根域名服務器,然后根域名服務器再返回給本地域名服務器一個所查詢域的主域名服務器的IP。
-
本地服務器再向上一步返回的域名服務器發送請求,然后接受請求的服務器查詢自己的域名緩存,如果沒有該記錄項,則返回相關的下一級域名服務器的地址。
-
重復步驟八,直到找到正確的記錄。
-
本地域名服務器把返回的結果保存到域名緩存,以備下一次使用,同時將結果返回給客戶機。
五、DNS的分布式特性
DNS(域名系統)的分布式特性是其設計的核心,旨在高效、可靠地將域名解析為IP地址。以下是DNS分布式架構的詳細解析:
1. DNS的層次化分布式結構
DNS通過分層結構實現分布式管理,主要分為以下層級:
-
根域名服務器(Root Servers):全球共13組根服務器(邏輯上非物理),存儲頂級域(如.com、.org)的服務器地址。
-
頂級域名服務器(TLD Servers):管理特定頂級域(如
.com
、.cn
)下的權威服務器信息。 -
權威域名服務器(Authoritative Servers):直接管理具體域名的IP地址記錄(如
example.com
的A記錄)。 -
本地DNS服務器(遞歸解析器):由ISP或企業提供,負責接收用戶查詢并遞歸遍歷層級獲取結果。
分布式優勢:
-
負載均衡:查詢請求分散到不同層級的服務器,避免單點過載。
-
冗余容災:每個層級有多個服務器實例,故障時自動切換。
-
本地化解析:本地DNS緩存常用查詢結果,減少跨層級請求。
2. DNS緩存機制
-
本地緩存:本地DNS服務器和客戶端(如瀏覽器)會緩存解析結果,有效期內直接返回,減少查詢延遲。
-
TTL控制:每條DNS記錄設置生存時間(Time-to-Live),超時后重新查詢以保持數據更新。
示例:
-
用戶首次訪問
example.com
,本地DNS服務器向根服務器、TLD服務器、權威服務器逐級查詢,獲取IP地址并緩存。 -
后續請求直接從本地緩存返回,直至TTL過期。
3. 分布式DNS的優勢
-
高可用性:全球分布的服務器集群確保即使部分節點故障,解析服務仍可用。
-
快速響應:就近訪問原則,用戶請求優先由地理或網絡位置最近的服務器處理。
-
靈活擴展:新增域名只需在權威服務器配置,無需修改全局架構。
4. 分布式DNS的挑戰
-
安全性問題:
-
DNS劫持:攻擊者篡改解析結果(如中間人攻擊)。
-
DDoS攻擊:通過大量查詢請求癱瘓服務器。
-
解決方案:DNSSEC(DNS安全擴展)通過數字簽名驗證數據真實性。
-
-
數據一致性:
-
修改DNS記錄后,全球緩存需要等待TTL過期才能同步,可能導致短暫不一致。
-
-
隱私泄露:
-
DNS查詢可能暴露用戶訪問記錄,可通過DoH(DNS over HTTPS)加密傳輸。
-
5. DNS與其他分布式系統的對比
特性 | DNS | 區塊鏈 | CDN |
---|---|---|---|
數據存儲 | 分層分布式數據庫 | 去中心化賬本 | 分布式內容緩存 |
一致性模型 | 最終一致性(依賴TTL) | 強一致性(共識算法) | 最終一致性(緩存更新) |
主要目標 | 高效域名解析 | 不可篡改的交易記錄 | 加速內容分發 |
典型應用 | 互聯網基礎服務 | 加密貨幣、智能合約 | 視頻流媒體、網站加速 |
六、DNS服務器的配置
1、安裝 BIND(Berkeley Internet Name Domain)DNS 服務器
BIND 是一款廣泛應用的開源 DNS 服務器軟件。
說明:root@dns1的IP地址為192.168.52.50/24;root@dns2的IP地址為192.168.52.60/24
2、在防火墻的永久配置里添加 DNS 服務,并且讓?named
?服務(即 BIND DNS 服務器)立即啟動,同時設置了系統啟動時自動運行。
然后使用 systemctl status named?查看 named 服務的運行狀態。
服務處于?active (running)
?狀態,說明 BIND DNS服務器 已成功啟動并正在運行。
3、修改dns的配置文件
注:修改完dns的配置文件后,需要重啟 named 守護進程,才能立即使配置文件生效。
具體操作看下圖中前兩行命令。
下面兩圖分別為查詢成功和查詢的域名不存在的示例。
4、dns高速緩存的測試
在兩臺測試主機---dns1和dns2中指定DNS服務器地址都為主機dns1的IP地址。
測試過程(如下圖):

dns高速緩存解析
在這兩臺主機上指定相同的 DNS 服務器地址后,第二臺主機測試域名解析耗時為 0 毫秒,實現加速,主要有以下原因:
緩存機制
-
DNS 服務器緩存:DNS 服務器通常會緩存之前解析過的域名 - IP 地址映射信息。當第一臺主機(
dns1
)向?192.168.52.50
?這個 DNS 服務器查詢?www.qq.com
?時,DNS 服務器完成解析后會將結果緩存起來。當第二臺主機(dns2
)緊接著查詢?www.qq.com
?時,DNS 服務器直接從緩存中讀取結果并返回,無需再次進行復雜的遞歸查詢過程(從根域名服務器開始逐級查找 ),極大縮短了解析時間,所以耗時可能顯示為 0 毫秒 。 -
本地客戶端緩存:在某些情況下,如果客戶端(主機上的操作系統等 )也啟用了 DNS 緩存機制,第一臺主機查詢后,相關緩存可能也會被第二臺主機利用(比如在同一網絡環境且有共享緩存機制等 ),或者第二臺主機自身的緩存剛好命中了該域名的解析結果,也能加快解析速度 。
報錯信息解析:dns高速緩存測試報錯信息
報錯1:
可能導致的原因:
1.named服務沒開,或沒安裝
2.火墻
3、dns本身設置未開放網絡功能(端口未在ip上開放)報錯2:
可能導致的原因:1.dns的配置中限制了當前主機訪問服務的請求
七、搭建DNS正向解析
1、添加配置片段
首先,在 BIND DNS服務器的主配置文件 /etc/named.conf 和 子配置文件 /etc/named.rfc1912.zones 中添加配置片段。
主流做法是只在子配置文件中添加區域配置片段,這里是為了演示才在兩個文件中都進行了配置。
主配置文件 vs 子配置文件:在哪個文件中添加區域配置片段的優缺點對比
場景 | 直接在主配置文件中添加 | 通過子配置文件引入 |
---|---|---|
配置復雜度 | 適合簡單場景(如單區域)。 | 適合多區域場景,便于模塊化管理。 |
可讀性與維護性 | 配置集中在一個文件,可能顯得冗長。 | 按功能拆分文件(如?zones 、acls ),結構清晰。 |
默認實踐 | 非標準做法(主流發行版默認使用子文件)。 | 符合 BIND 最佳實踐,便于系統升級和管理。 |
權限與安全性 | 無本質區別,但主文件修改需謹慎(誤操作可能影響全局配置)。 | 子文件可單獨控制權限(如僅允許特定用戶修改區域配置)。 |
為什么主流做法使用子配置文件?
1. 配置模塊化
- 將區域配置(
zone
)、訪問控制(acl
)、日志規則等拆分到不同文件,避免主文件過于臃腫。
例如:// 主配置文件 `/etc/named.conf` include "/etc/named.options"; // 全局選項 include "/etc/named.zones"; // 區域配置 include "/etc/named.acls"; // ACL 規則
2. 系統兼容性
- 多數 Linux 發行版(如 CentOS、Ubuntu)默認通過?
include
?指令引用?/etc/named.rfc1912.zones
?作為區域配置文件。 - 直接修改主文件可能與系統升級或包管理工具(如?
yum
)產生沖突(工具可能覆蓋主文件)。
3. 權限隔離
- 子文件可單獨設置權限(如?
chmod 640 /etc/named.zones
),限制非管理員用戶修改特定區域配置。
2、編寫相應的區域文件
其次,要創建timinglee.org.zone這個文件,確保這個區域文件存在而且格式正確,所以下面我們選擇直接將 BIND 的本地回環區域文件(通常用于?localhost?解析)復制為?timinglee.org
?的區域文件,然后對這個區域文件再進行進一步修改以適配實際需求。
具體操作如下:
因為,/var/named/named.localhost的權限比較特殊,所以我們使用cp命令復制的時候要加上-p選項,將原文件的權限、所有者、組、時間戳等元數據等也一同復制。這對于復制系統配置文件(如 BIND 的區域文件)非常重要。
下圖為剛復制過來的文件,實際配置還是為/var/named/named.localhost的配置,還未根據實際需求進行修改。
下圖中的refresh、retry、expire 和 minimum 分別代表?刷新時間、重試時間、過期時間 和 A記錄最短有效期,如果$TTL被設定那么以設定值為準。
下面將對區域文件/var/named/timinglee.org.zone進行修改,修改為下圖這樣子。
3、最后,重啟服務,然后進行dns正向解析的測試
最后,我們使用systemctl restart named命令重啟服務,然后進行dns正向解析的測試。
發現被寫入區域文件的www.timinglee.org和bbs.timinglee.org可以進行訪問,而沒有寫進區域文件的haha.timinglee.org則顯示查詢的域名不存在。
測試主機dns1 指定的 DNS 服務器的 IP 地址為自身的IP地址。
測試過程如下圖:
八、輔助dns
1、部署輔助dns的方法
這里我們使用測試主機dns2來進行輔助dns的部署
測試主機dns1和dns2分別為主DNS和輔助DNS,將它們各自的DNS服務器指定為自己的IP地址。
在 BIND(Berkeley Internet Name Domain)DNS 服務器中,/var/named/slaves/
?目錄是?輔助 DNS 服務器(Slave DNS)?用于存儲?從主服務器同步的區域數據文件?的默認路徑。
2、輔助dns的數據同步優化
進行輔助dns數據同步優化的原因:
當主dns在更新域名的A記錄輔助dns默認是不同步的,這樣就會出現數據差異,使用輔助dns服務器作為解析服務器的用戶得到的地址就是錯誤的。
解決方法:
讓主dns主動通知輔助dns,讓輔助dns知道主dns的A記錄已經被更改,請同步數據到輔助dns上即可。
在進行完下圖的配置后,要前往 /etc/named.conf 這個主配置文件將關于 timinglee.org 的區域配置刪除,否則會讓DNS 配置出現?區域重復定義?的問題,導致 BIND 無法啟動。
使用區域配置文件中的serial值來進行同步數據,此值變化代表A記錄更新。
serial值只能做增量變化,最大10位數。
在主dns中重啟服務,再訪問 www.timinglee.org ,發現域名解析出來的IP地址變成了192.168.52.100。
而輔助dns中連重啟服務都不需要,直接就會向主dns同步數據,所以域名解析出來的IP地址也會變成192.168.52.100。