Linux基礎——Bind DNS服務 Part0

DNS簡介

域名系統(英語:Domain Name System,縮寫:DNS)是網際網路的一項服務。它作為將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便地訪問網際網路。DNS使用TCP和UDP埠53。

在域名系統的層次結構中,各種域名都隸屬於域名系統根域的下級。域名的第一級是頂級域,它包括通用頂級域,例如.com、.net和.org;以及國家和地區頂級域,例如.us、.cn和.tk。頂級域名下一層是二級域名,一級一級地往下。

FQDN意為完全合格域名(Fully Qualified Domain Name),它指定了所有的域名級別,包括頂級域與根域。它不含歧義,只有一種解釋方式。根域沒有命名,所以一般為空,但在有的情況下它會表示成一個. 例如 www.google.com. (FQDN)。

DNS查詢過程

DNS查詢過程分為兩種,遞迴查詢與迭代查詢。現實中一般合用遞迴與迭代查詢。

遞迴查詢

查詢過程如下:

迭代查詢

查詢過程如下

實際應用

DNS記錄

DNS記錄包含了:

  • SOA記錄
  • NS記錄
  • A記錄
  • AAAA記錄
  • MX記錄
  • SRV記錄
  • PTR記錄
  • CNAME記錄
  • TXT記錄

SOA記錄

SOA記錄通常在叢集中進行配置,它配置了區域傳送相關的數值,它包含了區域負責人的電子郵件地址和主要DNS伺服器的名稱,每個區域都有SOA記錄。

它的結構如下圖:

$TTL 86400
@ IN SOA ns.icann.org. noc.dns.icann.org. (
2020080302 ;Serial
7200 ;Refresh
3600 ;Retry
1209600 ;Expire
3600 ;Negative response caching TTL
)

Serial為該區域的序列號,用於在從伺服器獲取主伺服器SOA記錄時區別區域資料的新舊,從而決定啟用區域傳送。

Refresh為從伺服器查詢主伺服器SOA記錄來檢測伺服器更改的間隔秒數。

Retry為如果主伺服器沒有響應,從伺服器重新向主伺服器請求SOA記錄的秒數,必須小於Refresh。

Expire為如果主伺服器沒有響應,從伺服器停止響應該區域請求的秒數,該值必須大於Refresh與Retry的總和。

TTL為快取的生存時間。

NS記錄

它指示那個DNS伺服器對該域具有權威性(即哪個DNS伺服器包含了實際的DNS記錄)。以讓客戶端進行訪問。

NS記錄不能指向CNAME記錄。

A記錄

將域名對映到IP地址的記錄。

AAAA記錄

將域名對映到IPV6地址的記錄。

MX記錄

指定郵件伺服器負責接收該區域的電子郵件,它包含有優先順序,優先順序值越低則越優先。相同優先順序則是負載均衡。

SRV記錄

用於指定服務的位置,部分網路協議需要網路支援SRV。

SRV記錄一般為如下形式:

_service._proto.name. TTL class SRV priority weight port target.
  • service:服務的名稱。
  • proto:服務所需要的傳輸協議。一般為TCP或UDP。
  • name:記錄有效的域名,以點結尾。
  • TTL:DNS快取生存時間。
  • class:DNS型別欄位(一般為IN)。
  • priority:主機優先順序,值越低越優先。
  • weight:相同優先順序的相對權重,值越高越有可能被選中。
  • port:需要在該伺服器上找到伺服器的TCP或UDP埠
  • target:提供服務的機器的FQDN,以點結尾。

PTR記錄

用於將IP地址對映到域名,IPV4的反向解析使用特殊域in-addr.arpa並需要將所在域的IP以正向解析相反的形式新增上去。

例如我需要查詢8.8.4.4的域名,則查詢4.4.8.8.in-addr.arpa這個域。

CNAME記錄

指定了一個域名作為另一個域名的別名,CNAME記錄只能指向域名,不能指向IP地址。

TXT記錄

用於將文字與主機相關聯。在查詢該記錄是可以顯示指定文字。

區域型別

Bind軟體中包含的常用區域型別有:

  • Master
  • Hint
  • Slave
  • Forward
  • Stub

Master(主要區域)

表示伺服器擁有該區域資料的主副本,能改為其提供權威答案

Slave(輔助區域)

該區域為主區域的複製品,Masters列表包含了一個或多個IP地址,從伺服器則會向Masters列表中發出區域傳送的申請。

Stub(存根區域)

存根區域像一個輔助區域,但它只儲存NS記錄。

Forward(轉發區域)

這個區域將會將所有查詢轉發到其他伺服器。如果需要全域性轉發,則還是需要在全域性設定中配置全域性轉發器。

Hint(根區域)

Bind9中包含了根伺服器的列表,當伺服器啟動時將自動查詢根伺服器並獲得最新的根伺服器列表。