第 2 章 设置 unbound DNS 服务器

unbound DNS 服务器是一个验证、递归并进行缓存的 DNS 解析器。此外,unbound 侧重于安全性,例如,它会默认启用域名系统安全扩展 (DNSSEC)。

2.1. 将 Unbound 配置为缓存 DNS 服务器

默认情况下,unbound DNS 服务解析并缓存成功和失败的查找。随后,服务会从其缓存中应答相同记录的请求。

流程

  1. 安装 unbound 软件包:

    # yum install unbound
  2. 编辑 /etc/unbound/unbound.conf 文件,并在 server 子句中进行以下更改:

    1. 添加 interface 参数来配置 unbound 服务侦听查询的 IP 地址,例如:

      interface: 127.0.0.1
      interface: 192.0.2.1
      interface: 2001:db8:1::1

      使用这些设置时,unbound 仅侦听指定的 IPv4 和 IPv6 地址。

      将接口限制到特定接口,可防止客户端从未经授权的网络(如互联网)向这个 DNS 服务器发送查询。

    2. 添加 access-control 参数,以配置客户端可以从哪些子网查询 DNS 服务,例如:

      access-control: 127.0.0.0/8 allow
      access-control: 192.0.2.0/24 allow
      access-control: 2001:db8:1::/64 allow
  3. 创建用于远程管理 unbound 服务的私钥和证书:

    # systemctl restart unbound-keygen

    如果您跳过这一步,在下一步中验证配置将会报告缺少的文件。如果文件丢失,unbound 服务自动创建这些文件。

  4. 验证配置文件:

    # unbound-checkconf
    unbound-checkconf: no errors in /etc/unbound/unbound.conf
  5. 更新 firewalld 规则,以允许传入的 DNS 流量:

    # firewall-cmd --permanent --add-service=dns
    # firewall-cmd --reload
  6. 启用并启动 unbound 服务:

    # systemctl enable --now unbound

验证

  1. 查询在 localhost 接口上侦听的 unbound DNS 服务器以解析域:

    # dig @localhost www.example.com
    ...
    www.example.com.    86400    IN    A    198.51.100.34
    
    ;; Query time: 330 msec
    ...

    在第一次查询记录后,unbound 会将条目添加到其缓存中。

  2. 重复前面的查询:

    # dig @localhost www.example.com
    ...
    www.example.com.    85332    IN    A    198.51.100.34
    
    ;; Query time: 1 msec
    ...

    由于对条目进行了缓存,进一步对相同记录的请求会非常快,直到条目过期为止。

后续步骤

  • 配置网络中的客户端来使用此 DNS 服务器。例如,使用 nmcli 实用程序在 NetworkManager 连接配置集中设置 DNS 服务器的 IP:

    # nmcli connection modify Example_Connection ipv4.dns 192.0.2.1
    # nmcli connection modify Example_Connection ipv6.dns 2001:db8:1::1

其他资源

  • unbound.conf(5) 手册页