DNS 伺服器基礎

来源:http://www.cnblogs.com/bruce-gao/archive/2017/12/20/8075479.html
-Advertisement-
Play Games

DNS 伺服器基礎 一、DNS簡介 DNS(Domain Name System,功能變數名稱系統)是網際網路的一項服務; DNS 是將功能變數名稱和IP地址相互映射的一個分散式資料庫; DNS 是一種應用層協議,使用UDP和TCP的53埠; 1、DNS域命名空間 DNS域命名空間是一種層次結構,一般可分為根域、頂 ...


DNS 伺服器基礎

 

一、DNS簡介

DNS(Domain Name System,功能變數名稱系統)是網際網路的一項服務;

DNS 是將功能變數名稱和IP地址相互映射的一個分散式資料庫;

DNS 是一種應用層協議,使用UDP和TCP的53埠

1、DNS域命名空間

DNS域命名空間是一種層次結構,一般可分為根域、頂級域、二級域、子域以及主機名;

 

1)根域
使用“.”表示,位於域命名空間層次結構的最高層;
目前分佈於全世界的根伺服器只有13台,全部由Internet網路信息中心(InterNIC)管理,在根域伺服器中只保存了其下層的頂級域的DNS伺服器名稱和IP地址對應關係;
2)頂級域(TLD,Top Level Domain)
頂級域位於根域下層,可以分為兩類:組織域(.com,.net,.org,.gov,.edu,.mil等)和國家域(.iq,.tw,.hk,.jp,.cn等);
3)二級域
二級域位於頂級域下層,是指為了在Internet上使用而註冊到個人或企事業單位的功能變數名稱;
4)子域
子域是根據具體情況從二級域中按部門或地理位置創建;
5)主機名
位於DNS域命名空間的最低層,主要指電腦的主機名;
註意:FQDN(Full Qualified Domain Name,完全合格功能變數名稱)包括功能變數名稱和主機名

2、DNS名稱解析方式

1)正向解析:由功能變數名稱查找IP地址;
2)反向解析:由IP地址查找功能變數名稱;
註意:二者的命名空間不在同一個空間,不是同一棵樹,因此也不是同一個解析庫;

3、DNS查詢

1)遞歸查詢
當DNS伺服器接收到查詢請求時,不論成功或失敗,都會做出對應的響應(發生在DNS客戶端與DNS伺服器之間);
2)迭代查詢
DNS伺服器根據自己的高速緩存或區域的數據,以最佳結果響應;如果伺服器無法解析,它可能返回一個指針;指針指向下級功能變數名稱的DNS伺服器,繼續該過程,直到找到擁有所查詢名字的DNS伺服器,或知道出錯、超時為止(發生在DNS伺服器之間);

4、一次完整的DNS查詢過程

 


Client----->hosts文件----->DNS Local Cache----->DNS Server (recursion,遞歸)----->

  • 若為自己負責解析的域:直接查詢資料庫並返回答案;
  • 若不是自己負責解析的域:Server Cache----->iteration(迭代)

5、解析答案

  • 肯定答案
  • 否定答案:不存在查詢的鍵,因此,不存在與之對應的值;

 

  • 權威答案:由直接負責的DNS伺服器返回的答案;
  • 非權威答案

 

二、DNS伺服器的類型

負責解析至少一個域:

  • 主DNS伺服器
  • 輔助DNS伺服器

不負責域解析:

  • 緩存DNS伺服器

1)主-輔DNS伺服器

  • 主DNS伺服器:維護所負責解析的域資料庫的那台伺服器,讀寫操作均可進行;
  • 輔助DNS伺服器:從主DNS伺服器或其他的從DNS伺服器那裡“複製”一份解析庫,但只能進行讀操作;

2)“複製”操作的實現方式

  • 序列號:serial,也即是資料庫的版本號;主伺服器資料庫內容發生變化時,其版本號遞增;
  • 刷新時間間隔:refresh,從伺服器每次到主伺服器檢查序列號更新狀況;
  • 重試時間間隔:retry,從伺服器從主伺服器請求同步解析庫失敗時,再次發起嘗試請求的時間間隔;
  • 過期時長:expire,從伺服器始終聯繫不到主服務時,多久之後放棄從主伺服器同步數據,並停止提供服務;
  • 否定答案的緩存時長:negative answer ttl;

