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

相关推荐

  • CentOS7环境下如何成功安装并配置Bugzilla系统?

    在软件开发与项目管理的流程中,一个高效、可靠的缺陷跟踪系统是确保产品质量和团队协作效率的关键,Bugzilla 作为一款历史悠久且功能强大的开源缺陷跟踪系统,被全球众多开发团队所青睐,它提供了全面的缺陷报告、追踪、管理和分析功能,而 CentOS 7 以其卓越的稳定性、安全性和长期支持,成为部署服务器端应用的理……

    2025-10-01
    000
  • 如何在奉节进行高效的网站建设和设备配置?

    奉节网站建设涉及创建适用于各种设备的网站,确保良好的用户体验和响应式设计。这包括优化布局、交互元素和内容,以适配不同屏幕尺寸和操作系统,满足移动端和桌面端用户的浏览需求。

    2024-08-03
    0014
  • 粉色的网站_删除桶的网站配置

    要删除一个网站的配置,通常需要登录到网站的管理后台或服务器,找到相关的配置文件或设置选项,然后进行删除操作。具体步骤可能因网站和服务器的不同而有所差异。

    2024-07-23
    0010
  • 峰值宽带_DDoS高防如何计费?

    DDoS高防服务的计费主要包括业务带宽、保底防护带宽和弹性防护带宽三部分。业务带宽和保底防护带宽通常采用预付费模式,按月或年支付。而弹性防护带宽则采用后付费模式,按天计费,主要用于防御突发的大规模攻击。,,业务带宽是高防机房清洗后转发给源站所占用的带宽。这部分带宽确保了正常流量的传输,建议购买的业务带宽规格应大于或等于源站出口带宽。,,保底防护带宽提供了一定层次的常规防护,如果攻击峰值小于或等于购买的保底防护带宽,客户不需要支付额外费用。,,弹性防护带宽是在业务带宽和保底防护带宽不足以应对攻击时启动的。其计费规则较为复杂,涉及到多种场景和计算方式。当日DDoS攻击峰值超过保底防护带宽但未超过弹性防护带宽时,将产生弹性防护带宽费用。具体计算公式为:弹性防护带宽用量(计费)=当日攻击峰值-保底防护带宽。若攻击峰值超过弹性防护带宽的极限,计费防护带宽则为弹性防护带宽与保底防护带宽之差。,,DDoS高防的计费主要依据业务带宽、保底防护带宽和弹性防护带宽,采用预付费和后付费相结合的方式,确保不同规模和类型的DDoS攻击都能有效防御。

    2024-07-04
    005

发表回复

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

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信