29.7. 網域名稱系統 (DNS)
前一頁 | 章 29. 網路伺服器 | 下一頁

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

轄區範例：

- `.` 是一般在文件中表達根轄區的方式。

- `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` 目錄在根目錄底下，以此類推。

### 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

前一頁 | 上一層 | 下一頁
29.6. 動態主機設置協定 (DHCP) | 起始頁 | 29.8. Apache HTTP 伺服器

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。