强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

BIND DNS 服务器搭建完全教程 / 第 01 章:DNS 协议与 BIND 简介

本章概述

本章介绍 DNS(Domain Name System)协议的基本原理、BIND 的历史与定位,以及权威服务器和递归服务器的区别。通过本章,你将建立对 DNS 体系的整体认知,为后续章节的实操打下基础。


1.1 DNS 协议基础

1.1.1 什么是 DNS

DNS(Domain Name System,域名系统)是互联网的核心基础设施之一,负责将人类可读的域名(如 www.example.com)转换为机器可识别的 IP 地址(如 93.184.216.34)。它是互联网的"电话簿"。

1.1.2 DNS 的历史

年份 事件
1983 Paul Mockapetris 发明 DNS(RFC 882/883)
1987 DNS 规范更新(RFC 1034/1035,至今仍为核心标准)
1993 BIND 4.x 发布,成为最广泛使用的 DNS 软件
1997 BIND 8.x 发布,增强安全和性能
2000 BIND 9.x 发布,完全重写,支持视图、DNSSEC 等
2021 BIND 9.18 LTS 发布,支持 DoT/DoH
2024 BIND 9.20 发布,持续优化性能和安全性

1.1.3 DNS 查询流程

一次完整的 DNS 查询过程如下:

客户端                递归服务器              根服务器    TLD服务器    权威服务器
  │                      │                      │          │           │
  │  1. 查询 example.com │                      │          │           │
  │─────────────────────>│                      │          │           │
  │                      │  2. 查询根            │          │           │
  │                      │─────────────────────>│          │           │
  │                      │  3. 返回 .com NS      │          │           │
  │                      │<─────────────────────│          │           │
  │                      │  4. 查询 .com         │          │           │
  │                      │─────────────────────────────>   │           │
  │                      │  5. 返回 example.com NS│         │           │
  │                      │<─────────────────────────────   │           │
  │                      │  6. 查询 example.com  │          │           │
  │                      │──────────────────────────────────────────>│
  │                      │  7. 返回 A 记录       │          │           │
  │                      │<──────────────────────────────────────────│
  │  8. 返回最终结果     │                      │          │           │
  │<─────────────────────│                      │          │           │

1.1.4 DNS 记录类型概览

记录类型 全称 用途
A Address 将域名映射到 IPv4 地址
AAAA IPv6 Address 将域名映射到 IPv6 地址
CNAME Canonical Name 域名别名
MX Mail Exchanger 邮件服务器
NS Name Server 域名服务器
TXT Text 文本记录(SPF、DKIM 等)
SOA Start of Authority 区域授权信息
SRV Service 服务发现
PTR Pointer 反向解析
CAA Certification Authority Authorization CA 授权

1.1.5 DNS 协议端口与传输层

协议 端口 说明
DNS over UDP 53 传统查询,响应小于 512 字节
DNS over TCP 53 区域传输、大响应(超过 512 字节时回退)
DNS over TLS (DoT) 853 加密查询(RFC 7858)
DNS over HTTPS (DoH) 443 基于 HTTPS 的加密查询(RFC 8484)

1.2 BIND 简介

1.2.1 什么是 BIND

BIND(Berkeley Internet Name Domain)是目前世界上使用最广泛的 DNS 服务器软件,由 ISC(Internet Systems Consortium)维护。据估算,全球约 70% 的 DNS 服务器运行 BIND。

1.2.2 BIND 的核心能力

能力 说明
权威 DNS 托管区域文件,响应域名查询
递归 DNS 代替客户端完成完整的 DNS 解析链
转发 将查询转发给上游 DNS
视图(Views) 根据来源 IP 返回不同解析结果
DNSSEC DNS 安全扩展,防止缓存投毒
动态更新 运行时修改区域记录(DDNS)
RPZ 响应策略区域,用于安全拦截
TSIG 事务签名,保护区域传输和动态更新

1.2.3 BIND 版本线

# 查看当前安装的 BIND 版本
named -v
# 输出示例: BIND 9.18.30-1~ubuntu22.04.1-Ubuntu (Extended Support Version)
版本 状态 特性
9.16 EOL(生命周期结束) 不再推荐
9.18 LTS(长期支持) 推荐生产使用,支持到 2026 年
9.20 最新稳定版 新特性优先,支持到 2028 年

注意: 生产环境推荐使用 LTS 版本(9.18),除非你需要 9.20 中的特定新特性。


1.3 权威服务器 vs 递归服务器

这是理解 DNS 最关键的区分之一。

1.3.1 权威 DNS 服务器(Authoritative DNS Server)

权威服务器是域名数据的"源头"。它存储区域文件,对特定域名的查询给出最终答案

场景:example.com 的权威服务器

客户端问:www.example.com 的 IP 是什么?
权威服务器答:93.184.216.34(直接从区域文件读取,这是"权威"答案)

特点

  • 存储域名的区域文件(Zone File)
  • 响应带有 AA(Authoritative Answer)标志
  • 不负责递归查询其他域名
  • 通常由域名注册商或企业自建

1.3.2 递归 DNS 服务器(Recursive/Resolving DNS Server)

递归服务器是客户端的"代理人"。它代替客户端去完成完整的 DNS 解析链路,包括查询根服务器、TLD 服务器、权威服务器等。

