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