CentOS DNS 服务详解与配置指南
一、DNS 服务介绍

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服务器:为主服务器提供备份,并分担解析任务。

高速缓存DNS服务器:存储常见的 DNS 记录,加速解析过程。
二、安装 DNS 服务
安装步骤
1.1 安装 bind 软件包
在 CentOS 系统中,Bind 是最常用的 DNS 服务器软件,可以通过以下命令安装 Bind:
sudo yum install bind bindchroot bindutils y
bind:主要的 DNS 服务软件。
bindchroot:安全增强的软件包,可以将命名空间 chroot 到 /var/named/chroot。

bindutils:包含一些管理工具如nslookup、dig 等。
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.1302.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 服务无法启动:检查配置文件语法是否正确,可以使用namedcheckconf 和namedcheckzone 检查配置文件和区域文件。
权限问题:确保配置文件和区域文件的权限正确,特别是named 用户对相关文件具有读写权限。
防火墙设置:确保防火墙开放了端口 53,允许外部查询,可以使用以下命令开放端口:
firewallcmd permanent addservice=dns firewallcmd reload