註意:主伺服器資料庫發生變化時,主伺服器會“通知”從伺服器隨時更新數據;

3)區域傳送

  • 全量傳送:axfr,傳送整個資料庫;
  • 增量傳送:ixfr,僅傳送變化的數據;

註意:區域(zone)和域(domain)的區別:
區域為物理概念,域為邏輯概念;
如bruce.com域包括正向解析庫(FQDN--->IP)和反向解析(IP--->FQDN),每個解析庫即為一個解析區域;

 

三、BIND 簡介

BIND(Berkeley Internet Name Domain)是由伯克利大學研發的,是當前互聯網上最長使用的DNS伺服器軟體,現在由ISC(Internet Systems Consortium)負責開發與維護;

1、bind 程式包

  • bind:提供dns server程式以及幾個常用的測試程式;
  • bind-utils:bind客戶端程式集,例如dig,host,nslookup等;
  • bind-libs:被bind和bind-utils包中的程式共同用到的庫文件;
  • bind-chroot:選裝,讓named運行於jail模式下;

 註意: 

  • dns:協議;
  • bind:dns協議的一種軟體實現 ;
  • named:bind程式運行的進程名;

bind 程式安裝完成後,預設即可作為緩存名稱伺服器使用;

 

2、bind 配置文件

1)bind 的主配置文件 /etc/named.conf

主配置文件格式:

  • 全局配置段 options {...} 
  • 日誌配置段 logging {...}
  • 區域配置段 zone {...}:配置那些由本機負責解析的區域或轉發的區域;

註意:每個配置語句必須以分號結尾;

2)bind 的區域解析庫文件

bind 的解析庫文件在 /var/named/ 目錄下,一般文件名 ZONE_NAME.zone

註意:

a. 一臺DNS伺服器可以同時為多個區域提供解析;

b. 必須要有根區域解析庫文件 named.ca
c. 還應該有localhost和127.0.0.1兩個區域解析庫文件,正向的為named.localhost,反向的為named.loopback

 

3)資源記錄(Resource Record,簡稱RR)

資源記錄類型有:A、AAAA、PTR、SOA、NS、CNAME、MX;

  • SOA:Start Of Authority,起始授權記錄;一個區域解析庫有且只有一個SOA記錄,且必須放在第一條;
  • NS:Name Service,功能變數名稱服務記錄;一個區域解析庫可以有多個NS記錄,其中一個為主記錄;
  • A:Address,地址記錄;FQDN--->IPv4;
  • AAAA:地址記錄;FQDN--->IPv6;
  • CNAME:Canonical Name,別名記錄;
  • PTR:Pointer;IP--->FQDN;
  • MX:Mail eXchanger,郵件交換器;有優先順序,為0~99,數字越小優先順序越高;

 

資源記錄的定義格式:

name [TTL] IN RR_TYPE value

a. SOA

name:當前區功能變數名稱稱,例如“bruce.com.”或“2.3.4.in-addr.arpa.”;
value:有多部分組成:

  • 當前區域的區功能變數名稱稱,也可以使用主DNS伺服器名稱;
  • 當前區域管理員的郵箱地址,但地址中不能使用@符號,一般用.代替;
  • 主從服務協調屬性的定義以及否定答案的TTL;

示例:

1 bruce.com.  86400  IN  SOA  bruce.com. admin.bruce.com.(
2             2017010801    ;seial
3             2H                  ;refresh
4             10M                ;retry
5             1W                 ;expire
6             1D                  ;negative answer ttl
7 )    

 

b. NS

name:當前區域的區功能變數名稱稱;
value:當前區域的某DNS伺服器的名稱,如ns.bruce.com.;

示例:

1 bruce.com. 86400 IN NS ns1.bruce.com.
2 bruce.com. 86400 IN NS ns2.bruce.com.

註意:一個區域可以有多個ns記錄;

 

c. MX

name:當前區域的區功能變數名稱稱;
value:當前區域某郵件交換器的主機名;

示例:

1 bruce.com. IN MX 10 mx1.bruce.com.
2 bruce.com. IN MX 20 mx2.bruce.com.

註意:MX記錄可以有多個,但每個記錄的value之前應該有一個數字表示其優先順序;

 

d. A

name:某FQDN,如www.bruce.com.;
value:某IPv4地址;

示例:

