DNS服务器配置与管理
前言
在之前,曾详细介绍了DNS服务器原理和使用BIND部署DNS服务器,本文主要以一个案例为驱动,在网络中部署主DNS服务器、辅助DNS服务器以及子域委派的配置。
案例需求
某公司申请了域名example.com,公司服务器配置如下图所示,总公司和分公司为父子域架构,父域服务器所在的网段是192.168.200.0/24,有FTP服务器、WEB服务器、电子邮件服务器,分公司使用子域规划,子域名为develop,所在网段为192.168.100.0/24,部署了文件服务器、流媒体服务器。
现需在总公司附属父域的主DNS服务器和辅助DNS服务器,子域通过委派方式由子域DNS服务器管理,并规划资源记录主要属性如下表所示:
1、总公司服务器
序号 | 记录名称 | 记录类型 | 属性值 | 作用 |
---|---|---|---|---|
01 | master | A | 192.168.200.100 | 总公司主DNS服务器 |
02 | slaver | A | 192.168.200.200 | 总公司辅助DNS服务器 |
03 | ftp | A | 192.168.200.21 | 总公司FTP服务器 |
04 | www | A | 192.168.200.22 | 总公司WEB服务器 |
05 | smtp | A | 192.168.200.23 | 总公司电子邮件服务器 |
06 | pop3 | A | 192.168.200.23 | 总公司电子邮件服务器 |
07 | example.com | SOA | 默认 | |
08 | example.com | NS | master.example.com | |
09 | example.com | NS | slaver.example.com | |
10 | www1 | CNAME | www.example.com | |
11 | CNAME | smtp.example.com | ||
12 | example.com | MX | smtp.example.com | |
13 | 所有主机记录创建对应的PTR记录 |
2、分公司服务器
序号 | 记录名称 | 记录类型 | 属性值 | 作用 |
---|---|---|---|---|
01 | dns | A | 192.168.100.100 | 分公司DNS服务器 |
02 | file | A | 192.168.100.11 | 分公司文件服务器 |
03 | vod | A | 192.168.100.12 | 分公司流媒体服务器 |
04 | develop.example.com | SOA | 默认 | |
05 | develop.example.com | NS | dns.develop.example.com |
一、实验环境部署
本实验基于VMware Workstation 16平台,VMnet1网段为192.168.100.0/24,VMnet8网段为192.168.200.0/24,实验之前配置好网卡IP地址、做好实验环境初始化。
服务器 | IP地址 | 操作系统 | 配置 |
---|---|---|---|
总公司主DNS服务器 | 192.168.200.100 | CentOS 7.5 | 配置YUM源、关闭防火墙、SELinux |
总公司辅助DNS服务器 | 192.168.200.200 | CentOS 7.5 | 配置YUM源、关闭防火墙、SELinux |
分公司DNS服务器 | 192.168.100.100 | CentOS 7.5 | 配置YUM源、关闭防火墙、SELinux |
测试主机 | 192.168.200.222 | Windows 10 | - |
二、部署总公司主DNS服务器
2.1 安装DNS服务器
配置好YUM源后,在主DNS服务器上安装BIND。
[root@master ~]# yum install bind -y
BIND安装好后,会生成一个named.service的系统服务,启动named服务并设置开机重启。
[root@master ~]# systemctl start named
[root@master ~]# systemctl enable named
2.2 修改主配置文件
编辑**/etc/named.conf**主配置文件
[root@master ~]# vim /etc/named.conf
找到对应的内容并做以下修改:
options {
listen-on port 53 { any; }; # 127.0.0.1改成any
......
allow-query { any; }; # localhost改成any
......
}
......
include "/etc/named.zones"; # /etc/named.rfc1912.zones改成/etc/named.zones
# /etc/named.zones是自定义的区域配置文件
include "/etc/named.root.key";
......
2.3 编辑区域配置文件
区域配置文件**/etc/named.zones**,可以从模板文件复制,加**-p**选项保留原有属性。
[root@master ~]# cp -p /etc/named.rfc1912.zones /etc/named.zones
在该区域配置文件中,添加两个区域,一个example.com的正向解析区域,和一个200.168.192.in-addr.arpa的反向解析区域。
编辑区域配置文件**/etc/named.zones**
[root@master ~]# vim /etc/named.zones
删除原来的内容,修改内容如下:
zone "example.com" IN {
type master;
file "example.com.zone"; #正向解析区域数据库文件 保存在/var/named/目录中
allow-update { none; };
};
zone "200.168.192.in-addr.arpa" IN {
type master;
file "100.200.168.192.zone"; #反向解析区域数据库文件 保存在/var/named/目录中
allow-update { none; };
};
2.4 编辑正向解析区域数据库文件
配置example.com区域的正向解析区域数据库文件,该文件从模板文件**/var/named/named.localhost**复制而来。
[root@master ~]# cp -p /var/named/named.localhost /var/named/example.com.zone
编辑正向解析区域数据库文件
[root@master ~]# vim /var/named/example.com.zone
按照上面总公司服务器规划,修改内容如下
$TTL 1D
@ IN SOA @ mail.example.com. (
2024041501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS master.example.com.
@ IN MX 10 smtp.example.com.
master IN A 192.168.200.100
ftp IN A 192.168.200.21
www IN A 192.168.200.22
smtp IN A 192.168.200.23
pop3 IN A 192.168.200.23
www1 IN CNAME www.example.com
mail IN CNAME smtp.example.com
2.5 编辑反向解析区域数据库文件
配置example.com区域的反向解析区域数据库文件,该文件从模板文件**/var/named/named.loopback**复制而来。
[root@master ~]# cp -p /var/named/named.loopback /var/named/100.200.168.192.zone
编辑反向解析区域数据库文件
[root@master ~]# vim /var/named/100.200.168.192.zone
按照上面总公司服务器规划,修改内容如下
$TTL 1D
@ IN SOA @ mail.example.com. (
2024041501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS master.example.com.
100 IN PTR master.example.com.
21 IN PTR ftp.example.com.
22 IN PTR www.example.com.
23 IN PTR smtp.example.com.
23 IN PTR pop3.example.com.
2.6 检查测试
1、检查主配置文件
[root@master ~]# named-checkconf /etc/named.conf
2、检查两个区域数据库文件
检查正向解析区域数据库文件
[root@master ~]# named-checkzone example.com /var/named/example.com.zone
zone example.com/IN: loaded serial 2024041501
OK
检查反向解析区域数据库文件
[root@master ~]# named-checkzone 200.168.192.in-addr.arpa /var/named/100.200.168.192.zone
zone 200.168.192.in-addr.arpa/IN: loaded serial 2024041501
OK
3、重新加载DNS区域配置
如果DNS服务器已经启动了,就使用rndc reload重新加载所有区域配置。
[root@master ~]# rndc reload
server reload successful
4、测试
在测试主机(Windows 10)上配置网络适配器的首选DNS服务器为上面配置的总公司主DNS服务器地址。
使用nslookup测试主DNS服务器的解析功能。如下图所示:
三、部署总公司辅助DNS服务器
3.1 Slaver:安装DNS服务并启动
[root@slaver ~]# yum install bind -y
[root@slaver ~]# systemctl start named
[root@slaver ~]# systemctl enable named
3.2 Master:修改配置
1、修改主DNS服务器的主配置文件
[root@master ~]# vim /etc/named.conf
在option部分增加一行,允许192.168.200.200的主机从本机复制
options {
......
allow-transfer { 192.168.200.200; };
......
}
2、修改主DNS服务器的正向解析区域数据库文件/var/named/example.com.zone
[root@master ~]# vim /var/named/example.com.zone
在该文件中增加一条NS记录和一条主机记录
# 增加的NS记录
@ IN NS slaver.example.com.
# 增加的主机记录
slaver IN A 192.168.200.200
3、修改主DNS服务器的反向解析区域数据库文件/var/named/100.200.168.192.zone
[root@master ~]# vim /var/named/100.200.168.192.zone
在该文件中增加一条NS记录和一条指针记录
# 增加的NS记录
@ IN NS slaver.example.com.
# 增加的主机记录
200 IN PTR slaver.example.com.
4、检查配置文件并重启DNS服务
[root@master ~]# named-checkconf /etc/named.conf
[root@master ~]# named-checkzone example /var/named/example.com.zone
zone example/IN: loaded serial 2024041501
OK
[root@master ~]# named-checkzone 200.168.192.in-addr.arpa /var/named/100.200.168.192.zone
zone 200.168.192.in-addr.arpa/IN: loaded serial 2024041501
OK
[root@master ~]# systemctl restart named
3.3 Slaver:修改主配置文件
1、修改辅助DNS服务器的主配置文件
[root@slaver ~]# vim /etc/named.conf
修改内容如下:
options {
listen-on port 53 { any; }; # 修改127.0.0.1改成any
......
allow-query { any; }; # 修改localhost改成any
allow-transfer { none; }; # 增加此行,拒绝任何主机从本服务器拉取数据
......
}
include "/etc/named.rfc1912.zones"; # 删除此行
include "/etc/named.root.key"; # 删除此行
......
# 添加以下配置
zone "example.com"{
type slave; # 区域类型为slave
file "slaves/example.com.zone"; # 正向解析区域的数据库文件
masters { 192.168.200.100; };
};
zone "200.168.192.in-addr.arpa"{
type slave;
file "slaves/100.200.168.192.zone"; # 反向解析区域的数据库文件
masters { 192.168.200.100; };
};
2、检查配置文件语法
[root@slaver ~]# named-checkconf /etc/named.conf
说明:辅助DNS服务器不需要创建DNS区域数据库文件,这些文件待辅助DNS重启或者等到一定时间到,从主DNS服务器复制过来,并保存在目录**/var/named/slaves**中。
3.3 检查主从DNS服务器数据同步
同步之前查看区域数据库文件信息,没有区域数据库文件
[root@slaver ~]# ll /var/named/slaves/
总用量 0
重新启动辅助DNS服务器的DNS服务
[root@slaver ~]# systemctl restart named
重新查看区域数据库文件信息,此时有区域数据库文件,说明复制成功
[root@slaver ~]# ll /var/named/slaves/
总用量 8
-rw-r--r--. 1 named named 595 4月 15 17:58 100.200.168.192.zone
-rw-r--r--. 1 named named 647 4月 15 17:58 example.com.zone
继续查看主DNS服务器的日志文件**/var/log/messages**,可以看到传输日志
[root@master ~]# tail /var/log/messages
Apr 15 17:38:34 server named[48206]: running
Apr 15 17:38:34 server named[48206]: zone 200.168.192.in-addr.arpa/IN: sending notifies (serial 2024041501)
Apr 15 17:38:34 server named[48206]: zone example.com/IN: sending notifies (serial 2024041501)
Apr 15 17:38:34 server systemd: Started Berkeley Internet Name Domain (DNS).
Apr 15 17:58:47 server named[48206]: client 192.168.200.200#33164 (example.com): transfer of 'example.com/IN': AXFR started
Apr 15 17:58:47 server named[48206]: client 192.168.200.200#33164 (example.com): transfer of 'example.com/IN': AXFR ended
Apr 15 17:58:47 server named[48206]: client 192.168.200.200#3778: received notify for zone 'example.com'
Apr 15 17:58:47 server named[48206]: client 192.168.200.200#34322 (200.168.192.in-addr.arpa): transfer of '200.168.192.in-addr.arpa/IN': AXFR started
Apr 15 17:58:47 server named[48206]: client 192.168.200.200#34322 (200.168.192.in-addr.arpa): transfer of '200.168.192.in-addr.arpa/IN': AXFR ended
Apr 15 17:58:47 server named[48206]: client 192.168.200.200#29415: received notify for zone '200.168.192.in-addr.arpa'
3.4 客户端检查测试
在测试主机(Windows 10)上配置网络适配器的首选DNS服务器为上面配置的总公司辅助DNS服务器地址192.168.200.200。
使用nslookup测试主DNS服务器的解析功能。如下图所示:
四、部署分公司DNS服务器(子域委派)
实验之前保障公司主DNS服务器和分公司的DNS服务器能够正常通信,本例中解决的办法是在分公司的DNS服务器上增加了一块vnet8网卡。
4.1 子域服务器:安装DNS服务
[root@dns ~]# yum install bind -y
[root@dns ~]# systemctl start named
[root@dns ~]# systemctl enable named
4.2 修改总公司主DNS服务器配置
1、修改总公司主DNS服务器的正向解析区域数据库文件
[root@master ~]# vim /var/named/example.com.zone
在**/var/named/example.com.zone**中添加一条子域的NS记录和一条子域DNS服务器的A记录。
develop.example.com. IN NS dns.develop.example.com.
dns.develop.example.com. IN A 192.168.100.100
2、检查配置
[root@master ~]# named-checkzone example.com /var/named/example.com.zone
zone example.com/IN: develop.example.com/NS 'dns.develop.example.com' (out of zone) has no addresses records (A or AAAA)
zone example.com/IN: loaded serial 2024041501
OK
[root@master ~]# rndc reload
server reload successful
4.3 配置分公司DNS服务器主配置文件
[root@dns ~]# vim /etc/named.conf
修改内容如下
options {
listen-on port 53 { any; }; # 修改127.0.0.1改成any
......
allow-query { any; }; # 修改localhost改成any
allow-transfer { none; }; # 增加此行,拒绝任何主机从本服务器拉取数据
......
}
include "/etc/named.rfc1912.zones"; # 删除此行
......
zone "develop.example.com" IN { # 增加此5行
type master;
file "develop.example.com.zone";
allow-update { none; };
};
4.4 配置分公司DNS服务器区域数据库文件
1、修改区域数据库文件
[root@dns ~]# cp -p /var/named/named.localhost /var/named/develop.example.com.zone
[root@dns ~]# vim /var/named/develop.example.com.zone
修改内容如下
$TTL 1D
@ IN SOA @ mail.example.com. (
2024041501 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.develop.example.com.
dns IN A 192.168.100.100
file IN A 192.168.100.11
vod IN A 192.168.100.12
2、检查配置
[root@dns ~]# named-checkconf /etc/named.conf
[root@dns ~]# named-checkzone develop.example.com /var/named/develop.example.com.zone
zone develop.example.com/IN: loaded serial 2024041501
OK
[root@dns ~]# systemctl restart named
4.5 客户端检查测试
在测试主机(Windows 10)上配置网络适配器的首选DNS服务器为上面配置的总公司主DNS服务器地址192.168.200.100或者总公司的辅助DNS服务器地址192.168.200.200。
使用nslookup测试主DNS服务器的解析功能。如下图所示:可以发现主DNS服务器上并没有file.develop.example.com的记录,但是可以解析到,因为设置了子域委派。
五、DNS转发器和惟缓存服务器
关于DNS服务器的配置,还有搭建DNS转发器,DNS转发包括完全转发和条件转发;另外还有惟缓存服务器,配置起来也不复杂,这里不再赘述,有兴趣的自行翻阅材料。