CentOS 7.2下如何从零配置BIND DNS服务器?

在构建和管理网络基础设施时,域名系统(DNS)扮演着至关重要的角色,它负责将人类易于记忆的域名(如 www.example.com)解析为机器能够识别的 IP 地址,BIND(Berkeley Internet Name Domain)作为互联网上最广泛使用、最灵活的 DNS 软件,是许多系统管理员的首选,本文将详细介绍如何在 CentOS 7.2 系统上配置一个功能完整的 BIND DNS 服务器,包括正向解析(域名到 IP)和反向解析(IP 到域名)。

CentOS 7.2下如何从零配置BIND DNS服务器?

准备工作与环境说明

在开始配置之前,请确保您已经具备以下条件:

  • 一台已安装 CentOS 7.2 操作系统的服务器。
  • 拥有 root 权限或 sudo 权限的用户账户。
  • 服务器已配置静态 IP 地址,在本教程中,我们将使用以下网络环境作为示例:
    • DNS 服务器 IP 地址:168.1.10
    • 域名:example.com
    • 网络段:168.1.0/24

第一步:安装 BIND 软件包

CentOS 的官方软件源中包含了 BIND 及其相关工具,我们可以使用 yum 包管理器轻松安装它们,打开终端,执行以下命令:

sudo yum install -y bind bind-utils
  • bind:这是 BIND 服务的主程序包,包含了 named 守护进程。
  • bind-utils:这是一个实用工具包,包含了 dig, nslookup, host 等非常有用的 DNS 查询和测试工具。

安装完成后,BIND 的主配置文件位于 /etc/named.conf,区域文件通常存放在 /var/named/ 目录下。

第二步:配置主配置文件

在修改任何配置文件之前,养成备份的好习惯至关重要。

sudo cp /etc/named.conf /etc/named.conf.bak

使用您喜欢的文本编辑器(如 vinano)打开 /etc/named.conf 文件:

sudo vi /etc/named.conf

我们需要对文件中的两个主要部分进行修改:options 块和文件末尾的 zone 定义。

  1. 修改 options

    • listen-on port 53 { 127.0.0.1; };:此行限制了 BIND 仅监听本地回环地址,为了让网络中的其他客户端能够查询此 DNS 服务器,需要将其修改为服务器的 IP 地址或 any
    • allow-query { localhost; };:此行限制了查询来源,同样,我们需要允许本地网络内的客户端进行查询。

    修改后的 options 块示例如下:

    options {
            listen-on port 53 { 192.168.1.10; };
            listen-on-v6 port 53 { ::1; };
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            memstatistics-file "/var/named/data/named_mem_stats.txt";
            allow-query     { 192.168.1.0/24; localhost; };
            recursion yes; # 允许递归查询,对于内网 DNS 服务器通常是开启的
            /* ... 其他配置保持不变 ... */
    };
  2. 定义区域
    在文件的末尾,我们需要添加正向和反向解析区域的定义,这些定义告诉 BIND 去哪里查找具体的 DNS 记录。

    /* ... 文件末尾添加以下内容 ... */
    zone "example.com" IN {
            type master;
            file "example.com.zone";
            allow-update { none; };
    };
    zone "1.168.192.in-addr.arpa" IN {
            type master;
            file "1.168.192.arpa";
            allow-update { none; };
    };
    • zone "example.com":定义了正向解析区域,file "example.com.zone" 指定了该区域的记录文件。
    • zone "1.168.192.in-addr.arpa":定义了反向解析区域,注意,反向区域的名称是网络 IP 地址的反写,并加上 .in-addr.arpa 后缀。

第三步:创建区域数据文件

我们需要创建在 named.conf 中指定的两个区域文件,这些文件包含了实际的 DNS 记录。

CentOS 7.2下如何从零配置BIND DNS服务器?

  1. 创建正向解析区域文件
    /var/named/ 目录下创建 example.com.zone 文件。

    sudo vi /var/named/example.com.zone

    填入以下内容,所有域名末尾的点 都不能省略,它代表根域。

    $TTL 86400
    @   IN  SOA ns1.example.com. admin.example.com. (
            2025102701  ; Serial (序列号,每次修改后需递增)
            3600        ; Refresh (刷新时间)
            1800        ; Retry (重试时间)
            604800      ; Expire (过期时间)
            86400 )     ; Minimum TTL (最小缓存时间)
    IN  NS  ns1.example.com.
    IN  MX  10  mail.example.com.
    ns1         IN  A   192.168.1.10
    www         IN  A   192.168.1.20
    mail        IN  A   192.168.1.30
    ftp         IN  CNAME   www.example.com.

    记录说明

    • SOA (Start of Authority):起始授权机构记录,定义了该区域的主服务器和管理员邮箱。
    • NS (Name Server):名称服务器记录,指定负责该区域的 DNS 服务器。
    • MX (Mail Exchanger):邮件交换记录,指定处理该域邮件的服务器。
    • A (Address):地址记录,将域名映射到 IPv4 地址。
    • CNAME (Canonical Name):别名记录,将一个域名指向另一个域名。
  2. 创建反向解析区域文件
    /var/named/ 目录下创建 168.192.arpa 文件。

    sudo vi /var/named/1.168.192.arpa
    $TTL 86400
    @   IN  SOA ns1.example.com. admin.example.com. (
            2025102701  ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400 )     ; Minimum TTL
            IN  NS  ns1.example.com.
    10  IN  PTR ns1.example.com.
    20  IN  PTR www.example.com.
    30  IN  PTR mail.example.com.

    记录说明

    • PTR (Pointer):指针记录,用于反向解析,将 IP 地址映射回域名,注意,这里的 102030 是 IP 地址的最后一部分。

