網域名稱系統 (Domain Name System, DNS) 是一種協定用來轉換網域名稱為 IP 位址,反之亦然。DNS 會協調網際網路上有權的根節點 (Authoritative root)、最上層網域 (Top Level Domain, TLD) 及其他小規模名稱伺服器來取得結果,而這些伺服器可管理與快取個自的網域資訊。要在系統上做 DNS 查詢並不需要架設一個名稱伺服器。
以下表格會說明一些與 DNS 有關的術語:
術語 | 定義 |
---|---|
正向 DNS (Forward DNS) | 將主機名稱對應 IP 位址的動作。 |
源頭 (Origin) | 代表某個轄區檔案中所涵蓋的網域。 |
解析器 (Resolver) | 主機向名稱伺服器查詢轄區資訊的系統程序。 |
反向 DNS (Reverse DNS) | 將 IP 對應主機名稱的動作。 |
根轄區 (Root zone) | 網際網路轄區階層的最開始,所有的轄區會在根轄區之下,類似在檔案系統中所有的檔案會在根目錄底下。 |
轄區 (Zone) | 獨立的網域、子網域或或由相同授權 (Authority) 管理的部分 DNS。 |
轄區範例:
.
是一般在文件中表達根轄區的方式。
org.
是一個在根轄區底下的最上層網域 (Top Level Domain , TLD)。
example.org.
是一個在 org.
TLD 底下的轄區。
1.168.192.in-addr.arpa
是一個轄區用來代表所有在 192.168.1.*
IP 位址空間底下的 IP 位址。
如您所見,更詳細的主機名稱會加在左方,例如 example.org.
比 org.
更具體,如同 org.
比根轄區更具體,主機名稱每一部份的架構很像檔案系統:/dev
目錄在根目錄底下,以此類推。
名稱伺服器通常有兩種形式:有權的 (Authoritative) 名稱伺服器與快取 (或稱解析) 名稱伺服器。
以下情況會需要一台有權的名稱伺服器:
想要提供 DNS 資訊給全世界,做為官方回覆查詢。
已經註冊了一個網域,例如 example.org
,且要將 IP 位址分配到主機名稱下。
一段 IP 位址範圍需要反向 DNS 項目 (IP 轉主機名稱)。
要有一台備援或次要名稱伺服器用來回覆查詢。
以下情況會需要一台快取名稱伺服器:
比起查詢外部的名稱伺服器本地 DNS 伺服器可以快取並更快的回應。
當查詢 www.FreeBSD.org
時,解析程式通常會查詢上游 ISP 的名稱伺服器然後接收其回覆,使用本地、快取 DNS 伺服器,只需要由快取 DNS 伺服器對外部做一次查詢,其他的查詢則不需要再向區域網路之外查詢,因為這些資訊已經在本地被快取了。
Unbound 由 FreeBSD 基礎系統提供,預設只會提供本機的 DNS 解析,雖然基礎系統的套件可被設定提供本機以外的解析服務,但要解決這樣的需求仍建議安裝 FreeBSD Port 套件集中的 Unbound。
要開啟 Unbound 可加入下行到 /etc/rc.conf
:
local_unbound_enable="YES"
任何已存在於 /etc/resolv.conf
中的名稱伺服器會在新的 Unbound 設定中被設為追隨者 (Forwarder)。
若任一個列在清單中的名稱伺服器不支援 DNSSEC,則本地的 DNS 解析便會失敗,請確認有測試每一台名稱伺服器並移除所有測試失敗的項目。以下指令會顯示出信認樹或在 192.168.1.1
上執行失敗的名稱伺服器:
%
drill -S FreeBSD.org @192.168.1.1
確認完每一台名稱伺服器都支援 DNSSEC 後啟動 Unbound:
#
service local_unbound onestart
這將會更新 /etc/resolv.conf
來讓查詢已用 DNSSEC 確保安全的網域現在可以運作,例如,執行以下指令來檢驗 FreeBSD.org DNSSEC 信任樹:
%
drill -S FreeBSD.org
;; Number of trusted keys: 1
;; Chasing: freebsd.org. A
DNSSEC Trust tree:
freebsd.org. (A)
|---freebsd.org. (DNSKEY keytag: 36786 alg: 8 flags: 256)
|---freebsd.org. (DNSKEY keytag: 32659 alg: 8 flags: 257)
|---freebsd.org. (DS keytag: 32659 digest type: 2)
|---org. (DNSKEY keytag: 49587 alg: 7 flags: 256)
|---org. (DNSKEY keytag: 9795 alg: 7 flags: 257)
|---org. (DNSKEY keytag: 21366 alg: 7 flags: 257)
|---org. (DS keytag: 21366 digest type: 1)
| |---. (DNSKEY keytag: 40926 alg: 8 flags: 256)
| |---. (DNSKEY keytag: 19036 alg: 8 flags: 257)
|---org. (DS keytag: 21366 digest type: 2)
|---. (DNSKEY keytag: 40926 alg: 8 flags: 256)
|---. (DNSKEY keytag: 19036 alg: 8 flags: 257)
;; Chase successful
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。