HCRM博客

如何在CentOS上配置和管理DNS服务?

CentOS DNS 服务详解与配置指南

一、DNS 服务介绍

如何在CentOS上配置和管理DNS服务?-图1
(图片来源网络,侵权删除)

DNS 的定义与作用

DNS,全称为域名系统(Domain Name System),是一种分布式数据库系统,用于将域名转换为 IP 地址,DNS 的主要功能是通过域名解析来简化用户访问互联网的方式,使人们更容易记住和使用基于文本的域名,而不是复杂的数字 IP 地址,当你在浏览器中输入 www.google.com 时,DNS 服务器会将其解析为相应的 IP 地址,从而让你能够访问谷歌的网站。

DNS 工作原理

DNS 工作原理基于 UDP 协议,使用端口号 53,当用户请求一个域名时,DNS 服务器通过递归查询或迭代查询来找到对应的 IP 地址:

递归查询:DNS 服务器无法直接回答一个查询,它会代表客户端进行查询,直到得到最终结果。

迭代查询:DNS 服务器为客户返回另一台可以进一步查询的 DNS 服务器的地址,由客户端自行向下一台服务器进行查询。

DNS 服务器类型

主DNS服务器:负责维护和解析特定区域内的所有域名。

辅助DNS服务器:为主服务器提供备份,并分担解析任务

如何在CentOS上配置和管理DNS服务?-图2
(图片来源网络,侵权删除)

高速缓存DNS服务器:存储常见的 DNS 记录,加速解析过程。

二、安装 DNS 服务

安装步骤

1.1 安装 bind 软件包

在 CentOS 系统中,Bind 是最常用的 DNS 服务器软件,可以通过以下命令安装 Bind:

sudo yum install bind bindchroot bindutils y

bind:主要的 DNS 服务软件。

bindchroot:安全增强的软件包,可以将命名空间 chroot 到 /var/named/chroot。

如何在CentOS上配置和管理DNS服务?-图3
(图片来源网络,侵权删除)

bindutils:包含一些管理工具如nslookupdig 等。

1.2 检查安装状态

安装完成后,可以通过以下命令检查 Bind 的版本信息以确保安装成功:

named v

配置文件说明

2.1 主配置文件/etc/named.conf

该文件设置全局参数和指定区域数据文件的位置。

options {
    listenon port 53 { any; };
    directory     "/var/named";
    dumpfile     "/var/named/data/cache_dump.db";
    statisticsfile "/var/named/data/named_stats.txt";
    memstatisticsfile "/var/named/data/named_mem_stats.txt";
    allowquery     { any; };
    recursion yes;
    dnssecenable yes;
    dnssecvalidation yes;
    dnsseclookaside auto;
    /* Path to ISC DLV key */
    bindkeysfile "/etc/named.iscdlv.key";
    managedkeysdirectory "/var/named/dynamic";
};

主要配置项包括:

listenon port 53 { any; };:监听所有网络接口的 53 端口。

directory "/var/named";:定义工作目录。

allowquery { any; };:允许任何主机查询。

recursion yes;:启用递归查询。

2.2 正向解析文件/var/named/named.localhost

这是一个模板文件,通常复制并修改它来创建自定义的正向解析文件,创建一个rion.com.zone 文件:

[root@centos8 ~]# cp /etc/named.rfc1912.zones /var/named/rion.com.zone

编辑rion.com.zone 文件以添加具体的域名和 IP 地址记录:

$TTL 86400
@   IN  SOA rion.com. root.rion.com. (
            2023101001  ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400       ; Negative TTL
        )
        NS      rion.com.
        A       192.168.100.106
        AAAA   ::1
        MX 10   mail.rion.com.
        ftp     A       192.168.100.110
        www     A       192.168.100.120
        web     CNAME   www.rion.com.
        mail    A       192.168.100.130

2.3 反向解析文件/var/named/named.loopback

