For the complete documentation index, see llms.txt. This page is also available as Markdown.

BIND

概述

BIND(Berkeley Internet Name Domain)是一款功能完备的 DNS 服务器实现,由 ISC 维护。unbound(8) 与 nsd(8) 各自只承担一种 DNS 职能(解析器或权威服务器),而 BIND 的 named(8) 可同时承担两种角色。BIND 适用于需要灵活 DNS 视图、动态更新或复杂区域配置的高级场景。然而,由于复杂度高且历史上存在安全问题,BIND 未纳入 OpenBSD 基本系统,须从软件包安装。

本章介绍如何在 OpenBSD 7.8 上安装、配置与运行 BIND,涵盖权威与递归两种模式。

DNS 服务对比

要厘清 BIND 在 OpenBSD 可用 DNS 软件中的定位,可参考下表:

特性

unbound(8)

nsd(8)

named(BIND)

用途

解析器

权威服务器

两者皆可

是否包含于 OpenBSD 基本系统

是

是

否

递归解析

是

否

是

权威服务器

否

是

是

DNSSEC 校验

是

否(仅提供)

是

DNS-over-TLS 支持

是

否

是

复杂度

低

低

高

使用场景

客户端

DNS 托管

复杂/混合 DNS 部署

安装

BIND 不属于 OpenBSD 基本系统。使用软件包系统安装:

该命令将 named(8) 及其配置工具安装到 /etc/named/ 与 /var/named/ 下。

开机启用 BIND:

立即启动服务:

配置

主配置文件为:

默认情况下,BIND 以 /var/named 作为工作目录,区域文件与运行时数据存放于此。

递归解析器示例

将 BIND 配置为带缓存的递归解析器:

保存配置后:

使用 drill 或 dig 验证:

权威服务器示例

将 BIND 配置为提供 example.com 区域服务:

创建区域文件:

将该文件保存为 /var/named/example.com.zone。

检查语法并重载:

日志

日志须显式启用:

确保目录与文件可写:

DNSSEC 支持

BIND 支持 DNSSEC 签名与校验。递归解析器通过以下方式启用校验:

要提供已签名区域,使用 dnssec-keygen 与 dnssec-signzone:

更新区域文件并照常重载。

运行时控制

BIND 使用 rndc(8) 进行控制:

要启用 rndc,须生成密钥并添加控制配置:

执行:

该命令创建 /etc/named/rndc.key。

使用示例

作为本地解析器

本地使用 BIND:

  1. 启用并配置 recursion yes

  2. 设置 /etc/resolv.conf:

作为权威服务器

提供区域服务:

  1. 在 named.conf 中创建 zone 段

  2. 在 /var/named 中创建区域文件

  3. 测试并重载配置

使用 drill 查询:

文件与目录

路径
用途

/etc/named/named.conf

BIND 配置

/var/named/

区域与运行时文件

/etc/named/rndc.key

rndc 控制密钥

/var/named/named.log

可选的日志输出

安全注意事项

BIND 体量大、复杂度高,历史上比最小化方案存在更多安全漏洞。应在 chroot 或 jailed 环境中运行(OpenBSD 通过 chroot(2) 自动完成)。功能允许时,优先选用 unbound(8) 或 nsd(8)。

最后更新于