【Centos8.4-DNS服务(主备DNS、增量备份DNS、缓存DNS、转发DNS)】

一、什么是DNS服务

DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器,也可将IP地址转换为对应的域名。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。
工作端口:
TCP53:用于主备之间同步数据
UDP53:用于客户端查询解析域名

解析方式分类:
1、正向解析,既将FQDN解析为IP。
2、反向解析,将IP解析为FQDN。

DNS查询方式:
1、迭代查询: DNS服务器收到请求后,若没有缓存记录,会返回下一个可能知道答案的服务器地址,由客户端(或最初请求的服务器)自行继续查询,直到找到最终结果。
例如: 本地DNS服务器收到迭代查询:
先向根域名服务器询问 .com 的顶级域服务器地址。
根服务器返回 .com 的地址,本地DNS再向 .com 服务器询问 example.com 的权威服务器地址。
.com 服务器返回 example.com 的权威服务器地址,本地DNS最终向该权威服务器查询www.example.com 的IP。
最终本地DNS整合结果后返回给客户端。
2、递归查询: 客户端向DNS服务器发起请求后,该DNS服务器必须负责返回最终结果(IP地址或明确的错误)。如果服务器没有缓存记录,它会代替客户端层层查询其他DNS服务器,直到获取答案。
例如: 用户访问 www.example.com,向本地DNS服务器(如 8.8.8.8)发送递归查询请求。
本地DNS服务器若没有缓存,则代替客户端依次查询根域名服务器 → .com顶级域服务器 → example.com权威服务器,最终获取IP地址。
本地DNS服务器将最终结果返回给用户。

DNS查询流程:
1.当客户端查询www.baidu.com时,首先会检查客户端本地hosts文件,如果该文件中有,则响应,如果没有,则会去查询DNS服务器;
2.如果DNS服务器有该记录,则直接返回,如果没有,可以向转发DNS查询;
3.如果转发DNS有该记录,则返回给客户端,并缓存到DNS服务器中;
4.如果配置forward only;转发DNS没有该记录,则返回客户端无记录,如果配置forwardfirst,如果转发DNS没有该记录,则从根开始一级级进行查询。

实验环境:

IP地址作用
192.168.10.201主DNS服务器
192.168.10.200备份DNS服务器
192.168.10.13客户端测试

二、DNS的安装和配置文件

在Linux下,DNS的软件包为bind(Berkeley Internet Name Domain)

[root@web2 ~]# yum install -y bind

bind软件包的配置文件

主程序/usr/sbin/named
主配置文件/etc/named.conf
区域配置文件/etc/named.rfc1912.zones
zone的默认存放路径/var/named

/etc/named.conf : Bind的主配置文件,用于定义全局设置,DNS的zone等相关配置。

[root@web2 ~]# vim /etc/named.conf 
options {  #options段用于定义全局设置
	listen-on port 53 { 127.0.0.1; }; #定义bind的监听IPv4地址
	listen-on-v6 port 53 { ::1; }; #定义bind的监听IPv6地址
	directory 	"/var/named"; #zone文件的默认路径
	dump-file 	"/var/named/data/cache_dump.db"; #cache的备份
	statistics-file "/var/named/data/named_stats.txt"; #静态文件
	memstatistics-file "/var/named/data/named_mem_stats.txt"; #内存静态文件
	secroots-file	"/var/named/data/named.secroots"; #存储DNSSEC验证安全根(Secure Roots)的文件
	recursing-file	"/var/named/data/named.recursing"; #存储递归查询状态的文件
	allow-query     { 127.0.0.1; };  #允许谁向此DNS进行查询
	recursion yes; #启用递归查询
	
	##安全相关部分:
	dnssec-enable yes;
	dnssec-validation yes;
	managed-keys-directory "/var/named/dynamic";
	pid-file "/run/named/named.pid";
	session-keyfile "/run/named/session.key";
	/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
	include "/etc/crypto-policies/back-ends/bind.config";
};
###日志相关
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
##定义zone
zone "." IN {
	type hint;
	file "named.ca";
};

##子配置文件
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

/etc/named.rfc1912.zones:Bind的区域配置文件,用于定义zone

[root@web2 ~]# vim /etc/named.rfc1912.zones
zone "localhost.localdomain" IN {  #正向解析zone的名字
	type master;  #类型
	file "named.localhost"; #解析文件
 	allow-update { none; }; #是否自动更新
};