场景:企业内网递归服务器

客户端问:www.example.com 的 IP 是什么?
递归服务器:(先查缓存,没有则逐级查询)
  → 问根服务器:.com 的 NS 是谁?
  → 问 .com TLD:example.com 的 NS 是谁?
  → 问 example.com 权威服务器:www 的 A 记录?
  → 最终返回:93.184.216.34

特点

  • 不存储权威数据(除非同时充当权威服务器)
  • 有缓存机制,减少重复查询
  • 需要开启递归功能(recursion yes
  • 通常部署在内网或 ISP 侧

1.3.3 对比总结

维度 权威服务器 递归服务器
数据来源 本地区域文件 上游权威服务器
是否缓存 通常不缓存 核心功能
服务对象 全球用户 特定客户端
安全重点 数据完整性、防篡改 防缓存投毒、防滥用
典型部署 面向公网 面向内网/ISP
配置重点 区域文件、传输安全 转发、缓存、ACL

1.3.4 同一台服务器同时充当两种角色

BIND 允许在同一实例中同时运行权威服务和递归服务,但强烈建议不要这样做

# ⚠️ 不推荐的配置(安全风险)
options {
    recursion yes;          # 开启递归
    allow-recursion { any; }; # 允许所有人递归
};

zone "example.com" {
    type primary;           # 同时是权威服务器
    file "example.com.zone";
};

为什么混合角色不好?

  • 递归服务器容易遭受缓存投毒攻击(Cache Poisoning)
  • 攻击者可能通过递归查询获取你的权威区域数据
  • 增加攻击面,难以实施细粒度安全策略
  • 维护复杂度高

推荐做法:使用 views(视图)将权威服务和递归服务分离,详见 第 08 章


1.4 适用场景

1.4.1 什么时候需要自建 DNS

场景 推荐方案 说明
企业内部域名解析 BIND 递归 + 内部权威 解析 .internal.corp 等内部域名
托管多个域名 BIND 权威 为多个域名提供权威解析
合规要求(金融/政府) BIND 权威 + DNSSEC 数据主权、日志审计
安全防护 BIND + RPZ 拦截恶意域名、钓鱼网站
开发测试环境 BIND 递归 自定义解析规则、模拟 DNS 故障
CDN / 负载均衡 BIND + GeoIP/Views 基于来源 IP 的智能解析
Kubernetes 集群 CoreDNS(K8s 内) + BIND(外部) 混合方案

1.4.2 什么时候不需要自建 DNS

  • 个人网站:使用域名注册商或云厂商的免费 DNS 即可
  • 小型企业:直接使用 8.8.8.8(Google)或 1.1.1.1(Cloudflare)
  • 纯云环境:使用 AWS Route 53、阿里云 DNS 等云 DNS 服务

1.4.3 典型企业架构

┌─────────────────────────────────────────────────────┐
│                    互联网                              │
└─────────┬───────────────────────┬───────────────────┘
          │                       │
    ┌─────▼─────┐          ┌─────▼─────┐
    │ 权威 DNS  │          │ 权威 DNS  │  ← 主从架构(公网)
    │ (主/Primary)│         │(从/Secondary)│
    └─────┬─────┘          └───────────┘
          │
    ┌─────▼─────┐
    │ 防火墙     │
    └─────┬─────┘
          │
    ┌─────▼─────┐          ┌───────────┐
    │ 递归 DNS  │          │ 内网权威  │  ← 内部域名
    │ (主/Primary)│         │ DNS       │
    └─────┬─────┘          └───────────┘
          │
    ┌─────▼─────┐
    │  客户端    │  ← DHCP 下发递归服务器地址
    └───────────┘

1.5 与其他 DNS 软件对比

特性 BIND Unbound PowerDNS CoreDNS dnsmasq
权威服务
递归服务 ✅(Recursor)
DNSSEC ✅(有限)
视图
动态更新
RPZ
配置复杂度
资源占用 中-高 极低
适用场景 企业级、ISP 纯递归 大规模权威 Kubernetes 家庭/小型

1.6 BIND 的安装目录标准(FHS)

了解 BIND 的标准文件路径,后续章节会频繁使用:

路径 说明
/etc/named.conf/etc/bind/named.conf 主配置文件
/var/named//var/cache/bind/ 区域文件存放目录
/var/named/dynamic/ 动态更新区域文件
/var/named/data/ 统计数据
/var/log/named/ 日志目录(可配置)
/var/run/named//run/named/ PID 文件、Unix Socket
/etc/named.root.key 根区域 DNSSEC 密钥

注意: 不同 Linux 发行版路径略有不同:

  • RHEL/CentOS: /etc/named.conf + /var/named/
  • Debian/Ubuntu: /etc/bind/named.conf + /var/cache/bind/

1.7 本章小结

概念 要点
DNS 互联网的域名解析系统,基于 UDP/TCP 53 端口
BIND 最广泛使用的 DNS 服务器软件,由 ISC 维护
权威服务器 存储域名数据的源头,给出最终答案
递归服务器 代替客户端完成完整解析链,有缓存机制
版本选择 生产推荐 9.18 LTS,新特性选 9.20

📖 扩展阅读