反向解析文件用于将 IP 地址解析回域名,编辑192.168.100.arpa 文件:

$TTL 86400
@   IN  SOA rion.com. root.rion.com. (
            2023101001  ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400       ; Negative TTL
        )
        NS      rion.com.
        106     IN      PTR     rion.com.
        110     IN      PTR     ftp.rion.com.
        120     IN      PTR     www.rion.com.
        130     IN      PTR     mail.rion.com.

三、配置 DNS 服务

配置正向解析文件

编辑正向解析文件/var/named/rion.com.zone,添加如下内容:

$TTL 86400
@   IN  SOA rion.com. root.rion.com. (
            2023101001  ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400       ; Negative TTL
        )
        NS      rion.com.
        A       192.168.100.106
        AAAA   ::1
        MX 10   mail.rion.com.
        ftp     A       192.168.100.110
        www     A       192.168.100.120
        web     CNAME   www.rion.com.
        mail    A       192.168.100.130

保存并退出编辑器,此文件定义了rion.com 域的正向解析规则。

配置反向解析文件

编辑反向解析文件/var/named/192.168.100.arpa,添加如下内容:

$TTL 86400
@   IN  SOA rion.com. root.rion.com. (
            2023101001  ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400       ; Negative TTL
        )
        NS      rion.com.
        106     IN      PTR     rion.com.
        110     IN      PTR     ftp.rion.com.
        120     IN      PTR     www.rion.com.
        130     IN      PTR     mail.rion.com.

保存并退出编辑器,此文件定义了192.168.100.x 段的反向解析规则。

3. 修改主配置文件named.conf

确保主配置文件/etc/named.conf 包括以下区域声明:

options {
    listenon port 53 { any; };
    directory     "/var/named";
    dumpfile     "/var/named/data/cache_dump.db";
    statisticsfile "/var/named/data/named_stats.txt";
    memstatisticsfile "/var/named/data/named_mem_stats.txt";
    allowquery     { any; };
    recursion yes;
    dnssecenable yes;
    dnssecvalidation yes;
    dnsseclookaside auto;
};
logging {
        channel default_debug {
                file "/var/named/data/named_debug.log" versions 3;
                severity dynamic;
                printtime yes;
                printseverity yes;
                printcategory yes;
        };
};
zone "." IN {
    type hint;
    file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

添加新的区域文件:

zone "rion.com" IN {
    type master;
    file "rion.com.zone";
};
zone "192.168.100.inaddr.arpa" IN {
    type master;
    file "192.168.100.arpa";
};

启动与重启 DNS 服务

启动并使 DNS 服务在系统启动时自动运行:

sudo systemctl start named
sudo systemctl enable named

重启服务以应用更改:

sudo systemctl restart named

四、测试与验证

使用 dig 命令测试正向解析

使用dig 命令测试域名解析:

dig @localhost www.rion.com

输出示例:

;; QUESTION SECTION:
;; www.rion.com.                   IN      A
;; ANSWER SECTION:
www.rion.com.            86400   IN      A       192.168.100.120

使用 dig 命令测试反向解析

使用dig 命令测试 IP 地址解析:

dig @localhost x 192.168.100.120

输出示例:

;; QUESTION SECTION:
;192.168.100.120.                    IN      PTR
;; ANSWER SECTION:
120、100.168.192.inaddr.arpa. 86400 IN    PTR     www.rion.com.

常见问题排查与解决方案

DNS 服务无法启动:检查配置文件语法是否正确,可以使用namedcheckconfnamedcheckzone 检查配置文件和区域文件。

权限问题:确保配置文件和区域文件的权限正确,特别是named 用户对相关文件具有读写权限。

防火墙设置:确保防火墙开放了端口 53,允许外部查询,可以使用以下命令开放端口:

firewallcmd permanent addservice=dns
firewallcmd reload
分享:
扫描分享到社交APP
上一篇
下一篇