29.7. 網域名稱系統 (DNS)

網域名稱系統 (Domain Name System, DNS) 是一種協定用來轉換網域名稱為 IP 位址,反之亦然。DNS 會協調網際網路上有權的根節點 (Authoritative root)、最上層網域 (Top Level Domain, TLD) 及其他小規模名稱伺服器來取得結果,而這些伺服器可管理與快取個自的網域資訊。要在系統上做 DNS 查詢並不需要架設一個名稱伺服器。

以下表格會說明一些與 DNS 有關的術語:

表格 29.4. DNS 術語
術語定義
正向 DNS (Forward DNS)將主機名稱對應 IP 位址的動作。
源頭 (Origin)代表某個轄區檔案中所涵蓋的網域。
解析器 (Resolver)主機向名稱伺服器查詢轄區資訊的系統程序。
反向 DNS (Reverse DNS)IP 對應主機名稱的動作。
根轄區 (Root zone)網際網路轄區階層的最開始,所有的轄區會在根轄區之下,類似在檔案系統中所有的檔案會在根目錄底下。
轄區 (Zone)獨立的網域、子網域或或由相同授權 (Authority) 管理的部分 DNS

轄區範例:

如您所見,更詳細的主機名稱會加在左方,例如 example.org.org. 更具體,如同 org. 比根轄區更具體,主機名稱每一部份的架構很像檔案系統:/dev 目錄在根目錄底下,以此類推。

29.7.1. 要架設名稱伺服器的原因

名稱伺服器通常有兩種形式:有權的 (Authoritative) 名稱伺服器與快取 (或稱解析) 名稱伺服器。

以下情況會需要一台有權的名稱伺服器:

  • 想要提供 DNS 資訊給全世界,做為官方回覆查詢。

  • 已經註冊了一個網域,例如 example.org,且要將 IP 位址分配到主機名稱下。

  • 一段 IP 位址範圍需要反向 DNS 項目 (IP 轉主機名稱)。

  • 要有一台備援或次要名稱伺服器用來回覆查詢。

以下情況會需要一台快取名稱伺服器:

  • 比起查詢外部的名稱伺服器本地 DNS 伺服器可以快取並更快的回應。

當查詢 www.FreeBSD.org 時,解析程式通常會查詢上游 ISP 的名稱伺服器然後接收其回覆,使用本地、快取 DNS 伺服器,只需要由快取 DNS 伺服器對外部做一次查詢,其他的查詢則不需要再向區域網路之外查詢,因為這些資訊已經在本地被快取了。

29.7.2. DNS Server Configuration

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 確保安全的網域現在可以運作。

% 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>。