zone "localhost" IN {
	type master;
	file "named.localhost";
	allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
	type master;
	file "named.loopback";
	allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {  #反向解析zone的名字
	type master;
	file "named.loopback";
	allow-update { none; };
};

zone "0.in-addr.arpa" IN {
	type master;
	file "named.empty";
	allow-update { none; };
};

zone的默认存放路径/var/named/下(与named.rfc1912.zones中的zone对应的文件)
zone文件的书写格式:

$TTL 1D #TTL默认值为1天
@   [TTL]  IN  SOA  主DNS服务器FQDN  管理员邮箱  (
                                        0       ; 序列号
                                        1D      ; 更新间隔
                                        1H      ; 更新失败后重试间隔
                                        1W      ; 过期时长
                                        3H )    ; 否定记录保存时长
 
资源类型:A(IPv4), AAAA(IPv6):定义FQDN的IP
          NS :   定义DNS服务器的FQDN
          SOA :   起始授权(每个zone首先要定义此值)
          MX:    定义邮件交换记录,有优先级概念(0-99),值越小优先级越高。
          CNAME:  定义别名
          PTR:   反向记录

三、配置主DNS服务

搭建主DNS服务器,解析yanyujie.com域名

1.修改DNS主配置文件

[root@web2 ~]# vim /etc/named.conf 
##修改下面两处位置:
listen-on port 53 { any; };
allow-query     { any; };

2.定义zone配置

[root@web2 ~]# vim /etc/named.rfc1912.zones
##添加两个zone配置
zone "yanyujie.com" IN {
        type master;
        file "yanyujie.zone";
        allow-update { none; };
};

zone "10.168.192.in-addr.arpa" IN {
        type master;
        file "named.yanyujie";
        allow-update { none; };
};

3.复制、修改zone文件

[root@web2 named]# cp -p named.localhost yanyujie.zone
[root@web2 named]# cp -p named.loopback named.yanyujie 
[root@web2 named]# vim yanyujie.zone
$TTL 86400
@       IN SOA  ns1.yanyujie.com. root.yanyujie.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.yanyujie.com.
ns1     A       192.168.10.201
www     A       192.168.10.201
ftp     A       192.168.10.202
mail    A       192.168.10.203
database A      192.168.10.13
web     CNAME   www.yanyujie.com.
@       MX 10 mail.yanyujie.com.

[root@web2 named]# vim named.yanyujie 
$TTL 86400
@       IN SOA ns1.yanyujie.com. root.yanyujie.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.yanyujie.com.
ns1     A       192.168.10.201
201     PTR     www.yanyujie.com.
202     PTR     ftp.yanyujie.com.
203     PTR     mail.yanyujie.com.
13      PTR     database.yanyujie.com.
201     PTR  	web.yanyujie.com.

4.重启服务

[root@web2 named]# systemctl restart named
[root@web2 named]# netstat -tunlp|grep :53
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      941/named           
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      941/named           
tcp6       0      0 ::1:53                  :::*                    LISTEN      941/named           
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           851/avahi-daemon: r 
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1877/dnsmasq        
udp        0      0 192.168.122.1:53        0.0.0.0:*                           941/named           
udp        0      0 192.168.31.178:53       0.0.0.0:*                           941/named           
udp        0      0 192.168.10.201:53       0.0.0.0:*                           941/named           
udp        0      0 127.0.0.1:53            0.0.0.0:*                           941/named           
udp6       0      0 :::5353                 :::*                                851/avahi-daemon: r 
udp6       0      0 ::1:53                  :::*                                941/named

5.客户端测试

[root@database ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.10.201
[root@database b1 ~]# nslookup 
> www.yanyujie.com
Server:		192.168.10.201
Address:	192.168.10.201#53

Name:	www.yanyujie.com
Address: 192.168.10.201
> 192.168.10.202
202.10.168.192.in-addr.arpa	name = ftp.yanyujie.com.

四、配置备DNS服务

1.安装bind包,修改主配置文件

[root@web3 ~]# yum install -y bind
[root@web3 ~]# vim /etc/named.conf 
##修改下面两处位置:
listen-on port 53 { any; };
allow-query     { any; };

2.定义zone配置

##添加两个zone配置
[root@web3 ~]# vim /etc/named.rfc1912.zones 
zone "yanyujie.com" IN {
	type slave;
	masters { 192.168.10.201; };
	file "slaves/yanyujie.slave.zone";
};

zone "10.168.192.in-addr.arpa" IN {
	type slave;
	masters { 192.168.10.201; };
	file "slaves/name.yanyujie.slave";
};

3.重启服务,查看是否同步zone数据

[root@web3 ~]# systemctl restart named
[root@web3 ~]# ls /var/named/slaves/
name.yanyujie.slave  yanyujie.slave.zone

4.客户端测试

[root@database ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search yanyujie.com
nameserver 192.168.10.201
nameserver 192.168.10.200
[root@database ~]# nslookup 
> web.yanyujie.com
Server:		192.168.10.201   ##主DNS服务器提供服务
Address:	192.168.10.201#53

web.yanyujie.com	canonical name = www.yanyujie.com.
Name:	www.yanyujie.com
Address: 192.168.10.201
> 192.168.10.201
201.10.168.192.in-addr.arpa	name = web.yanyujie.com.
201.10.168.192.in-addr.arpa	name = www.yanyujie.com.

关闭主DNS服务

[root@web2 named]# systemctl stop named.service

再次测试,看看是否会变为备份DNS提供解析

[root@database ~]# nslookup 
> www.yanyujie.com
Server:		192.168.10.200   ##备份DNS服务器提供服务
Address:	192.168.10.200#53

Name:	www.yanyujie.com
Address: 192.168.10.201
> 192.168.10.202
202.10.168.192.in-addr.arpa	name = ftp.yanyujie.com.

五、增量备份DNS服务

在主备DNS配置的基础上修改zone文件的设置。
1.修改主DNS的正向解析zone文件

[root@web2 named]# vim yanyujie.zone 
$TTL 86400
@       IN SOA  ns1.yanyujie.com. root.yanyujie.com. (
                                        0       ; serial 
                                        60      ; refresh ##更新间隔修改为60秒
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.yanyujie.com.
ns1     A       192.168.10.201
www     A       192.168.10.201
ftp     A       192.168.10.202
mail    A       192.168.10.203
database A      192.168.10.13
web     CNAME   www.yanyujie.com.
@       MX 10 mail.yanyujie.com.

2.修改主DNS的反向解析zone文件

[root@web2 named]# vim named.yanyujie 
$TTL 86400
@       IN SOA ns1.yanyujie.com. root.yanyujie.com. (
                                        0       ; serial
                                        60      ; refresh ##更新间隔修改为60秒
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1.yanyujie.com.
ns1     A       192.168.10.201
201     PTR     www.yanyujie.com.
202     PTR     ftp.yanyujie.com.
203     PTR     mail.yanyujie.com.
13      PTR     database.yanyujie.com.
201     PTR  web.yanyujie.com.                           

3.删除备份DNS服务器的zone文件同步数据,并重启服务,查看是否重新同步zone文件数据

[root@web3 ~]# rm -f /var/named/slaves/*
[root@web3 ~]# systemctl restart named
[root@web3 ~]# ls /var/named/slaves/
name.yanyujie.slave  yanyujie.slave.zone

4.在主DNS服务器的正向和反向解析文件中添加一条记录,并修改serial序列号

[root@web2 named]# vim yanyujie.zone   ##正向解析文件
##修改serial序列号,最后面添加一条记录
1       ; serial
test    A       192.168.10.204
[root@web2 named]# vim named.yanyujie   ##反向解析文件
##修改serial序列号,最后面添加一条记录
1       ; serial
204     PTR		test.yanyujie.com.
[root@web2 named]# systemctl restart named

5.客户端测试,看备份DNS服务器是否会自动增量更新。

[root@database ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search yanyujie.com
#nameserver 192.168.10.201
nameserver 192.168.10.200
[root@database ~]# nslookup 
> test.yanyujie.com  
Server:		192.168.10.200
Address:	192.168.10.200#53

Name:	test.yanyujie.com
Address: 192.168.10.204
> 192.168.10.204
204.10.168.192.in-addr.arpa	name = test.yanyujie.com.

六、转发DNS服务

在主备DNS配置的基础上修改主配置文件/etc/named.conf,主备DNS需要能够上外网。

1.主备DNS服务器都修改

[root@web2 named]# vim /etc/named.conf
####在options全局中添加
forwarders      { 8.8.8.8; }; ##可以配置多个
forward only;  ##还可以配置为forward first;

配置转发DNS之后,本地zone文件查询不到就会转发DNS,当配置forward only;转发DNS没有该记录,则返回客户端无记录,如果配置forward first,如果转发DNS没有该记录,则从根开始一级级进行查询。

2.客户端测试

[root@database ~]# nslookup 
> www.baidu.com
Server:		192.168.10.200
Address:	192.168.10.200#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 36.152.44.132
Name:	www.a.shifen.com
Address: 36.152.44.93
Name:	www.a.shifen.com
Address: 2409:8c20:6:123c:0:ff:b0f6:b2d
Name:	www.a.shifen.com
Address: 2409:8c20:6:1794:0:ff:b080:87f0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值