1 www.bruce.com. IN A 1.1.1.1
2 www.bruce.com. IN A 1.1.1.2
3 bbs.bruce.com. IN A 1.1.1.1

 

e. AAAA

name:FQDN;
value:IPv6;

 

f. PTR

name:IP地址,有特定格式,即IP地址反過來寫,而且需加特定尾碼;如1.2.3.4的記錄應該寫為4.3.2.1.in-addr.arpa.;
value:FQDN;

示例:

1 4.3.2.1.in-addr.arpa. IN PTR www.bruce.com.

 

g. CNAME

name:FQDN格式的別名;
value:FQDN格式的正式名稱;
示例:

1 web.bruce.com. IN CNAME www.bruce.com.

 

註意:

  • TTL可以從全局繼承;
  • @表示當前區域的名稱;
  • 相鄰的兩條記錄其name相同時,後面的可以省略;
  • 對於正向區域來說,各MX、NX等類型記錄的value為FQDN,此FQDN應該有一個A記錄;

 

四、DNS 工具

1、DNS 排錯工具

1)rndc
rndc工作在TCP的953埠,預設監聽於127.0.0.1地址,因此僅允許本地使用;

1 rndc status
2 rndc flush
3 rndc reload

 

2)named-checkconf

1 named-checkconf [/etc/named.conf]

 

3)named-checkzone

1 named-checkzone [ZONE_NAME] [ZONE_FILE]

 

2、DNS 測試工具

1)dig

註意:dig用於測試DNS系統,因此不會查詢hosts文件;

 1 dig [query options] [-t RR_TYPE] name [@SERVER]
 2   query options:
 3         +[no]trace:跟蹤解析過程;
 4         +[no]recurse:進行遞歸解析;
 5 
 6 dig -x IP
 7     反向解析測試
 8 
 9 dig -t axfr DOMAIN [@server]
10     模擬完全區域傳送    

 

2)host

1 host [-t RR_TYPE] name [server]

 

3)nslookup

1 nslookup [options] [name] [server]
2 
3 交互模式
4 nslookup>
5     server IP:以指定IP為DNS伺服器進行查詢;
6     set q=RR_TYPE:要查詢的資源記錄類型;
7     name:要查詢的名稱;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Q# 是微軟的量子語言,很厲害,所以本文告訴大家如何入門,如何配置 ...
  • 自己封裝個類庫,用於微信開發 使用的大概邏輯: Model層新建類Access_token 結合redis或其他資料庫使用 ...
  • 在開發的過程中我們總是會碰到多表操作的需求,今天我分享一個關於查詢的方法, 前言:在使用NHibernate中,需要將用戶表(Users)、部門表(Departments),鏈表查詢,在網上找了很多資料,可以在配置文件中配置相應的屬性達到關聯的效果,一對多、多對一、多對多的方式,但是使用後發現有些不 ...
  • 新建Common類庫 ...
  • 一、環境 VMware12 Pro CentOS-6.7-i386-bin-DVD1 jdk-8u151-linux-i586 二、詳細安裝步驟 前提:需要卸載自己Linux上的jdk rpm -qa | grep jdk 會顯示你所有包含jdk這個字元串的安裝包 rpm -e --nodeps 對 ...
  • 一、Linux中的文件許可權與目錄許可權 Linux中定義了3種訪問許可權,分別是r、w、x。其中r表示對象是可讀的,w表示對象是可寫的,x表示對象是可執行的,這3種許可權組成一組rwx分別對應對象的3個安全級別。這3個安全級別分別是對象的所屬者,對象的所屬組,系統其他用戶。比如圖1-1所示,文件的許可權 圖 ...
  • 今晚心血來潮,來加加班,想起還有一個博客,索性來寫寫,步驟會比較清楚,畢竟我有輕微強迫症... 聲明下,用的是centos6 的系統環境,預設root許可權,部署過程中iptables關閉,之後根據需求配置策略,selinux也是預設關閉的, 關閉iptables : /etc/init.d/ipta ...
  • 1.單詞說明 command n. 命令,指令 [kə'mɑ:nd] 單詞拼寫 名詞 單詞含義 音標(發音) command n. 命令,指令 [kə'mɑ:nd] 單詞拼寫 名詞 單詞含義 音標(發音) 提示:著重記憶單詞對應的意思,有能力的朋友最好詞性也記憶 2.詞性說明 n v vi vt c ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...