基本实验环境


(1)配置好两台主机的网络,保证网络畅通,设置好IP


(2)配置好两台主机的软件仓库





dns服务器部署 
1.关于dns的名词解释 
dns:  domain name service(域名解析服务)

2.客户端,主机端设置
关于客户端:
/etc/resolv.conf            ##dns指向文件
nameserver 192.168.2.100

测试:
host www.baidu.com          ##地址解析命令
dig www.baidu.com           ##地址详细解析信息命令
A记录                       ##ip地址叫做域名的Address 记录
SOA                         ##授权起始主机
dns顶级
. 13
次级
.com .net .edu .org ....

关于服务端
dns服务的安装与启用 
#安装#
dnf install bind.x86_64 -y
#启用#
systemctl enable --now named

bind                        ##安装包
named                       ##服务名称
/etc/named.conf             ##主配置文件
/var/named                  ##数据目录
端口                        ##53


客户端:




DNF服务端 怎么制作成docker_服务器


 服务端:

DNF服务端 怎么制作成docker_运维_02

DNF服务端 怎么制作成docker_服务器_03


3. 关于报错信息:
1.no servers could be reached      ##服务无法访问(服务开启?火墙?网络?端口?)
2.服务启动失败                      ##配置文件写错 journalctl -xe查询错误
3.dig 查询状态
NOERROR                            ##表示查询成功
REFUSED                            ##服务拒绝访问
SERVFAIL                           ##查询记录失败,(dns服务器无法到达上级,拒绝缓存)
NXDOMAIN                           ##此域名A记录在dns中不存在


no servers could be reached



DNF服务端 怎么制作成docker_服务器_04



解决方法:

第一步,在服务端设置火墙 

DNF服务端 怎么制作成docker_vim_05

 第二步,因为dns端口只在回环接口上打开,只设置了火墙不设置不端口还是使用不了的,所以我们要更改配置文件使它在主机开放的端口上打开

DNF服务端 怎么制作成docker_运维_06

DNF服务端 怎么制作成docker_vim_07

(2)解决 dig 查询状态时的报错   REFUSED(服务拒绝访问)

DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_08

 解决方法:修改配置及文件第19行,将  localhost本机改为any所以人,修改完后重启

DNF服务端 怎么制作成docker_服务器_09

 然后测试,查询成功

DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_10


4.高速缓存dns 
vim /etc/named.conf                
34 dnssec-validation no;                           ##禁用dns检测,使dns能够缓存外部信息到本地
20          forwarders { 114.114.114.114; };       ##从国外转到国内查询


我们可以做一个正常缓存和高速缓存的比较


正常缓存



DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_11



修改配置文件     vim /etc/named.conf     修改文件后一定要重启

DNF服务端 怎么制作成docker_运维_12


高速缓存



DNF服务端 怎么制作成docker_linux_13



5. dns 的正向解析


正向解析前注释掉我们刚才更改的配置文件中的114.114.114.114解析,我们自己来做解析



DNF服务端 怎么制作成docker_linux_14


编辑子配置文件
vim /etc/named.rfc1912.zones
zone "westos.org" IN {                       ##维护的域名
               type master;                  ##当前服务器位主dns
               file "westos.org.zone";       ##域名A记录文件
               allow-update { none; };       ##允许更新主机列表
};


DNF服务端 怎么制作成docker_运维_15

cd /var/named/
cp -p named.localhost westos.org.zone                #生成A记录文件
vim westos.org.zone
$TTL 1D                                                #TIME-TO-LIVE(dns地址保存时间长度)
@     IN      SOA dns.westos.com. root.westos.org. (   #SOA授权起始(Start of Authority)
                                        0        ;serial         #域名版本序列号
                                        1D       ;refresh        #刷新时间(辅助dns)
                                        1H       ;retry          #重试时间(辅助dns)
                                        1W       ;expire         #过期时间(辅助dns,查询失败                                                                    过期停止对辅助域名的应答)
                                        3H )     ;minimum        #A记录最短有效期
               NS             dns.westos.org.
dns            A              192.168.2.100
www            A              192.168.2.110                      ##规范域名



DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_16



编辑完成后   dig www.westos.org   查询正向解析

DNF服务端 怎么制作成docker_linux_17

dns的正向解析中常用的数据类型

vim westos.org.zone 

$TTL 1D
@	IN SOA	dns.westos.org. root.westos.org. (
				   	0	     ; serial
					1D	     ; refresh
					1H	     ; retry
					1W       ; expire
					3H )	 ; minimum
		        NS	    dns.westos.org.
