目錄
一、域名服務基礎:從 “名字” 到 “地址” 的轉換
1??什么是域名?
2??什么是 DNS?
3??DNS 用 TCP 還是 UDP?
二、DNS 服務器:各司其職的 “導航站”
1??根域名服務器
2??頂級域名服務器
3??權威域名服務器
4??本地 DNS 服務器
5??轉發服務器
三、正向解析與反向解析:DNS 的兩種 “查詢模式”
1??正向解析:域名→IP
2??反向解析:IP→域名
3??區域(Zone)的概念
四、DNS 查詢方式:遞歸與迭代
1??遞歸查詢:“你幫我搞定”
2??迭代查詢:“你告訴我下一步找誰”
3??完整查詢過程(以www.linuxprobe.com為例)
五、Linux 構建緩存域名服務器
1??為什么需要緩存 DNS?
2??工具:BIND(最常用的 DNS 軟件)
3??配置緩存 DNS 服務器(步驟)
步驟 1:修改主配置文件
步驟 2:重啟服務并測試
六、Linux 構建主從域名服務器
1??主從服務器的角色
2??配置示例(環境:主服務器 192.168.141.130,從服務器 192.168.141.129)
步驟 1:配置主服務器
步驟 2:配置從服務器
步驟 3:測試
DNS(域名系統)是互聯網的 “導航系統”,讓我們能通過好記的域名(如www.baidu.com)訪問網站,而不是復雜的 IP 地址(如 14.215.177.38)。對于 Linux 初學者來說,理解 DNS 的工作原理并掌握其配置方法,是搭建網絡服務的重要基礎。
一、域名服務基礎:從 “名字” 到 “地址” 的轉換
1??什么是域名?
域名(Domain Name)是互聯網上計算機或服務器的 “名字”,由一串用點分隔的字符組成,必須以點結尾(如www.qq.com.cn.),我們日常看到的 “www.qq.com.cn” 只是簡略形式。
它的核心作用是替代 IP 地址:人類對 “www.baidu.com” 的記憶遠比對 “14.215.177.38” 容易,而 DNS 的任務就是把 “名字” 翻譯成 “地址”。
通過域名系統(DNS)實現域名與IP地址的映射。
2??什么是 DNS?
DNS 就是用于將網站的域名轉換為IP地址的系統。DNS(域名系統)是一個分布式數據庫,負責存儲域名與 IP 地址的對應關系,并提供查詢服務。簡單說,當你在瀏覽器輸入 “www.example.com” 時:
- 你的電腦會向 DNS 服務器發送查詢:“這個域名對應的 IP 是多少?”
- DNS 服務器通過一系列查詢,找到對應的 IP(如 93.184.216.34)并返回;
- 電腦用 IP 地址連接服務器,獲取網頁內容。
DNS 的關鍵參數:
- 使用端口:TCP 和 UDP 的 53 端口;
- 長度限制:每級域名最長 63 字符,總長度不超過 253 字符。
3??DNS 用 TCP 還是 UDP?
DNS 根據場景選擇協議,初學者只需記住:
- UDP:用于常規查詢(如瀏覽器查域名),速度快、數據量小(≤512 字節),適合緩存查詢、迭代查詢;
- TCP:用于大量數據傳輸(如主從服務器同步數據)、大型響應(>512 字節),或防止攻擊,因為 TCP 需要建立連接,更可靠。
二、DNS 服務器:各司其職的 “導航站”
DNS 系統是分層的,不同服務器負責不同環節,就像 “國家 - 省 - 市” 的行政體系:
1??根域名服務器
DNS 的 “頂層領導”,全球共 13 組(標識為 A-M),不直接解析域名,而是指引查詢到對應的頂級域名服務器。例如:
- A 根服務器:管理單位INTERNIC.NET,位于美國弗吉尼亞州,IP 為 198.41.0.4;
- M 根服務器:由 WIDE Project 管理,位于日本東京,IP 為 202.12.27.33。
2??頂級域名服務器
負責 “頂級域名”(如.com、.org、.cn)的解析,指引查詢到下一級服務器。例如:
- .com 服務器:管理所有以.com 結尾的域名;
- .cn 服務器:管理中國國家域名(如.qq.com.cn的頂級域是.cn)。
3??權威域名服務器
“具體管事的”,保存某一域名的詳細解析記錄(如www.baidu.com的 IP),是該域名的 “官方服務器”(如阿里云 DNS、騰訊云 DNS)。
4??本地 DNS 服務器
你家寬帶或公司網絡提供的 DNS(如 114.114.114.114),負責替你完成整個查詢過程:
- 先查自己的緩存,有結果直接返回;
- 沒有則依次向根、頂級、權威服務器查詢,最后把結果返回給你,并緩存下來。
5??轉發服務器
可選的 “中間代理”,接收查詢后轉發給其他 DNS 服務器,適合大型網絡減少重復查詢(比如公司內網用轉發服務器統一處理外部查詢)。
三、正向解析與反向解析:DNS 的兩種 “查詢模式”
DNS 的核心是 “地址對應關系”,分為兩種查詢方向:
1??正向解析:域名→IP
最常用的功能,根據域名查 IP。例如:輸入 “www.baidu.com”,得到 IP“14.215.177.38”。
2??反向解析:IP→域名
根據 IP 查域名,用途較少但重要(如反垃圾郵件驗證:驗證發送郵件的 IP 是否對應宣稱的域名)。例如:輸入 “14.215.177.38”,得到 “www.baidu.com”。
3??區域(Zone)的概念
每臺 DNS 服務器只負責一小部分 “范圍”(稱為 “區域”):
- 正向區域:存儲域名→IP 的記錄(如xykj.com區域);
- 反向區域:存儲 IP→域名的記錄(如 192.168.141.x 網段的區域)。
四、DNS 查詢方式:遞歸與迭代
DNS 查詢有兩種方式,就像 “找人” 的兩種策略:
1??遞歸查詢:“你幫我搞定”
客戶端(如你的電腦)向本地 DNS 服務器查詢時,本地 DNS 會 “包辦到底”:如果自己不知道,就主動向其他服務器查詢,直到拿到結果返回給你。
特點:只需發一次請求,等待結果即可(類似 “我問快遞員我的快遞在哪,他查清楚告訴我市井”)。
2??迭代查詢:“你告訴我下一步找誰”
本地 DNS 服務器向其他服務器(如根、頂級服務器)查詢時,對方不會直接給結果,而是告訴你 “去問下一個服務器”。本地 DNS 需要自己一步步找下去。
特點:可能發多次請求,目標不斷變化(類似 “我問路人郵局在哪,他說‘前面路口問交警’,我再去問交警”)。
3??完整查詢過程(以www.linuxprobe.com為例)
- 你的電腦先查本地緩存和 hosts 文件(hosts 文件優先級高于 DNS,Linux 路徑為 /etc/hosts,Windows 為 C:\Windows\System32\drivers\etc\hosts);
- 緩存和 hosts 中沒有,就向本地 DNS 服務器發送遞歸查詢;
- 本地 DNS 服務器查自己的緩存,沒有則開始迭代查詢:
- 問根服務器:“www.linuxprobe.com在哪?” 根服務器說:“去問.com 頂級服務器”;
- 問.com 頂級服務器,對方說:“去問linuxprobe.com的權威服務器”;
- 問linuxprobe.com的權威服務器,得到 IP 地址;
- 本地 DNS 服務器將結果緩存,再返回給你的電腦。
五、Linux 構建緩存域名服務器
緩存 DNS 服務器的作用是 “記住” 之前的查詢結果,讓后續查詢更快(類似 “記筆記”),適合內網環境(如公司、學校)。
1??為什么需要緩存 DNS?
- 提高速度:重復訪問同一域名時,直接用緩存結果,不用再查外部服務器;
- 節省流量:減少對外部 DNS 的依賴,降低出口帶寬占用;
- 增強安全:可屏蔽惡意網站,限制內網用戶訪問風險站點;
- 方便管理:內網設備用緩存服務器,統一解析規則。
2??工具:BIND(最常用的 DNS 軟件)
BIND(Berkeley Internet Name Domain)是 Linux 上主流的 DNS 服務軟件,通過以下步驟安裝和控制:
- 安裝:
sudo apt install bind9
(Debian/Ubuntu)或yum install bind
(CentOS); - 服務控制:
systemctl start named
(啟動)、systemctl status named
(查看狀態)。
3??配置緩存 DNS 服務器(步驟)
以 “192.168.141.130” 作為緩存服務器為例:
步驟 1:修改主配置文件
主配置文件為/etc/bind/named.conf.options
,關鍵設置:
options
directory "/var/cache/bind"; # 數據文件存放目錄
recursion yes; # 啟用遞歸查詢(必須,因為緩存服務器要替客戶端查詢)
listen-on { any; }; # 監聽所有網絡接口
allow-query { any; }; # 允許所有客戶端查詢
forwarders { # 轉發器:自己查不到時,轉發給這些服務器223.5.5.5; # 阿里云DNS114.114.114.114; # 國內通用DNS
};
dnssec-validation auto; # 自動驗證DNS數據有效性
步驟 2:重啟服務并測試
bash
sudo systemctl restart named # 重啟服務
sudo systemctl stop firewalld # 關閉防火墻(避免端口被擋)
在客戶端(如 192.168.141.128)的/etc/resolv.conf
中設置 DNS 為 192.168.141.130,然后用nslookup www.baidu.com
測試:如果能返回 IP,說明配置成功。
六、Linux 構建主從域名服務器
主從域名服務器用于 “熱備份”:主服務器負責維護數據,從服務器同步主服務器的數據,避免主服務器故障導致解析失效。
1??主從服務器的角色
- 主域名服務器:擁有某區域的 “決定權”,維護該區域的解析記錄(如xykj.com的 A 記錄),可自主修改數據;
- 從域名服務器:同步主服務器的數據,提供相同的解析服務,作為備份(不能自己修改數據)。
2??配置示例(環境:主服務器 192.168.141.130,從服務器 192.168.141.129)
步驟 1:配置主服務器
- 安裝 bind9:
sudo apt install bind9
; - 修改區域配置文件
/etc/bind/named.conf.default-zones
,添加正向區域:zone
zone "xykj.com" {type master; # 主服務器file "/etc/bind/xykj.local"; # 區域數據文件路徑 };
- 創建區域數據文件
/etc/bind/xykj.local
(存儲域名→IP 記錄):zone
$TTL 604800 # 記錄在緩存中存活7天 @ IN SOA xykj.com. admin.xykj.com. (2 ; 序列號(每次修改+1)604800 ; 刷新時間(7天,從服務器多久查一次主服務器)86400 ; 重試時間(1天,查不到時多久再試)2419200 ; 過期時間(28天,超過多久不再同步)604800 ; 否定緩存時間(7天,查不到的記錄緩存多久) ) @ IN NS xykj.com. # 域名服務器記錄 @ IN A 192.168.141.131 # xykj.com對應IP www IN A 192.168.141.131 # www.xykj.com對應IP
- 檢查配置:
named-checkzone xykj.com /etc/bind/xykj.local
,顯示 “OK” 則有效; - 啟動服務:
systemctl start named
。
步驟 2:配置從服務器
- 安裝 bind9:
sudo apt install bind9
; - 修改區域配置文件
/etc/bind/named.conf.default-zones
,添加正向區域(指向主服務器):zone
zone "xykj.com" {type slave; # 從服務器masters { 192.168.141.130; }; # 主服務器IPfile "/var/cache/bind/xykj.local.slave"; # 同步的文件路徑 };
- 啟動服務:
systemctl start named
,從服務器會自動同步主服務器的數據。
步驟 3:測試
在客戶機(192.168.141.128)的/etc/resolv.conf
中設置 DNS 為 192.168.141.129,用nslookup www.xykj.com
測試:能返回 192.168.141.131,說明從服務器工作正常。