DNS 域名解析原理
-
域名系統的層次結構 :DNS 采用分層樹狀結構,頂級域名(如.com、.org、.net 等)位于頂層,下面是二級域名、三級域名等。例如,在域名 “www.example.com” 中,“com” 是頂級域名,“example” 是二級域名,“www” 是主機名。
-
域名解析的過程 :當用戶在瀏覽器中輸入一個域名時,首先會查詢本地 DNS 緩存,若找到則直接返回 IP 地址。若未找到,系統會向本地 DNS 服務器發送查詢請求。本地 DNS 服務器先查詢自己的緩存,若命中則返回結果;否則,會向根 DNS 服務器查詢頂級域名服務器的地址,再向頂級域名服務器查詢權威域名服務器的地址,最后向權威域名服務器查詢具體的 IP 地址,并將結果逐級返回給用戶。
DNS 主從同步實現過程
-
準備兩臺 DNS 服務器 :通常需要兩臺服務器,一臺作為主 DNS 服務器,另一臺作為從 DNS 服務器。
-
配置主 DNS 服務器 :在主 DNS 服務器上,編輯 named.conf 文件,添加區域定義,指定區域文件和允許進行區域傳輸的從 DNS 服務器 IP 地址。例如:
-
區域定義示例:
-
zone “example.com” IN { type master; file “/var/named/example.com.zone”; allow-transfer {192.168.1.2;}; };
-
其中,“example.com” 是要解析的域名,“master” 表示這是主 DNS 服務器,“/var/named/example.com.zone” 是區域文件的路徑,“allow-transfer” 指定允許進行區域傳輸的從 DNS 服務器 IP 地址為 192.168.1.2。
-
-
-
配置從 DNS 服務器 :在從 DNS 服務器上,編輯 named.conf 文件,添加區域定義,指定區域類型為 “slave”,并指定主 DNS 服務器的 IP 地址和區域文件的存儲位置。例如:
-
區域定義示例:
-
zone “example.com” IN { type slave; masters {192.168.1.1;}; file “/var/named/example.com.zone”; };
-
其中,“masters” 指定主 DNS 服務器的 IP 地址為 192.168.1.1。
-
-
-
啟動 DNS 服務 :在兩臺服務器上分別啟動 named 服務,并設置為開機自啟。
-
測試主從同步 :在主 DNS 服務器上修改區域文件,如添加或修改某個域名記錄,然后保存文件并通知 named 服務重新加載配置。在從 DNS 服務器上,使用 “rndc status” 命令查看同步狀態,也可以使用 “dig” 命令查詢域名記錄,驗證是否已經同步成功。
這些實驗需要在 Linux 環境下進行實際操作和配置,你可以根據具體的 Linux 發行版和網絡環境進行相應的調整和設置。
在DNS域名系統中,每個域分別由不同的組織進行管理。每個組織都可以將自己負責的域再分成一定數目的子域,并將這些子域委托給其他組織去管理。
本文IP地址為隨機出現僅為示例所用,若要實驗請以自身IP為準。
那么今天我們來做兩個實驗
實驗3:主從同步-完全區域傳送 當一個新的DNS服務器添加到區域中并配置為從DNS服務器時,它則會執行 完全區域傳送
按i編輯將內容更改以達到完全區域傳送
$TTL 1D
-
$TTL :定義了該區域文件中所有記錄的默認生存時間(TTL,Time to Live)。TTL 用于指定 DNS 記錄在 DNS 緩存中的有效期,單位是秒。這里設置為 1D,即 1 天。當一個 DNS 記錄被查詢后,它會在緩存中保留 1 天的時間,之后緩存會過期并需要重新查詢 DNS 服務器獲取最新的記錄。
@ IN SOA xixi.admin. (
-
@ :代表當前區域的根(即該區域的起始點)。
-
IN :表示互聯網類(Internet class),這是 DNS 記錄的類型之一,用于指定記錄適用于互聯網。
-
SOA :開始授權啟動(Start of Authority)記錄,是一個區域的權威信息,包含了關于該區域的一些重要參數,如主 DNS 服務器、管理員郵箱、序列號、刷新時間、重試時間、過期時間和最小生存時間等。
-
xixi.admin. :這里應該是管理員郵箱的前綴部分。在 DNS 配置中,通常會省略 “@” 符號,只保留郵箱的前綴部分,后面加上一個點來表示域名的結尾。例如,如果管理員郵箱是 xixi@admin.com,這里可能會寫成 xixi.admin.(不過這個例子可能不太準確,因為實際應用中可能需要正確配置域名格式,但這里主要是為了說明這個字段的含義)。
0 ; serial
-
0 :序列號,用于標識區域文件的版本。當區域文件發生更改時,序列號應該遞增,以便通知從 DNS 服務器該區域文件已更新,從而觸發區域傳輸。序列號的格式通常是年月日序號的形式,例如 2024092501 表示 2024 年 9 月 25 日的第一次更新。這里的 0 是一個簡單的示例,但在實際應用中應該使用更合理的編號方式。
1D ; refresh
-
1D :刷新時間,即從 DNS 服務器檢查主 DNS 服務器以獲取區域更新的時間間隔。這里設置為 1 天,表示從 DNS 服務器每隔 1 天會向主 DNS 服務器發送一次查詢,以檢查區域文件是否有更新。
1H ; retry
-
1H :重試時間,如果從 DNS 服務器在刷新時間內未能成功獲取區域更新,會等待這個時間后再次嘗試獲取更新。這里設置為 1 小時,表示如果第一次嘗試失敗,會在 1 小時后重新嘗試獲取區域更新。
1W ; expire
-
1W :過期時間,表示如果從 DNS 服務器在過期時間內未能成功獲取區域更新,它將停止響應關于該區域的查詢請求。這里設置為 1 周(1W),表示如果從 DNS 服務器在 1 周內無法獲取區域更新,它將不再提供該區域的 DNS 解析服務。
3H ) ; minimum
-
3H :最小生存時間,用于指定該區域的 DNS 記錄在緩存中的最小生存時間。當一個 DNS 記錄被查詢后,它在緩存中的生存時間不會低于這個值。這里設置為 3 小時,表示即使區域文件中某個記錄的 TTL 值低于 3 小時,也會以 3 小時為準。這個字段以 “)” 結束,表示 SOA 記錄的結束。
dns NS dns
-
dns :這是該區域的一個域名記錄,表示該區域的權威 DNS 服務器的名稱。
-
NS :名稱服務器(Name Server)記錄,用于指定該區域的權威 DNS 服務器。
-
dns :這里表示該區域的權威 DNS 服務器的名稱為 “dns”,通常需要與一個 A 記錄關聯,以指定其 IP 地址。
www A 192.168.5.128
-
www :這是該區域的一個域名記錄,表示一個主機名。
-
A :地址(Address)記錄,用于將域名解析到一個 IPv4 地址。
-
192.168.5.128 :這是 “www” 主機對應的 IPv4 地址,表示當用戶查詢 “www. 該區域域名” 時,DNS 服務器會返回這個 IP 地址。
以下是對這段配置文件的整體總結:
-
這段配置文件定義了一個 DNS 正向解析區域,其中包含了該區域的 SOA 記錄、NS 記錄和 A 記錄。
-
SOA 記錄提供了區域的基本信息和參數,如序列號、刷新時間、重試時間、過期時間和最小生存時間等。
-
NS 記錄指定了該區域的權威 DNS 服務器的名稱。
-
A 記錄將一個主機名(如 “www”)解析到一個具體的 IP 地址(如 “192.168.5.128”)。
-
這些記錄共同作用,使得 DNS 服務器能夠正確地將域名解析到對應的 IP 地址,從而實現域名解析的功能。
zone "12138.com." IN {type master;file "named.12138.com"; }; [root@server ~]# vim /var/named/named.12138.com $TTL 1D @ ? ? ? IN SOA @ admin.12138.com. ( 1 1M 1H 1W 1H )IN NS ns.12138.com. IN NS slave.12138.com. ns ? ? IN A 192.168.78.132 slave IN A 192.168.78.132 mail IN A 192.168.78.123 www IN A 192.168.78.123 ftp IN CNAME www w IN CNAME www 編輯好之后退出即可。 接下來配從機:134[root@slave ~]# systemctl start named [root@slave ~]# vim /etc/named.conf allow-query ? ? { any; };#這個可以沒有listen-on port 53 { 192.168.78.134; }; zone "12138.com" IN {type slave;masters { 192.168.78.132; };file "slaves/named.12138.com"; }; [root@slave ~]# systemctl restart named [root@slave ~]# ll /var/named/slaves/ 總用量 4 -rw-r--r--. 1 named named 493 ?8月 29 07:33 named.12138.com #測試:133 [root@client ~]# host www.12138.com 192.168.78.134 Using domain server: Name: 192.168.78.134 Address: 192.168.78.134#53 Aliases: www.12138.com has address 192.168.78.123
這樣,測試完成就可以了
到下一個實驗
實驗4:主從同步-增量區域傳輸 在主DNS服務器上獲取完整的資源記錄副本;同時,為了保證數據同步,主域名服務器有更新時也會及時通知輔助域
名服務器從而執行 增量區域傳送
無法在輔助服務器上更改區域的DNS記錄,但在某些情況下,輔助服務器可以將更改請求傳遞到主服務器。
#主:132 [root@server ~]# vim /var/named/named.12138.com $TTL 1D @ ? ? ? IN SOA @ admin.12138.com. ( 3 1M 1H 1W 1H )IN NS ns.12138.com. IN NS slave.12138.com.IN MX 10 mail.12138.com. ns ? ? IN A 192.168.78.132 slave IN A 192.168.78.132 mail IN A 192.168.78.123 www IN A 192.168.78.123 ftp IN CNAME www w IN CNAME www [root@slave ~]# systemctl restart named #從134 [root@slave ~]# rndc refresh 12138.com zone refresh queued #測試 [root@client ~]# host w.zhang.com 192.168.78.134 Using domain server: Name: 192.168.78.134 Address: 192.168.78.134#53 Aliases: w.12138.com is an alias for www.12138.com. www.12138.com has address 192.168.78.123
這樣就可以完成實驗咯
后面可以用[root@localhost ~]# rndc ?refresh ?zhang.com
[root@localhost ~]# rndc ?refresh ?5.168.192.in-addr.arpa這兩條命令來測試是否成功