32.7.域名系统(DNS)

域名系统(DNS)是通过该协议将域名映射到 IP 地址,反之亦然。DNS 在互联网上通过一个相对复杂的系统进行协调,该系统包括权威根、顶级域(TLD)和其他小规模的名称服务器,这些服务器承载并缓存各个域的信息。执行 DNS 查询并不需要运行名称服务器。

以下表格描述了一些与 DNS 相关的术语:

表 4. DNS 术语

术语
定义

正向 DNS

将主机名映射到 IP 地址。

原点

指的是特定区域文件中所覆盖的域。

解析器

一种系统进程,通过该进程,计算机向名称服务器查询区域信息。

反向 DNS

将 IP 地址映射到主机名。

根区

互联网区域层次结构的起点。所有区域都位于根区下,类似于文件系统中所有文件都位于根目录下。

区域

一个由同一权威管理的独立域、子域或 DNS 的一部分。

区域示例:

  • . 通常在文档中表示根区。

  • org. 是根区下的一个顶级域(TLD)。

  • example.org.org. TLD 下的一个区域。

  • 1.168.192.in-addr.arpa 是一个区域,引用所有属于 192.168.1.* IP 地址空间的 IP 地址。

如上所示,主机名的更具体部分位于其左侧。例如,example.org.org. 更具体,org. 又比根区更具体。主机名的每一部分的布局与文件系统类似:/dev 目录位于根目录下,依此类推。

32.7.1. 运行名称服务器的原因

名称服务器通常有两种形式:权威名称服务器和缓存(也称为解析)名称服务器。

需要权威名称服务器的情况:

  • 希望向外界提供 DNS 信息,权威地回答查询。

  • 域名(如 example.org)已注册,并且需要为该域名下的主机名分配 IP 地址。

  • IP 地址块需要反向 DNS 条目(IP 到主机名的映射)。

  • 需要备份或第二个名称服务器(称为从服务器),它将回答查询。

需要缓存名称服务器的情况:

  • 本地 DNS 服务器可以缓存并比查询外部名称服务器更快地响应。

当查询 www.FreeBSD.org 时,解析器通常会查询上级 ISP 的名称服务器,并检索回复。使用本地缓存 DNS 服务器时,查询只需要向外部世界发送一次,由缓存 DNS 服务器处理。之后的查询将不再需要通过外部网络,因为信息已被本地缓存。

32.7.2. DNS 服务器配置

FreeBSD 提供了 Unbound 作为基本系统的一部分。默认情况下,它仅为本地机器提供 DNS 解析服务。虽然可以配置基本系统包来提供超出本地机器的解析服务,但建议通过从 FreeBSD Ports 安装 Unbound 来解决此类需求。

要启用 Unbound,请在 /etc/rc.conf 中添加以下内容:

local_unbound_enable="YES"

/etc/resolv.conf 中的任何现有名称服务器将作为新的 Unbound 配置中的转发器。

注意

如果列出的任何名称服务器不支持 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

32.7.3. 权威名称服务器配置

FreeBSD 的基本系统中不提供权威名称服务器软件。建议用户安装第三方应用程序,如包或 Port dns/nsddns/bind918

最后更新于