dns	           	A	    192.168.2.100
www		        CNAME	www.a.westos.org.
www.a       	A       192.168.2.111         ##内部解析
www.a   	    A       192.168.2.222         ##内部解析
westos.org.    	MX 1    192.168.2.100.        ##邮件解析

systemctl restart named



DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_18



(1)   dig www.westos.org       ## 查询正向解析



DNF服务端 怎么制作成docker_vim_19



(2)  dig -t mx westos.org      ##邮件解析记录查询

DNF服务端 怎么制作成docker_运维_20


5.dns的反向解析
vim /etc/named.rfc1912.zones

zone "0.168.192.in-addr.arpa" IN {
              type master;
              file "192.168.0.ptr";
              allow-update { none; };
};



DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_21


vim /etc/named.rfc1912.zones 
cp -p named.loopback 192.168.2.ptr
vim 192.168.2.ptr
$TTL 1D
@	IN SOA	dns.westos.org. root.westos.org. (
					    0	    ; serial
					    1D    	; refresh
				    	1H	    ; retry
				    	1W	    ; expire
				    	3H )	; minimum
	    NS	    dns.westos.org.
dns	    A	    192.168.2.100
111    	PTR     mail.westos.org.
systemctl restart named

DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_22


dig - x 192.168.2.111      ##反向解析查询



DNF服务端 怎么制作成docker_服务器_23



6.dns的双向解析 
实验环境:
主机1中1.1.1.200网段
1.1.1.200网段              ##ifconfig ens160 1.1.1.200 netmask 24
 
vim /etc/resolv.conf 
# Generated by NetworkManager
nameserver 1.1.1.100



DNF服务端 怎么制作成docker_运维_24


 

DNF服务端 怎么制作成docker_linux_25


服务端1台2个网段的ip
192.168.2.100
1.1.1.100                    ##ifconfig ens160 1.1.1.100 netmask 24

vim /etc/resolv.conf 
# Generated by NetworkManager
nameserver 1.1.1.100



DNF服务端 怎么制作成docker_服务器_26


 

DNF服务端 怎么制作成docker_vim_27


双网卡主机中配置方式:
cd /var/named/
cp -p westos.com.zone westos.com.inter
vim westos.com.inter
$TTL 1D
@	IN SOA	dns.westos.org. root.westos.org. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
		NS	dns.westos.org.
dns		A	1.1.1.100
www		CNAME	www.a.westos.org.
www.a   	A       1.1.1.111
www.a   	A       1.1.1.222 
westos.org.	MX 1    1.1.1.100.

DNF服务端 怎么制作成docker_linux_28

cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter
vim /etc/named.rfc1912.inter
 29 zone "westos.org" IN {
 30         type master;
 31         file "westos.org.inter";
 32         allow-update { none; };
 33 };

DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_29

DNF服务端 怎么制作成docker_linux_30


vim /etc/named.conf
 51 /*
 52 zone "." IN {
 53         type hint;
 54         file "named.ca";
 55 };
 56 
 57 include "/etc/named.rfc1912.zones";
 58 */
 59 
 60 view localnet {
 61         match-clients { 192.168.2.0/24; };      ##192网段指向/etc/named.rfc1912.zones 
                                                      这个文件解析
 62         zone "." IN {
 63                 type hint;
 64                 file "named.ca";
 65         };
 66         include "/etc/named.rfc1912.zones";
 67 };       
 68   
 69 view all {
 70         match-clients { any; };                 ##其他网段指向/etc/named.rfc1912.inter 
                                                      这个文件解析
 71         zone "." IN {
 72                 type hint;
 73                 file "named.ca";
 74         };
 75         include "/etc/named.rfc1912.inter";
 76 };
 77 
 78 include "/etc/named.root.key";
 79 

systemctl restart named



DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_31



测试 :


分别在 2 个网段的主机中作同样域名的地址解析


得到的 A 记录不同


其他网段1.1.1.200



DNF服务端 怎么制作成docker_运维_32



DNF服务端 怎么制作成docker_linux_33


192网段  

DNF服务端 怎么制作成docker_运维_34



7. dns 集群


因为是做实验,所以我们先把做双向解析实验对配置文件做的更改还原



DNF服务端 怎么制作成docker_vim_35



辅助nds主机slave dns:
dnf install bind -y
firewall-cmd --add-service=dns



DNF服务端 怎么制作成docker_vim_36



vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
dnssec-validation no;


DNF服务端 怎么制作成docker_运维_37


vim /etc/named.rfc1912.zones 
 29 zone "westos.org" IN {
 30         type slave;                        ##dns状态位辅助dns
 31         masters { 192.168.2.100; };        ##主dns
 32         file "slaves/westos.org.zone";     ##同步数据文件
 33 };
 34 

 systemctl restart named

