DNS主從同步及解析

DNS 域名解析原理

  • 域名系統的層次結構 :DNS 采用分層樹狀結構,頂級域名(如.com、.org、.net 等)位于頂層,下面是二級域名、三級域名等。例如,在域名 “www.example.com” 中,“com” 是頂級域名,“example” 是二級域名,“www” 是主機名。

  • 域名解析的過程 :當用戶在瀏覽器中輸入一個域名時,首先會查詢本地 DNS 緩存,若找到則直接返回 IP 地址。若未找到,系統會向本地 DNS 服務器發送查詢請求。本地 DNS 服務器先查詢自己的緩存,若命中則返回結果;否則,會向根 DNS 服務器查詢頂級域名服務器的地址,再向頂級域名服務器查詢權威域名服務器的地址,最后向權威域名服務器查詢具體的 IP 地址,并將結果逐級返回給用戶。

DNS 主從同步實現過程

  1. 準備兩臺 DNS 服務器 :通常需要兩臺服務器,一臺作為主 DNS 服務器,另一臺作為從 DNS 服務器。

  2. 配置主 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。

  3. 配置從 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。

  4. 啟動 DNS 服務 :在兩臺服務器上分別啟動 named 服務,并設置為開機自啟。

  5. 測試主從同步 :在主 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這兩條命令來測試是否成功

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903258.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903258.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903258.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

再看 BBR 到 BBRv3 的公平性改進

從看一篇論文開始:Performance Evaluation of TCP BBRv3 in Networks with Multiple Round Trip Times,結論比較悲觀: 雖然 BBRv2/3 試圖解決 BBRv1 的公平性問題,但結果依舊不夠理想,BBR 的迭代依舊任重而道遠。 BB…

locust壓力測試

安裝 pip install locust驗證是否安裝成功 locust -V使用 網上的教程基本上是前幾年的,locust已經更新了好幾個版本,有點過時了,在此做一個總結 啟動 默認是使用瀏覽器進行設置的 # 使用瀏覽器 locust -f .\main.py其他參數 Usage: locust […

優先隊列和單調隊列(雙端隊列實現的)

這里寫自定義目錄標題 一、優先隊列與單調隊列二、優先隊列2.1 概念2.2 增刪查 判空2.3 示例代碼 三、雙端隊列四、單調隊列4.1 單調遞增隊列4.2 單調遞減隊列 一、優先隊列與單調隊列 二、優先隊列 2.1 概念 一種特殊的隊列,它與普通隊列的主要區別在于元素的出…

如何在idea中寫spark程序

在 IntelliJ IDEA 中編寫 Spark 程序是一個高效且便捷的方式,以下是一個詳細的步驟指南,幫助你在 IntelliJ IDEA 中創建和運行 Spark 程序。 一、環境準備 安裝 Java: 確保已經安裝了 JDK 1.8 或更高版本。可以通過以下命令檢查:…

BERT BERT

BERT ***** 2020年3月11日更新:更小的BERT模型 ***** 這是在《深閱讀的學生學得更好:預訓練緊湊模型的重要性》(arXiv:1908.08962)中提到的24種較小規模的英文未分詞BERT模型的發布。 我們已經證明,標準的BERT架構和…

SpringBoot啟動警告:OpenJDK 64-Bit Server VM warning

問題描述 以Debug模式啟動Spring boot項目之后,日志打印:OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended, 警告信息 解決方案:配置VM opt…

“該虛擬機似乎正在使用中“

當某一天打開虛擬機突然彈出"該虛擬機似乎正在使用中"。 遇到這種問題的解決方法很簡單,出現這種問題是因為錯誤關閉虛擬機導致,當我們點擊獲取所有權時發現不能解決問題。這里分享一種簡單的解決方法。 打開虛擬機的文件目錄 找到lck文件夾下…

【CSS】層疊,優先級與繼承(三):超詳細繼承知識點

目錄 繼承一、什么是繼承?2.1 祖先元素2.2 默認繼承/默認不繼承 二、可繼承屬性2.1 字體相關屬性2.2 文本相關屬性2.3 列表相關屬性 三、不可繼承屬性3.1 盒模型相關屬性3.2 背景相關屬性 四、屬性初始值4.1 根元素4.2 屬性的初始值4.3 得出結論 五、強制繼承5.1 in…

Android LiveData關鍵代碼