第四步:设置权限与 SELinux

为了确保 named 服务能够正常读取这些文件,我们需要设置正确的文件所有者和权限。

sudo chown named:named /var/named/example.com.zone
sudo chown named:named /var/named/1.168.192.arpa
sudo chmod 640 /var/named/example.com.zone
sudo chmod 640 /var/named/1.168.192.arpa

如果 SELinux 处于强制模式,需要为区域文件设置正确的安全上下文。

sudo chcon -t named_zone_t /var/named/example.com.zone
sudo chcon -t named_zone_t /var/named/1.168.192.arpa

第五步:检查配置、启动服务与防火墙设置

在启动服务之前,最好先检查配置文件的语法是否正确。

sudo named-checkconf

如果此命令没有输出任何信息,表示 named.conf 语法无误。

接着检查区域文件:

CentOS 7.2下如何从零配置BIND DNS服务器?

sudo named-checkzone example.com /var/named/example.com.zone
sudo named-checkzone 1.168.192.in-addr.arpa /var/named/1.168.192.arpa

如果配置正确,你会看到类似 OK 的提示。

一切就绪后,启动 named 服务并设置其开机自启。

sudo systemctl start named
sudo systemctl enable named

配置防火墙以允许 DNS 流量(TCP 和 UDP 的 53 端口)。

sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload

第六步:客户端测试

您可以在网络中的任何一台客户端机器上,将 DNS 服务器地址指向 168.1.10,然后使用 nslookupdig 进行测试。

# 修改客户端 DNS 配置 (以 Linux 为例)
echo "nameserver 192.168.1.10" | sudo tee /etc/resolv.conf
# 测试正向解析
nslookup www.example.com
# 预期输出应包含 192.168.1.20
# 测试反向解析
nslookup 192.168.1.20
# 预期输出应包含 www.example.com

如果测试结果与预期一致,恭喜您,您的 CentOS 7.2 BIND DNS 服务器已成功配置并运行。


相关问答 (FAQs)

问题 1:我的 DNS 服务器配置完成后,客户端无法解析,应该如何排查?

解答: 排查 DNS 问题应遵循由内到外的原则。

  1. 检查服务状态:在 DNS 服务器上,运行 sudo systemctl status named 确认服务正在运行。
  2. 检查防火墙:确认防火墙已放行 53 端口,使用 sudo firewall-cmd --list-all 查看。
  3. 检查配置语法:再次运行 named-checkconfnamed-checkzone,确保没有语法错误。
  4. 查看日志:BIND 的日志文件通常位于 /var/named/data/named.run,使用 tail -f /var/named/data/named.run 实时查看日志,其中通常会包含详细的错误信息,如权限问题、文件找不到等。
  5. 检查 SELinux:如果日志中出现权限拒绝(Permission denied)相关的错误,很可能是 SELinux 导致,可以临时将其设置为宽容模式(sudo setenforce 0)进行测试,如果问题解决,则说明需要正确设置文件的安全上下文。
  6. 网络连通性:在客户端使用 ping 192.168.1.10 确保能够到达 DNS 服务器。

问题 2:正向解析区域文件中的 $TTL 和 SOA 记录里的 Serial 序列号有什么作用?

解答: 这两者都与 DNS 缓存和区域数据同步密切相关。

  • $TTL (Time To Live):此指令定义了区域文件中所有记录的默认生存时间(以秒为单位),当其他 DNS 服务器或客户端查询到一条记录后,会将其缓存起来,缓存时间就是 TTL 值,在 TTL 过期之前,它们不会再次查询此记录,合理设置 TTL 可以平衡 DNS 解析的实时性和服务器负载。
  • Serial (序列号):这是 SOA 记录中的一个关键数字,用于标识区域文件的版本,当您对区域文件进行任何修改(如添加、删除或修改记录)后,必须将此序列号递增(通常使用日期格式,如 2025102701),当辅助 DNS 服务器(Slave)向主服务器(Master)查询更新时,会比较自己缓存区域的序列号和主服务器的序列号,如果主服务器的序列号更大,辅助服务器就会发起区域传输(Zone Transfer)以获取最新数据,如果不更新序列号,您的修改将无法同步到辅助 DNS 服务器。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-04 19:36
下一篇 2025-10-04 19:38

相关推荐

  • CentOS下如何从源码一步步安装LAMMPS?

    在科学计算和分子模拟领域,LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)是一款功能强大、应用广泛的经典分子动力学软件,它以其高并行性和丰富的势函数库而闻名,能够模拟从原子到介观尺度范围内的各类物理系统,CentOS作为一款稳定且……

    2025-10-06
    005
  • CentOS下PHP安装PEAR扩展后连接数据库报错怎么解决?

    在CentOS系统中,PHP的PEAR(PHP Extension and Application Repository)是一个重要的包管理工具,它简化了PHP扩展和应用程序的安装与管理,结合PEAR的DB数据抽象层,开发者可以更便捷地操作不同类型的数据库,本文将详细介绍在CentOS环境下安装配置PEAR及D……

    2025-12-19
    004
  • RHEL与CentOS对应版本怎么查?不同版本兼容性如何?

    在Linux发行版的世界中,Red Hat Enterprise Linux(RHEL)和CentOS是两个紧密相关的名字,它们之间的关系和版本对应一直是用户关注的焦点,RHEL作为商业化的企业级操作系统,以其稳定性和安全性著称,而CentOS则作为其社区克隆版本,为开发者和预算有限的团队提供了免费替代方案,理……

    2025-12-05
    007
  • 服务器托管 维护_应用托管

    服务器托管和维护服务确保您的应用稳定运行,提供24/7监控、定期更新和安全保护,让您专注于业务发展。

    2024-07-20
    006

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信