CentOS 8 搭建 BIND DNS 服务器:从安装到解析全流程

CentOS 8 搭建 BIND DNS 服务器:从安装到解析全流程

李忠衍
2025-03-31 / 0 评论 / 174 阅读 / 正在检测是否收录...
DNS 是互联网的基础服务之一。本文从零开始,在 CentOS 8 上搭建一个完整的 BIND DNS 服务器,实现域名解析。

什么是 DNS?

DNS(Domain Name System)将人类易记的域名(如 bytecho.cn)转换为机器可读的 IP 地址(如 1.2.3.4)。

  • 正向解析: 域名 → IP 地址
  • 反向解析: IP 地址 → 域名

1. 安装 BIND

# 安装 DNS 服务器
yum install bind bind-utils -y

# 查看安装版本
named -v

BIND(Berkeley Internet Name Domain)是最常用的 DNS 服务器软件。bind-utils 包含 dig、nslookup 等 DNS 诊断工具。

2. BIND 核心配置文件

BIND 的主配置文件是 /etc/named.conf,我们来理解它的结构:

options {
    listen-on port 53 { any; };          # 监听所有网卡的 53 端口
    listen-on-v6 port 53 { any; };
    directory       "/var/named";         # 区域文件存放目录
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    allow-query     { any; };             # 允许所有客户端查询
    recursion yes;                        # 允许递归查询(作为公共DNS时需要)
};

zone "." IN {
    type hint;
    file "named.ca";                      # 根域名服务器列表
};

zone "bytecho.cn" IN {
    type master;                          # 主 DNS 服务器
    file "bytecho.cn.zone";               # 区域文件
    allow-update { none; };
};

关键配置说明:

  • listen-on port 53 { any; } — DNS 默认端口 53,设为 any 表示监听所有网卡
  • allow-query { any; } — 允许所有人查询(测试环境用,生产环境应限制 IP)
  • recursion yes; — 开启递归查询(作为公共 DNS 必须开)
  • 每个 zone 定义一个域名区域的解析规则

3. 创建区域文件(zone file)

创建 /var/named/bytecho.cn.zone

$TTL 1D
@       IN SOA  ns1.bytecho.cn. admin.bytecho.cn. (
                2026070901      ; 序列号(每次修改递增)
                3H              ; 刷新间隔
                1H              ; 重试间隔
                1W              ; 过期时间
                1D )            ; 否定缓存TTL

        IN NS   ns1.bytecho.cn.
        IN A    1.2.3.4

ns1     IN A    1.2.3.4
www     IN A    1.2.3.4
@       IN MX 10 mail.bytecho.cn.
mail    IN A    1.2.3.5

记录类型详解:

记录类型作用示例
SOA区域权威记录包含主 DNS、管理员邮箱、序列号
NS指定该域名的 DNS 服务器ns1.bytecho.cn
A域名 → IPv4 地址www.bytecho.cn → 1.2.3.4
AAAA域名 → IPv6 地址www.bytecho.cn → ::1
CNAME域名别名www → bytecho.cn
MX邮件交换记录@ → mail.bytecho.cn
TXT文本记录SPF、DKIM 验证等

4. 启动服务并配置防火墙

# 检查配置是否有语法错误
named-checkconf
named-checkzone bytecho.cn /var/named/bytecho.cn.zone

# 启动服务
systemctl start named
systemctl enable named

# 防火墙放行 DNS
firewall-cmd --permanent --add-service=dns
firewall-cmd --reload

5. 测试 DNS 解析

# 本地测试
dig @localhost bytecho.cn
dig @192.168.1.100 www.bytecho.cn

# 使用 nslookup 测试
nslookup bytecho.cn localhost

# 反向解析测试
dig -x 1.2.3.4 @localhost

常见问题

Q:启动 named 失败,提示权限不足?

检查 /var/named 目录权限,确保 named 用户能读取:

chown named:named /var/named/bytecho.cn.zone
chmod 640 /var/named/bytecho.cn.zone

Q:客户端能解析内网域名吗?

需要将客户端的 DNS 设置为这台服务器的 IP,或者在路由器上配置 DNS 转发。

Q:如何配置 DNS 转发(上游 DNS)?

/etc/named.conf 的 options 中添加:

forwarders {
    8.8.8.8;
    114.114.114.114;
};
forward only;

这样本地没有的域名会转发到 8.8.8.8 解析。


掌握了这些,你已经可以在内网搭建自己的 DNS 服务器了。接下来可以试试配置主从 DNS 实现高可用。

0

评论 (0)

取消