1、observer方法 public void observe(NonNull LifecycleOwner owner, NonNull Observer<? super T> observer) {assertMainThread("observe");if (owner.getLifecycle().getCurrentState() DESTROYED) {// ignorereturn;}LifecycleBoundObserver wrapper …

Docker-高級使用

前言 書接上文Docker-初級安裝及使用_用docker安裝doccano-CSDN博客&#xff0c;我們講解了Docker的基本操作&#xff0c;下面我們講解的是高級使用&#xff0c;請大家做好準備&#xff01; 大家如果是從初級安裝使用過來的話&#xff0c;建議把之前鏡像和搭載的容器數據卷里面…

Spring Boot常用注解詳解:實例與核心概念

Spring Boot常用注解詳解&#xff1a;實例與核心概念 前言 Spring Boot作為Java領域最受歡迎的快速開發框架&#xff0c;其核心特性之一是通過注解&#xff08;Annotation&#xff09;簡化配置&#xff0c;提高開發效率。注解驅動開發模式讓開發者告別繁瑣的XML配置&#xff…

TRO再添新案 TME再拿下一熱門IP,涉及Paddington多個商標

4月2日和4月8日&#xff0c;TME律所代理Paddington & Company Ltd.對熱門IP Paddington Bear帕丁頓熊的多類商標發起維權&#xff0c;覆蓋文具、家居用品、毛絨玩具、紡織用品、游戲、電影、咖啡、填充玩具等領域。跨境賣家需立即排查店鋪內的相關產品&#xff01; 案件基…

經驗分享-上傳ios的ipa文件

.ipa格式的二進制文件&#xff0c;是打包后生成的文件&#xff0c;無論我們是放上去testflight測試還是正式上傳到app store&#xff0c;都需要先上傳到蘋果開發者中心的app store connect上的構建版本上。 在app store connect上&#xff0c;上傳構建版本的功能&#xff0c;它…

docker(3) -- 圖形界面

1. 前言 在wsl(8) – 圖形界面文章中介紹了wsl2默認是支持圖形界面的&#xff0c;現在我們嘗試下在docker中運行gui程序試試看。 2. x11-apps 啟動一個docker&#xff0c;安裝一些gui小程序&#xff0c;然后運行&#xff0c;發現會失敗。ubuntu_base詳見文章wsl(6) – 安裝d…

Docker容器跑定時任務腳本

最近搞了一個Docker容器跑腳本&#xff0c;想設置一個定時任務&#xff0c;每天8點運行一次&#xff0c;結果死活不成功。排查了一天&#xff0c;有一點當局者迷了&#xff0c;明明時間是對的&#xff0c;明明時區是對的&#xff0c;定時任務也是啟動的&#xff0c;它就是不執行…

【Linux】什么是完全限定域名

FQDN 是 “完全限定域名” (Fully Qualified Domain Name) 的縮寫。 FQDN 是一個互聯網上特定計算機或主機的完整且唯一的域名。它詳細說明了該主機在域名系統 (DNS) 層級結構中的確切位置。 一個 FQDN 通常由以下幾個部分組成&#xff0c;從左到右依次是&#xff1a; 主機名…

小結:BFD

*BFD&#xff08;雙向轉發檢測&#xff0c;Bidirectional Forwarding Detection&#xff09;是一種快速、輕量級的故障檢測機制&#xff0c;用于檢測網絡中兩點之間的連通性。它廣泛應用于各種場景 1. 檢測 IP 鏈路 應用場景&#xff1a; BFD 用于檢測兩臺設備之間的 IP 層連…

配置Spark歷史服務器,輕松查看任務記錄

在大數據處理中&#xff0c;Spark是一個強大的分布式計算框架。但當Spark服務重啟后&#xff0c;之前的運行記錄就會消失&#xff0c;給我們排查問題和分析任務執行情況帶來不便。這時&#xff0c;配置Spark歷史服務器就顯得尤為重要&#xff0c;它能幫助我們保存和查看歷史任務…

(六)RestAPI 毛子(外部導入打卡/游標分頁/Refit/Http resilience/批量提交/Quartz后臺任務/Hateoas Driven)

文章目錄 項目地址一、外部導入打卡功能1.1 創建實體1. Entry實體2. EntryImport實體3. 添加數據庫配置4. 創建表 1.2 創建DTOs1.3 創建GetEnties Controller 二、游標分頁2.1 創建所需要的DTOs1. 創建游標分頁的請求參數2. 創建CollectionResponse3. 添加游標編碼和解碼的DTO …

Node.js CSRF 保護指南:示例及啟用方法

解釋 CSRF 跨站請求偽造 (CSRF/XSRF) 是一種利用用戶權限劫持會話的攻擊。這種攻擊策略允許攻擊者通過誘騙用戶以攻擊者的名義提交惡意請求,從而繞過我們的安全措施。 CSRF 攻擊之所以可能發生,是因為兩個原因。首先,CSRF 攻擊利用了用戶無法辨別看似合法的 HTML 元素是否…