实验报告:DNS 服务器部署与配置

一、实验目的

  1. 理解 DNS 服务原理:深入理解域名系统(DNS)的工作机制,掌握域名与 IP 地址的映射关系,以及正向解析与反向解析的区别。

  2. 掌握 BIND 服务部署:学会在 CentOS 7 操作系统上安装并配置 Bind(Berkeley Internet Name Domain)服务程序。

  3. 熟练配置解析规则:能够独立编写 DNS 的主配置文件(named.conf)和区域数据文件(Zone File),实现私有网络内的域名解析服务。

  4. 掌握排错与验证方法:学会使用 named-checkconfnamed-checkzone等工具检查配置语法,并能通过 nslookupdig命令验证解析结果,具备初步的故障排查能力。


二、实验原理

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内输入域名解信

息,在文件末尾追加以下内容(注意花括号和分号):

保存退出

逐行解释

  1. zone "testnamed.com" IN {
    • 定义了一个名为 testnamed.comDNS 区域(zone)IN 表示互联网类(标准 DNS 记录类型)。
  2. type master;
    • 说明这台服务器是该区域的主域名服务器(master),负责维护该区域的权威数据。
  3. file "testnamed.com.zone";
    • 指定该区域的记录数据保存在文件 testnamed.com.zone 中。
  4. allow-update{none;};
    • 明确禁止任何客户端对该区域进行动态更新(即关闭 DDNS 功能),保证记录只能手动修改。
  5. };
    • 结束这个区域的配置块。

补充说明

  • 这是 BIND 中最典型的主区域配置模板,通常写在 named.confnamed.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 地址解析成对应的域名。
  • 这里的 1020 对应 192.168.10.10192.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

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