centos6 named服务启动失败如何排查解决?

在许多企业的遗留环境中,CentOS 6 依然扮演着重要的角色,尽管其生命周期(EOL)早已结束,但在某些特定场景下,我们仍需在其上部署关键服务,其中就包括核心的网络服务——DNS(域名系统),BIND(Berkeley Internet Name Domain)作为互联网上最广泛使用的DNS软件,其守护进程名为 named,本文将详细介绍如何在 CentOS 6 系统上安装、配置和管理一个基本的 named 服务。

centos6 named服务启动失败如何排查解决?

安装 BIND 软件

在 CentOS 6 上,我们可以使用 yum 包管理器来轻松安装 BIND 及其相关工具,打开终端,执行以下命令:

yum install bind bind-utils -y
  • bind:这是主要的软件包,包含了 named 守护进程和核心库文件。
  • bind-utils:这个包提供了非常有用的客户端工具,如 dignslookuphost 等,用于查询和测试DNS服务器。

安装完成后,相关的配置文件和目录会自动创建,主配置文件位于 /etc/named.conf,区域文件通常存放在 /var/named/ 目录下。

核心配置文件解析

配置 named 服务主要涉及两个层面的文件:主配置文件和区域数据文件。

主配置文件 /etc/named.conf

这是 named 服务的“大脑”,定义了服务器的全局行为、访问控制以及它所负责解析的各个区域,一个基础的配置文件结构如下:

options {
    listen-on port 53 { any; }; // 监听在所有网络接口的53端口
    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     { any; }; // 允许任何客户端进行查询
    recursion yes; // 允许递归查询(作为缓存DNS服务器时需要)
    /* 如果需要转发所有无法解析的请求到上游DNS服务器,可以配置forwarders */
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    dnssec-enable yes;
    dnssec-validation yes;
};
/* 日志配置 */
logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};
/* 区域定义 */
zone "." IN {
    type hint;
    file "named.ca"; // 根提示文件
};
/* 在这里定义我们自己的权威解析区域 */
include "/etc/named.rfc1912.zones";

关键指令说明:

  • listen-on:定义服务器监听的IP地址和端口。{ any; } 表示监听所有接口。
  • directory:指定所有区域文件的默认存储路径。
  • allow-query:定义哪些客户端可以向此DNS服务器发起查询请求。{ any; } 表示允许所有,生产环境中建议根据需要限制。
  • recursion:是否允许递归查询,如果此服务器仅为内部网络提供权威解析,应设为 no 以提高安全性。
  • forwarders:配置转发器,当服务器无法自己解析一个域名时,它会将请求转发给这里指定的DNS服务器。

区域文件

区域文件包含了具体的DNS资源记录,负责将域名映射到IP地址(正向解析)或将IP地址映射回域名(反向解析)。

常见的DNS资源记录类型如下表所示:

记录类型 名称 功能
A Address Record 将主机名解析为IPv4地址
AAAA Quad-A Record 将主机名解析为IPv6地址
CNAME Canonical Name Record 创建主机名的别名
MX Mail Exchanger Record 指定负责处理域邮件的邮件服务器
NS Name Server Record 指定域的权威DNS服务器
PTR Pointer Record 将IP地址反向解析为主机名
SOA Start of Authority Record 标志着一个区域的开始,包含区域管理信息

配置实例:搭建一个权威DNS服务器

假设我们要为域 internal.net 搭建一个权威DNS服务器,负责解析该域下的主机,并为 168.10.0/24 网段提供反向解析。

centos6 named服务启动失败如何排查解决?

定义区域

编辑 /etc/named.rfc1912.zones 文件,在末尾添加我们自己的区域定义:

zone "internal.net" IN {
    type master;
    file "internal.net.zone";
    allow-update { none; };
};
zone "10.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.10.zone";
    allow-update { none; };
};
  • type master:表明这是主区域服务器。
  • file:指定了该区域的数据文件名。

创建正向区域文件

/var/named/ 目录下创建 internal.net.zone 文件:

touch /var/named/internal.net.zone

如下:

