凌峰创科服务平台

centos 6.5搭建dns服务器

本教程将引导你完成一个主 DNS 服务器的搭建,包括正向解析反向解析,并确保它在启动后能自动运行。

centos 6.5搭建dns服务器-图1
(图片来源网络,侵删)

第一步:准备工作

  1. 操作系统:已安装并正常运行的 CentOS 6.5 系统。
  2. 网络配置:确保服务器有一个静态的 IP 地址,本教程假设你的服务器 IP 地址为 168.1.100,域名为 example.com请根据你的实际情况修改这些值
  3. 更新系统:更新你的系统软件包到最新状态,这是一个好习惯。
    yum update -y

第二步:安装 BIND 软件包

CentOS 6.5 的官方软件仓库中包含了 BIND,我们可以直接使用 yum 来安装。

# 安装 bind 和相关的工具包
yum install -y bind bind-utils
# bind-utils 包含了 dig, nslookup, host 筸常用 DNS 测试工具

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


第三步:配置主 DNS 服务器

这是整个教程的核心部分,我们需要修改几个配置文件。

修改主配置文件 /etc/named.conf

这个文件是 BIND 的全局配置文件,定义了服务器的基本行为。

centos 6.5搭建dns服务器-图2
(图片来源网络,侵删)
# 使用 vi 或你喜欢的编辑器打开文件
vi /etc/named.conf

我们需要修改或关注以下几个部分:

a. 选项配置

找到 options { ... }; 部分,确保 listen-onallow-query 的配置如下。listen-on 指定服务器监听的 IP 地址,allow-query 指定哪些客户端可以查询这个 DNS 服务器。

options {
    // 监听所有网络接口上的 DNS 查询 (IPv4)
    // 如果你只想监听特定IP,可以改为 listen-on port 53 { 127.0.0.1; 192.168.1.100; };
    listen-on port 53 { 127.0.0.1; 192.168.1.100; };
    // 监听所有网络接口上的 DNS 查询 (IPv6),如果不需要可以注释掉
    // listen-on-v6 port 53 { ::1; };
    // 允许任何客户端进行查询,如果是内网DNS服务器,可以这样配置
    // 如果是公网DNS,需要限制为特定IP段,allow-query { 192.168.1.0/24; localhost; };
    allow-query     { localhost; 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";
    allow-query     { localhost; };
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;
    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/var/run/named/named.pid";
    session-keyfile "/var/run/named/session.key";
};

b. 区域定义

centos 6.5搭建dns服务器-图3
(图片来源网络,侵删)

在文件的末尾,我们需要定义我们的正向和反向解析区域,找到 zone "." { ... }; 部分,在其后面添加我们自己的区域声明。

// 在文件末尾添加以下内容
// ==================== 正向解析区域 ====================
zone "example.com" IN {
    type master;         // 这是一个主 DNS 区域
    file "example.com.zone";  // 区域数据文件名,存放在 /var/named/ 目录下
    allow-update { none; }; // 不允许动态更新
};
// ==================== 反向解析区域 ====================
// 1.168.192.in-addr.arpa 是 192.168.1.0/24 网段的反向表示
zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.1.zone"; // 区域数据文件名
    allow-update { none; };
};

注意:这里的 168.1.100 是你的服务器 IP,example.com 是你的域名,请务必替换成你自己的信息。

创建正向解析区域文件

根据 named.conf 中的定义,我们需要创建 /var/named/example.com.zone 文件。

# 复制一个模板文件作为起点
cp /var/named/named.local /var/named/example.com.zone
# 编辑这个新文件
vi /var/named/example.com.zone

修改为以下格式:

$TTL 86400      ; 24 hours
@   IN  SOA ns1.example.com. admin.example.com. (
            2025102701  ; Serial (YYYYMMDDNN)
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400 )     ; Minimum TTL
; Name Server (NS) records
@   IN  NS  ns1.example.com.
; A records - 将主机名映射到IP地址
ns1 IN  A   192.168.1.100
www IN  A   192.168.1.101
ftp IN  A   192.168.1.102
; CNAME records - 别名记录
; 将 www.example.com 指向 example.com
; www IN  CNAME   @
; Mail exchanger (MX) records
@   IN  MX  10  mail.example.com.
mail IN  A   192.168.1.103

关键点解释

  • $TTL:默认的生存时间。
  • SOA:授权区域的开始,包含管理员邮箱(admin.example.com.,注意最后的点)、序列号(每次修改区域文件后必须递增)、刷新时间等。
  • NS:指定该区域的权威名称服务器。
  • A:地址记录,将主机名(如 www)指向一个 IP 地址。
  • CNAME:规范名称记录,为一个主机名创建别名。
  • MX:邮件交换记录,指定负责处理该域邮件的服务器。

创建反向解析区域文件

同样,根据 named.conf 的定义,创建 /var/named/192.168.1.zone 文件。

# 复制模板
cp /var/named/named.local /var/named/192.168.1.zone
# 编辑文件
vi /var/named/192.168.1.zone

修改为以下格式:

$TTL 86400
@   IN  SOA ns1.example.com. admin.example.com. (
            2025102701  ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400 )     ; Minimum TTL
; Name Server (NS) records
@   IN  NS  ns1.example.com.
; PTR records - 将IP地址映射到主机名
100 IN  PTR ns1.example.com.
101 IN  PTR www.example.com.
102 IN  PTR ftp.example.com.
103 IN  PTR mail.example.com.

关键点解释

  • zone 的名称 168.192.in-addr.arpa 对应的是 IP 地址 168.1.x
  • PTR (Pointer) 记录是反向解析的核心,它将 IP 地址的最后一段(如 100)指向一个完整的主机名(如 ns1.example.com.,注意最后的点)。

第四步:设置文件权限和 SELinux

这是在 CentOS 上最容易出错的地方,必须正确设置。

  1. 设置文件所有者named 是 BIND 运行时的用户,确保区域数据文件的所有者是 named

    chown root:named /var/named/example.com.zone
    chown root:named /var/named/192.168.1.zone
  2. 设置文件权限:确保 named 用户可以读取这些文件。

    chmod 640 /var/named/example.com.zone
    chmod 640 /var/named/192.168.1.zone
  3. 处理 SELinux:CentOS 6.5 默认启用 SELinux,它会阻止 BIND 访问它不应该访问的文件,最简单的方法是为 BIND 设置正确的布尔值。

    # 允许 BIND 在非标准端口(如果需要)和写 chroot 目录
    setsebool
分享:
扫描分享到社交APP
上一篇
下一篇