操作系统的DNS 服务器搭建与排错(正向 + 反向解析)
本文介绍了DNS服务器部署与配置实验,主要内容包括:1. 实验目的:掌握DNS原理、BIND服务部署、解析规则配置及排错方法;2. 实验原理:讲解DNS基本概念、解析方式、服务器类型及BIND软件;3. 详细实验步骤:从环境准备、软件安装到主配置文件和区域文件的配置,包括正向解析和反向解析的设置与验证。通过nslookup等工具测试解析结果,确保DNS服务正常运行。实验帮助理解域名与IP地址的映射
实验报告:DNS 服务器部署与配置
一、实验目的
-
理解 DNS 服务原理:深入理解域名系统(DNS)的工作机制,掌握域名与 IP 地址的映射关系,以及正向解析与反向解析的区别。
-
掌握 BIND 服务部署:学会在 CentOS 7 操作系统上安装并配置 Bind(Berkeley Internet Name Domain)服务程序。
-
熟练配置解析规则:能够独立编写 DNS 的主配置文件(
named.conf)和区域数据文件(Zone File),实现私有网络内的域名解析服务。 -
掌握排错与验证方法:学会使用
named-checkconf、named-checkzone等工具检查配置语法,并能通过nslookup或dig命令验证解析结果,具备初步的故障排查能力。
二、实验原理
1. DNS 基本概念
域名系统(Domain Name System,简称 DNS)是互联网的一项核心服务。它作为将域名和IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,而不用去记忆复杂的数字 IP 地址。DNS使用TCP和UDP端口53。主机名到IP地址的映射有两种方式:
(1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
(2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。
通常Interne主机域名的一般结构为:主机名、三级域名、二级域名、顶级域名。Internet的顶级域名由Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为Internet的每一台主机分配唯一的IP地址
2. 域名解析方式
-
正向解析:将域名(如
www.example.com)解析为对应的 IP 地址。这是最常用的解析方式。 -
反向解析:将 IP 地址(如
192.168.1.1)解析为对应的域名。常用于邮件服务器反垃圾邮件验证等场景。
3. DNS 服务器类型
-
主服务器 (Master):在特定区域内具有唯一性,负责维护该区域内的域名与 IP 地址的对应关系,是数据的原始来源。
-
从服务器 (Slave):从主服务器中获取域名与 IP 地址的对应关系并进行维护,作为主服务器的热备,防止主服务器宕机。
-
缓存服务器 (Cache-only):通过向其他域名解析服务器查询获得域名与 IP 地址的对应关系,并将结果缓存到本地,提高重复查询的效率。
4. BIND 软件介绍
BIND (Berkeley Internet Name Domain) 是目前世界上使用最广泛的 DNS 服务器软件。在 CentOS 7 中,BIND 服务程序名为 named。
-
主配置文件:
/etc/named.conf(定义全局选项和监听端口) -
区域配置文件:
/etc/named.rfc1912.zones(定义正反向解析区域) -
数据文件目录:
/var/named/(存放具体的域名-IP 映射数据)
三、实验步骤与操作指南(实操部分)
💡 操作提示:以下命令请在 CentOS 7 终端中逐行执行。如果遇到报错,请截图发送给我。
第一阶段:环境准备与软件安装
思考逻辑:确保系统干净,安装必要的软件包。
先检测Bind软件安装情况yum list | grep bind

在命令行中执行如下命令。
# 1. 检查并安装 BIND 软件
yum install -y bind bind-chroot
# 2. 检查安装结果
rpm -ql bind | head
得出结果

Bind服务程序相关配置文件路径:
- /etc/named.conf 为主要配置文件
- /etc/named.rfc1912.zones 为区域配置文件
- /var/named/ 为数据配置文件目录
第二阶段:初始化Bind服务
一、配置主配置文件 (/etc/named.conf)
思考逻辑:告诉 DNS 服务监听哪些端口,允许谁查询。
vim /etc/named.conf
修改以下内容(建议直接改,或者用 sed 命令):
在vim编辑器中使用指令“:set nu”,查看文本行数。将文件中第13,14行和第19行的地址参数都更改为any,分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。

options {
listen-on port 53 { any; }; # 原为 127.0.0.1,改为 any
listen-on-v6 port 53 { any; }; # 改为 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; }; # 原为 localhost,改为 any
recursion yes; # 开启递归查询
...
}
保存退出。
随后重启服务:systemctl restart named
二、配置区域文件(定义正反向解析域)
思考逻辑:告诉 BIND,我们要管理哪个域名(如 testnamed.com),以及对应的数据文件在哪里。
备份区域配置文件/etc/named.rfc1912.zones:
mv /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
这个命令的意思就是:“把原来的配置文件打个包收起来(变成 .bak),我要重新开始写一个全新的了。” 这样可以保证你接下来的实验环境是纯净且可控的。
vim /etc/named.rfc1912.zones
进入vim编辑器界面,在正常模式下输入i进入vim插入模式,使用vim编辑。在vim内输入域名解信
息,在文件末尾追加以下内容(注意花括号和分号):
保存退出。
逐行解释
zone "testnamed.com" IN {- 定义了一个名为
testnamed.com的 DNS 区域(zone),IN表示互联网类(标准 DNS 记录类型)。
- 定义了一个名为
type master;- 说明这台服务器是该区域的主域名服务器(master),负责维护该区域的权威数据。
file "testnamed.com.zone";- 指定该区域的记录数据保存在文件
testnamed.com.zone中。
- 指定该区域的记录数据保存在文件
allow-update{none;};- 明确禁止任何客户端对该区域进行动态更新(即关闭 DDNS 功能),保证记录只能手动修改。
};- 结束这个区域的配置块。
补充说明
- 这是 BIND 中最典型的主区域配置模板,通常写在
named.conf或named.conf.local文件里。 allow-update{none;};是安全的默认配置,防止未授权的动态更新修改 DNS 记录。- 对应的
testnamed.com.zone文件里,会包含该域名下的 A、MX、CNAME 等实际解析记录。
三、创建区域数据文件(核心配置)
思考逻辑:这里是真正写“域名=A记录”的地方。
1. 正向解析文件配置数据配置文件
进入/var/named目录:cd /var/named/
查询正向解析模板文件(named.localhost)相关权限及所属组:ls -al named.localhost
以模板为对象拷贝域名数据配置文件。拷贝时添加参数–p使得复制文件的所有者、所属组、权限属性等信息与模板保持一致,否则Bind服务在读取文件时会遇到用户以及权限的问题:
cp -p named.localhost testnamed.com.zone

修改数据配置文件:vim testnamed.com.zone
testnamed.com.zone删除原内容,粘贴以下标准模板:

保存重启服务:systemctl restart named
正向解析——检验解析结果
修改网卡配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens3
添加DNS解析地址为本地
总结一句话:
这一步是让你的“客户端”知道去哪里找你的“服务端”,从而验证你搭建的 DNS 服务是否真正可用。
类比理解:
-
DNS 服务器 = 你开了一家“地图导航公司”。
-
修改网卡配置 = 你把自己的手机地图软件里,默认导航服务商设置为你自己的这家公司。
-
目的 = 这样你用自己的手机测试自己公司的导航服务,看看能不能正常指路

修改完文件后重启网卡,更新配置:systemctl restart network
查看并修改文件/etc/resolv.conf,保证文件中有且只有一条数据:这一步就像是“最终确认”:不管之前怎么配,最后在这个文件里,我们只留一行字——“请找我自己(127.0.0.1)帮忙解析域名”。这样就能保证实验结果准确无误,不会因为残留的外网 DNS 配置而翻车(这一步就像是“最终确认”:不管之前怎么配,最后在这个文件里,我们只留一行字——“请找我自己(127.0.0.1)帮忙解析域名”。这样就能保证实验结果准确无误,不会因为残留的外网 DNS 配置而翻车)

使用nslookup命令测试域名解析,测试www.testnamed.com

2. 反向解析文件
添加反向解析配置,反向解析配置参数添加至正向解析参数的后面,编辑区域配置文件:
vim /etc/named.rfc1912.zones

3.反向解析——配置数据配置文件
进入/var/named目录:cd /var/named/
查询正向解析模板文件(named.loopback)权限及所属组:ls -al named.loopback
以模板为对象拷贝域名数据配置文件:cp -p named.loopback 192.168.10.arpa
拷贝时添加参数–p使得复制文件的所有者、所属组、权限属性等信息与模板保持一致,否则Bind服务在读取文件时会遇到用户以及权限的问题
查询数据配置文件192.168.10.arpa相关权限及所属组:
ls -al 192.168.10.arpa
修改数据配置文件192.168.10.arpa:
补充说明
- 这是 BIND 的反向解析区域文件(
192.168.10.arpa),用于把 IP 地址解析成对应的域名。 - 这里的
10、20对应192.168.10.10和192.168.10.20的最后一段 IP,所以:10 PTR ns.testnamed.com.表示192.168.10.10反向解析到ns.testnamed.com.20 PTR bbs.testnamed.com.表示192.168.10.20反向解析到bbs.testnamed.com.
重启Bind服务
4.反向解析——检验解析结果
让服务器重载配置和区域数据库文件:rndc reload
使用nslookup命令测试域名解析:nslookup
测试192.168.10.10、测试192.168.10.20
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)