$TTL 86400
@   IN  SOA ns1.internal.net. admin.internal.net. (
        2025102701 ; Serial (YYYYMMDDNN)
        3600       ; Refresh (1 hour)
        1800       ; Retry (30 minutes)
        604800     ; Expire (1 week)
        86400 )    ; Minimum TTL (1 day)
    IN  NS  ns1.internal.net.
ns1 IN  A   192.168.10.10
www IN  A   192.168.10.20
mail IN  A   192.168.10.30
    IN  MX  10 mail.internal.net.

SOA记录详解:

  • ns1.internal.net.:主DNS服务器的主机名。
  • admin.internal.net.:管理员邮箱(注意符号用代替)。
  • Serial:序列号,每次修改此文件后都必须递增,否则辅助服务器不会更新。
  • Refresh:辅助服务器检查更新的间隔。
  • Retry:辅助服务器重试连接的间隔。
  • Expire:辅助服务器在无法联系主服务器后,停止响应查询的时间。
  • Minimum TTL:默认的缓存时间。

创建反向区域文件

/var/named/ 目录下创建 168.10.zone 文件:

touch /var/named/192.168.10.zone

如下:

$TTL 86400
@   IN  SOA ns1.internal.net. admin.internal.net. (
        2025102701 ; Serial
        3600       ; Refresh
        1800       ; Retry
        604800     ; Expire
        86400 )    ; Minimum TTL
    IN  NS  ns1.internal.net.
10  IN  PTR ns1.internal.net.
20  IN  PTR www.internal.net.
30  IN  PTR mail.internal.net.

注意,反向解析文件中,我们只写IP地址的最后一部分。

设置权限与SELinux

确保 named 用户对区域文件有读写权限:

centos6 named服务启动失败如何排查解决?

chown root:named /var/named/*.zone
chmod 640 /var/named/*.zone

检查并调整SELinux上下文,防止其阻止 named 读取文件:

chcon -t named_zone_t /var/named/internal.net.zone
chcon -t named_zone_t /var/named/192.168.10.zone

配置防火墙

CentOS 6 默认使用 iptables 作为防火墙,需要开放DNS服务的53端口(TCP和UDP):

iptables -I INPUT -p udp --dport 53 -j ACCEPT
iptables -I INPUT -p tcp --dport 53 -j ACCEPT
service iptables save

启动服务并设置开机自启

service named start
chkconfig named on

可以使用 service named status 检查服务状态,或查看 /var/log/messages 来排查启动错误。

测试DNS服务器

使用 dig 命令从本地或另一台客户端机器进行测试:

# 正向解析测试
dig @192.168.10.10 www.internal.net
# 反向解析测试
dig @192.168.10.10 -x 192.168.10.20

如果返回的 ANSWER SECTION 中包含正确的解析结果,则说明配置成功。


相关问答FAQs

问题1:我修改了区域文件,但DNS解析结果没有更新,这是为什么?
解答: 这是最常见的配置问题之一,主要有两个原因:

  1. 序列号未递增:每次修改区域文件后,必须增加SOA记录中的序列号(Serial),如果序列号没有变化,named 服务(尤其是辅助服务器)会认为文件没有更新,从而不会重新加载。
  2. 未重新加载配置:修改完文件后,需要让 named 服务重新加载配置,可以执行 service named reloadrndc reload 命令,这个命令比 restart 更温和,它只会重新加载配置和区域文件,而不会中断整个服务。

问题2:我的DNS服务器只能在本地查询,从其他机器无法访问,该怎么办?
解答: 这个问题通常由两个因素导致:

  1. 防火墙拦截:请检查服务器的 iptables 防火墙规则,确保已经放行了UDP和TCP的53端口,可以使用 iptables -L -n 命令查看当前规则。
  2. :检查 /etc/named.conf 文件中的 listen-onallow-query 指令。listen-on 是否设置为监听在服务器的公网IP或 { any; }allow-query 是否限制了查询来源的IP地址范围?如果希望所有机器都能查询,应将其设置为 { any; }(请注意安全风险)。

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

(0)
热舞的头像热舞
上一篇 2025-10-02 10:37
下一篇 2025-10-02 10:40

相关推荐

发表回复

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

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

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

关注微信