凌峰创科服务平台

CentOS 7 DNS服务器搭建如何配置?

  1. 环境准备:安装和配置 BIND。
  2. 创建正向区域:将域名(如 example.com)解析为 IP 地址。
  3. 创建反向区域:将 IP 地址解析为域名(反向解析)。
  4. 配置主从 DNS:实现 DNS 的高可用性。
  5. 防火墙和 SELinux 配置:确保服务能被正常访问。
  6. 测试和验证:使用多种工具验证 DNS 服务器是否工作正常。

第 1 步:环境准备

确保您的服务器已经准备好,并且有一个静态的 IP 地址,在本教程中,我们假设:

CentOS 7 DNS服务器搭建如何配置?-图1
(图片来源网络,侵删)
  • 操作系统: CentOS 7
  • 服务器 IP 地址: 168.1.100 (请替换为您自己的 IP)
  • 要管理的域名: example.com (请替换为您自己的域名)
  • 域名服务器: ns1.example.com

1 更新系统

sudo yum update -y

2 安装 BIND

BIND 是标准的 DNS 服务器软件。

sudo yum install bind bind-utils -y
  • bind: DNS 服务器本身。
  • bind-utils: 包含了用于测试 DNS 的客户端工具,如 dig, nslookup, host 等。

3 检查 BIND 服务状态

systemctl status named

如果服务未运行,可以启动并设置为开机自启:

sudo systemctl start named
sudo systemctl enable named

第 2 步:配置 BIND 主配置文件

BIND 的主配置文件是 /etc/named.conf,我们需要对其进行一些基础配置。

1 备份原始配置文件

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

2 编辑主配置文件

使用您喜欢的文本编辑器(如 vimnano)打开文件:

CentOS 7 DNS服务器搭建如何配置?-图2
(图片来源网络,侵删)
sudo vim /etc/named.conf

进行以下关键修改:

  1. 监听地址:默认情况下,BIND 只监听在本地回环地址 0.0.1 上,要让它监听服务器的所有 IP 地址,找到 listen-on port 53 这一行,将其注释掉或修改为 { any; };

    // listen-on port 53 { 127.0.0.1; }; // 注释掉这一行
    listen-on port 53 { any; }; // 或者添加这一行
  2. 允许查询:默认只允许本地查询,我们需要修改为允许来自我们局域网的查询,找到 allow-query 这一行,修改为 { any; };(仅用于测试和内网环境)或指定您的网段(如 { 192.168.1.0/24; };)。

    // allow-query     { localhost; }; // 注释掉这一行
    allow-query     { any; }; // 或者添加这一行
  3. 允许递归查询:对于公共 DNS 服务器,应谨慎设置递归,但对于内部使用的 DNS 服务器,可以开启,找到 recursiondnssec-validation 部分:

    CentOS 7 DNS服务器搭建如何配置?-图3
    (图片来源网络,侵删)
    recursion yes;
    dnssec-validation no; // 如果您的域名没有使用 DNSSEC,可以设为 no
  4. 区域文件路径:确保 include "/etc/named.rfc1912.zones";include "/etc/named.root.key"; 这两行没有被注释掉,这些文件用于定义我们的区域。

修改后的 /etc/named.conf 关键部分可能如下所示:

options {
    listen-on port 53 { any; };
    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";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };
    recursion yes;
    dnssec-validation no;
    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

保存并退出文件。


第 3 步:创建正向区域

正向区域负责将域名解析为 IP 地址。

1 在区域配置文件中添加区域

编辑 /etc/named.rfc1912.zones 文件:

sudo vim /etc/named.rfc1912.zones

在文件末尾添加以下内容,创建一个名为 example.com 的主区域:

zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-update { none; };
};
  • type master: 表示这是一个主 DNS 服务器。
  • file "example.com.zone": 指定存储区域数据的文件,这个文件将在 /var/named/ 目录下创建。
  • allow-update { none; }: 禁止动态更新,提高安全性。

2 创建区域数据文件

我们创建 /var/named/ 目录下的 example.com.zone 文件。

复制一个模板文件作为起点:

sudo cp /var/named/named.localhost /var/named/example.com.zone

然后编辑这个新文件:

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

如下,请务必修改 serialNSA 记录等为您自己的信息:

$TTL 1D
@       IN SOA  ns1.example.com. admin.example.com. (
                                        2025102701  ; serial (YYYYMMDDNN)
                                        1D          ; refresh
                                        1H          ; retry
                                        1W          ; expire
                                        3H )        ; minimum
        NS      ns1.example.com.
        A       192.168.1.100
        ; Name Server (NS) records
ns1     IN      A       192.168.1.100
        ; Mail exchanger (MX) records
        MX      10      mail.example.com.
        ; Host (A) records
www     IN      A       192.168.1.101
mail    IN      A       192.168.1.102
; 可以添加更多记录,
; ftp     IN      A       192.168.1.103

关键点解释:

  • $TTL 1D: 默认的生存时间,这里是 1 天。
  • SOA (Start of Authority): 区域的权威记录。serial 号码非常重要,每次修改区域文件后,必须递增这个号码(通常按 YYYYMMDD 格式,后面加两位数字),这样从服务器才能知道区域已更新,我这里用了 2025102701,表示 2025年10月27日的第一次更新。
  • NS: 域名服务器记录,指定了哪个服务器负责这个域名。
  • A: 地址记录,将主机名映射到 IP 地址。
  • MX: 邮件交换记录,指定处理该域名邮件的服务器。
  • : 代表当前区域名,即 example.com

3 设置正确的文件权限

BIND 进程 (named) 需要能够读取区域文件,确保文件所有者是 named 用户和组。

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

第 4 步:创建反向区域

反向区域负责将 IP 地址解析为域名,这对于邮件服务器等应用非常重要。

1 在区域配置文件中添加反向区域

再次编辑 /etc/named.rfc1912.zes 文件:

sudo vim /etc/named.rfc1912.zones

在文件末尾添加以下内容,反向区域的名字是基于 IP 地址网络部分的反向形式,168.1.0/24 的反向区域是 168.192.in-addr.arpa

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "192.168
分享:
扫描分享到社交APP
上一篇
下一篇