目录
DNS系统的作用
缓存域名服务器
主域名服务器
从域名服务器
相关软件包
部署缓存域名服务器实验步骤
1.1
1.2
1.3
部署正向查找主域名服务器实验步骤
1.1
1.2
1.3
部署反向查找主域名服务器实验步骤
1. 修改配置文件
2. 拷贝示例文件并编辑该文件
3. 修改文件的属组,使用named-checkzone命令校验文件,重启named服务
4. 回到103主机,测试反向查找域名解析,也可以通过IP解析域名了
部署从服务器实验步骤
DNS系统的作用
- 正向解析:根据域名查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名
- DNS系统的分布式数据结构

缓存域名服务器
- 也称为DNS高速缓存服务器
- 通过向其他域名服务器查询获得域名->IP地址记录
-
将域名查询结果缓存到本地,提高重复查询时的速度
主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护区域内所有域名->IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
从域名服务器
- 也称为辅助域名服务器,是对主域名服务器的热备份
- 其维护的域名->IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
BIND(Berkrley Internet Name Daemon)
- BIND是应用最广泛的DNS服务程序
- 官方站点:ISC - ISC
相关软件包
- bind-9.9.4-37.el7.x86_64.rpm
- bing-utils-9.9.4-37.el7.x86_64.rpm
- bind-libs-9.9.4-37.el7.x86_64.rpm
- bind-chroot-9.9.4-37.el7.x86_64.rpm
UDP:53/TCP:53
客户端发送解析请求给服务器(UDP53)
TCP:53
主从DNS服务器
DNS服务器转发解析给另一个DNS服务器
安装软件包
yum -y install bind*
部署缓存域名服务器实验步骤
1.1
安装所有相关软件包
![]()
打开该软件的配置文件
![]()
配置文件说明,图中这一部分是该软件的 全局配置选项,这里只修改两行参数

| 代码 | 说明 |
| listen-on port 53 { 192.168.10.101; }; | 监听端口,这里监听本机网卡的53号端口
192.168.10.101:要监听的IP地址,图中表示监听本机网卡的地址,既可以解析本机的请求,也可以处理另外主机的请求 |
| listen-on-v6 port 53 { ::1; }; | 监听IPv6的地址 ::1代表IPv4的127.0.0.1的地址 |
| directory | 区域文件的存储目录 |
| dump-file | 缓存数据库文件的存储位置 |
| statistics-file | 状态统计文件的存储位置 |
| memstatistics-file | 内存统计信息的文件存储位置 |
| recursing-file | 安全备份相关的文件存储位置 |
| secroots-file | 执行递归查询的文件存储位置 |
| allow-query | 允许查询的主机 改为any表示允许所有主机都能查询域名 |
向下翻,可以看到两部分配置选项

其中 zone "." 此处的.代表了根域,根域有13个根服务器

当前主机接收到DNS解析的请求后,会把请求发给指定的服务器,服务器的地址就在 file 指定的 "named.ca" 文件中保存

在named.ca文件中,可以看到a ~ m服务器的两种地址,a ~ m也可以看出服务器的数量,有13个

1.2
启动named服务
![]()
在把另一台虚拟机的DNS首选地址改为192.168.10.101,DNS2删除
![]()
![]()
systemctl restart network重启网络服务
重启网络,为了方便进行实验 关闭防火墙
setenforce 0
![]()
还需关闭作为DNS缓存域名服务器的101主机的防火墙
![]()
1.3
使用ping命令测试DNS是否正常工作,或者为103主机安装bind-utils软件包来使用nslookup功能测试解析DNS


部署正向查找主域名服务器实验步骤
1.1
编辑/etc/named.conf配置文件
定义区域配置选项

保存并退出重启服务
此时会发现重启服务报错了,我们tail /var/log/messages 显示系统日志最后十行内容,可以发现第一行就显示了原因
原因是找不到配置文件中指定的正向查找区域文件

同时可以使用named-checkconf命令来检查配置文件有没有错误
![]()
输入完命令后没有提示,说明配置文件没有出错
然而在配置文件中的全局配置选项里,也指定了区域文件的存放位置

1.2
所以我们cd到该目录下 拷贝示例文件进行修改

$TTL 1D # 有效解析记录的生命周期。TTL:生命周期;1D:一天 @ IN SOA @ rname.invalid. ( # 第二个@符号,调整为配置文件中定义的区域名 # SOA:起始授权机构,代表主域名服务器 # rname.invalid:该设备管理员的邮箱账号 由于@符号与该文件规则冲突所以用.代替 0 ; serial # 更新序列号,从0开始,每一次更新就+1 1D ; refresh # 刷新时间,重新下载数据文件的间隔时间;D:天 1H ; retry # 重试时间,每间隔一小时重新同步一次;H:小时 1W ; expire # 失效时间,下载时间超过一周就放弃下载;W:周 3H ) ; minimum # 无效解析记录生命周期 # 告诉该区域有两台DNS服务器和一台邮件服务器 ↓ @ IN NS ns1.example.com. IN NS ns2.example.com. IN MX 10 mail.example.com. # NS:名称服务器 # MX:邮件服务器;10:该邮箱服务器的优先级,数字越小越优先(0 ~ 10)
修改后的样子如下图