DNF服务端 怎么制作成docker_linux_38

DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_39

 辅助dns主机中测试

DNF服务端 怎么制作成docker_服务器_40

DNF服务端 怎么制作成docker_服务器_41

 dns主机中

对主dns做出更改

DNF服务端 怎么制作成docker_linux_42

DNF服务端 怎么制作成docker_运维_43

 辅助dns数据没有更新

DNF服务端 怎么制作成docker_服务器_44

 编辑主机中的dns,使辅助dns与主机中的数据同步更新


vim /etc/named.rfc1912.zones
 29 zone "westos.org" IN {
 30         type master;
 31         file "westos.org.zone";
 32         allow-update { none; };
 33         also-notify { 192.168.2.150; };
 34 };

vim /var/named/westos.org.zone
$TTL 1D
@	IN SOA	dns.westos.org. root.westos.org. (
			  202205311; serial              ##这个数字的更改,辅助dns才会收到信号,同步主机dns
                                              的数据,一般会设置成时间,方便查看比如202205311
                                              2022年5月31日第一次更改
				  1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
		NS	dns.westos.org.
dns		A	192.168.2.100
www		CNAME	www.a.westos.org.
www.a   	A       192.168.2.11
www.a   	A       192.168.2.22 
westos.org.	MX 1    192.168.2.100. 

systemctl restart named

dns辅助主机测试看数据是否同步:
dig www.westos.org



DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_45




DNF服务端 怎么制作成docker_vim_46


dns辅助主机测试数据已经同步

DNF服务端 怎么制作成docker_vim_47


8.dns的更新
dns基于ip地址的更新:
在主dns中设定:

vim /etc/named.rfc1912.zones
 29 zone "westos.org" IN {
 30         type master;
 31         file "westos.org.zone";
 32         allow-update { 192.168.2.150; };    ##允许指定客户端更新westos域
 33         also-notify { 192.168.2.150; };
 34 
 35 };

systemctl restart named



DNF服务端 怎么制作成docker_服务器_48



辅助dns主机192.168.2.150测试:
nsupdate
> server 192.168.2.100
> update add westos.westos.org 86400 A 192.168.2.111    ##新增A记录       
> send
> update delete hello.westos.com                        ##删除A记录
> send

dns主机查看
dig westos.westos.org


新增A记录



DNF服务端 怎么制作成docker_运维_49


dns主机查看

DNF服务端 怎么制作成docker_linux_50

 删除A记录

DNF服务端 怎么制作成docker_DNF服务端 怎么制作成docker_51

 dns主机查看

DNF服务端 怎么制作成docker_vim_52


dns基于key更新的方式:
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST westos    ##生成密钥
cp -p /etc/rndc.key /etc/westos.key

ls
Kwestos.+163+34595.key  Kwestos.+163+34595.private

cat Kwestos.+163+34595.private
Private-key-format: v1.3
Algorithm: 163 (HMAC_SHA256)
Key: p7ki1YtawQYYgP94CGpKLQ==
Bits: AAA=
Created: 20220530183239
Publish: 20220530183239
Activate: 20220530183239

vim /etc/westos.key
key "westos-key" {
        algorithm hmac-sha256;
         secret "p7ki1YtawQYYgP94CGpKLQ==";
};



DNF服务端 怎么制作成docker_服务器_53


 

DNF服务端 怎么制作成docker_服务器_54

vim /etc/named.conf
44 include "/etc/westos.key";

DNF服务端 怎么制作成docker_服务器_55

vim /etc/named.rfc1912.zones
 zone "westos.org" IN {
 30         type master;
 31         file "westos.org.zone";
 32         allow-update { key westos; };
 33         also-notify { 192.168.2.150; };
 34 
 35 };


systemctl restart named



DNF服务端 怎么制作成docker_linux_56



主dns将密钥发送给辅助dns
scp * root@192.168.2.150:/mnt

辅助dns查看新建
ls /mnt/
Kwestos.+163+34595.key  Kwestos.+163+34595.private

nsupdate -k /mnt/Kwestos.+163+34595.key

测试
辅助dns中新增A记录
nsupdate -k /mnt/Kwestos.+163+34595.key
> server 192.168.2.100
> update add westos.westos.org 86400 A 192.168.2.111
> send

主dns中查看
dig westos.westos.org


主dns将密钥发送给辅助dns



DNF服务端 怎么制作成docker_服务器_57



辅助dns中新增A记录


DNF服务端 怎么制作成docker_运维_58

主dns中查看

DNF服务端 怎么制作成docker_linux_59