搭建和配置 DNS(域名系统)服务是网络管理员的核心技能之一,尤其在搭建内网解析、企业自建 DNS 服务器、或者做公网域名解析转发时都非常有用。下面是以 Linux 环境(如 CentOS、Ubuntu)为基础,从零开始搭建和配置 DNS 服务的详尽教程,使用主流的 BIND(Berkeley Internet Name Domain)作为服务程序。


🗂️ 目录

  1. DNS 基础知识概述
  2. BIND 安装与初始化
  3. 配置主 DNS 服务器(正向解析)
  4. 配置反向解析
  5. 搭建从 DNS 服务器
  6. 配置区域转发器(Forwarder)
  7. 常用 DNS 工具及测试方法
  8. 常见错误与排查技巧
  9. 安全加固建议
  10. 参考资料与外链

1. 🧠 DNS 基础知识概述

术语解释
正向解析域名 → IP(A 记录)
反向解析IP → 域名(PTR 记录)
A 记录映射域名到 IPv4 地址
AAAA 记录映射域名到 IPv6 地址
MX 记录邮件交换记录
NS 记录指定域名使用的权威 DNS
SOA 记录区域信息:序列号、刷新时间等
CNAME 记录别名记录

2. 📦 BIND 安装与初始化

🔧 CentOS / RHEL 安装

sudo yum install -y bind bind-utils

🔧 Ubuntu / Debian 安装

sudo apt update
sudo apt install -y bind9 bind9utils bind9-doc

3. 📝 配置主 DNS(正向解析)

🔹 主配置文件路径

位置用途
/etc/named.conf(CentOS)或 /etc/bind/named.conf(Ubuntu)主配置入口
/var/named/ 或 /etc/bind/zones/区域数据文件

🔹 示例:定义一个区域 example.com

编辑 /etc/named.conf 添加:

zone "example.com" IN {
    type master;
    file "/var/named/example.com.zone";
    allow-update { none; };
};

创建区域文件 /var/named/example.com.zone

$TTL 1D
@   IN  SOA ns1.example.com. admin.example.com. (
        2025062101 ; Serial
        1H         ; Refresh
        15M        ; Retry
        1W         ; Expire
        1D )       ; Minimum

@       IN  NS    ns1.example.com.
ns1     IN  A     192.168.1.10
www     IN  A     192.168.1.20
mail    IN  A     192.168.1.30
@       IN  MX 10 mail.example.com.

4. 🔁 配置反向解析(PTR)

在 named.conf 添加:

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "/var/named/192.168.1.zone";
};

反向区域文件内容(/var/named/192.168.1.zone):

$TTL 1D
@   IN  SOA ns1.example.com. admin.example.com. (
        2025062101 ; Serial
        1H         ; Refresh
        15M        ; Retry
        1W         ; Expire
        1D )       ; Minimum

@       IN  NS    ns1.example.com.
10      IN  PTR   ns1.example.com.
20      IN  PTR   www.example.com.

5. 🧬 搭建从 DNS(Slave)

主 DNS 添加允许区域传输 IP:

allow-transfer { 192.168.1.11; };  # Slave IP

从服务器 named.conf 添加:

zone "example.com" IN {
    type slave;
    masters { 192.168.1.10; };  # Master IP
    file "/var/named/slaves/example.com.zone";
};

6. 🧭 配置区域转发器(Forwarder)

用于非权威解析:

options {
    forwarders {
        8.8.8.8;
        1.1.1.1;
    };
    forward only;
};

7. 🧪 DNS 工具及测试方法

命令用途
dig example.com测试正向解析
dig -x 192.168.1.10测试反向解析
host example.com快速查询
nslookup简单解析工具
rndc reload重载配置
named-checkconf检查主配置语法
named-checkzone检查区域文件语法

8. 🧯 常见错误与排查技巧

问题解决办法
服务无法启动查看 /var/log/messages 或 journalctl -xe
区域文件语法错误用 named-checkzone 检查
解析失败检查防火墙 firewalld 和 SELinux 设置
反向解析无效确认 in-addr.arpa 区域正确配置
权限错误确保文件属于 named 用户

9. 🔐 安全加固建议

  • 限制 allow-query 和 allow-transfer
  • 使用 chroot 环境运行 BIND(可选)
  • 关闭递归查询(仅限权威服务器)
  • 日志审计开启:logging 配置项
  • 使用 DNSSEC 加密验证(高级选项)

🔗 10. 参考资料与外链