A:A记录,域名到IP的解析过程
* IN A 192.168.10.106 表示 泛域名解析,当解析的名字在范围内就按照具体条目解析,如果不在范围内,按照泛域名解析指向具体条目
此时重启named服务就不会报错了
![]()
使用 named-checkzone 区域名称 区域文件路径 来检测区域文件的正确性,像图中显示的两行即为正确
![]()
1.3
修改文件的属主或数组,确保named服务能够正常访问该文件

再重启named服务,在该文件的属组是root时,该服务认为没有权限读取该文件,所以要刷新一下权限认定
![]()
此时去103主机,测试域名解析

部署反向查找主域名服务器实验步骤
1. 修改配置文件
![]()
再添加一个区域,保存并退出

2. 拷贝示例文件并编辑该文件
![]()

3. 修改文件的属组,使用named-checkzone命令校验文件,重启named服务

4. 回到103主机,测试反向查找域名解析,也可以通过IP解析域名了

部署从服务器实验步骤
1. 配置环境
关闭防火墙,安装bind相关依赖软件包
![]()
打开配置文件
![]()
修改全局参数

定义区域

重启服务,查看程序目录下生成的该子目录下是否有生成备份数据

如果想要测试从域名服务器的域名解析能否实现,在103主机将网卡配置的DNS1改为192.168.10.102就可以实现从域名服务器解析测试了。
DNS分离解析实验步骤
1. 实现外网主机与服务器通信
开启3个linux虚拟机
linux103做内网客户端,102做外网客户端,101做DNS服务器
先为101服务器主机添加一个网卡

将虚拟机网卡配置也改为实验用的同一网段IP

修改网络连接模式为仅主机模式

外网主机(102)也需要将网络连接模式改为仅主机,服务器和外网的主机就桥接了
修改外网主机IP地址和DNS服务器,因为此次实验不需要外网主机和 内网主机能够互相访问,所以不设置网关

重启网络服务,为了方便实验,关闭外网主机的防火墙
![]()
可以看到新网卡已经接入,但是没有相应配置文件就没有IP,所以我们拷贝一个,方便修改

修改配置文件

保存并退出,重启网络服务
![]()
此时外网主机和DNS服务器(101)就能通信了

2. 准备配置文件和查找文件
安装bind相关软件包
![]()
编辑配置文件
![]()
因为要做分离解析,有两个网卡,所以要改为any

创建视图,针对内网和外网客户端的域名解析请求进行定义

到程序目录准备lan.bt.com.zone文件
![]()
拷贝一份示例文件 对针对内网文件进行修改
![]()
![]()
添加解析条目

保存并退出,拷贝一份针对外网的查找文件
![]()
修改IP地址为外网网段192.168

保存并退出,修改两个文件的数组

检测配置文件是否有错
![]()
检测zone文件

关闭防火墙,开启named服务
![]()
3. 测试
来到102外网主机
安装bind-utils软件包,使用nslookup命令解析

再来到103内网主机,也能解析到内网访问www.bt.com这个域名的IP

实现公私分离的解析效果,所以一个域名可以对应多个IP地址
多域名解析
编辑配置文件
![]()
针对内网客户端增加区域

准备出第二个区域所需的文件

修改区域对应的域名,保存并退出

修改文件的属主或属组,重启named服务
![]()
去内网主机测试nslookup命令能够正确解析域名到IP

子域(子区域)
概念
用于将域名空间划分成更小的部分,从而允许对不同部分进行单独管理和控制。每个域名都可以包含多个子域
子域是在主域名的基础上创建的,通过在主域名前添加一个附加标识符而形成的域。例如,在example.com这个主域名下创建mail.example.com,mail就是一个子域。
实验
准备192.168.10.101、192.168.10.102、192.168.10.103三台虚拟机
子域的实验需要恢复Linux初始的快照
配置父域服务器
在192.168.10.101主机操作
设置基本环境,关闭防火墙和内核安全机制,安装bind软件包
![]()
修改全局配置选项
![]()

由于named.conf文件的末尾有include语句,所以我们去/etc/named.rfc1912.zones文件编写内容
include:将其他文件中的信息合并到当前文件中,使得配置更加模块化和易于管理
相当于复制粘贴了指定文件的内容到include语句的当前行

编辑include语句中的文件
![]()
在该文件添加区域实现 模块化配置文件,更易管理

在named服务存放zone文件的目录利用模板,复制出上一步定义的文件名
![]()
编写该文件如下图,定义父域和子域

属主设为named,重启服务
![]()
配置子域服务器
在192.168.10.103主机操作s
关闭防火墙和内核安全机制,安装bind软件包
![]()
修改全局配置
![]()

关闭对解析结果的验证,不作为权威解析服务器去应答,保存并退出

打开该文件
![]()
forward:转发器,如果当前主机接受到一个解析example.com的请求,就把该请求转发到指定的服务器
当一个DNS服务器拥有子区域的时候,并且把该子区域交给指定的主机来完成管理,这种配置方式叫做委派

保存并退出
cd到存放区域文件的目录下,拷贝出子域服务器所用的提供数据的文件,编辑该文件
![]()
文件内容如下

保存并退出,修改属主或属组,并且开启服务
![]()
测试
在192.168.10.102主机操作
打开网卡配置文件
![]()
将首选DNS修改为子域服务器

重启网络服务
![]()
安装bind-utils软件包,使用nslookup命令
![]()


子区域的域名可以直接解析到,父区域的域名通过DNS服务器的转发器转发给101主机,101解析完就发送回客户端
