Linux系统中的缓存DNS服务器

缓存DNS服务器

BIND 是最广泛使用的开源DNS服务器
该服务通过服务端的53端口提供
主配置文件是 /etc/named.conf
/var/named 目录包含名称服务器所使用的其他数据文件

搭建DNS服务器:

1.下载bind软件:

yum -y install bind

2.修改主配置文件:

vim /etc/named.conf

3.启动服务:

systemctl start named

4.设置防火墙,允许客户端访问DNS服务:

firewall-cmd  --permanent  --add-service=dns
firewall-cmd  --reload
firewall-cmd  --list-all

下图为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

正向解析

正向解析:通过域名查找对应的ip地址

$TTL 1D 这个A记录最多保存1天(A记录,ipv4地址,AAAA记录,ipv6地址)
@=域名(即@表示这个域名)  SOA  dns.wstos.com.        root.westos.com.
                                                    (授权起始)
NS nameserver  dns.westos.com.
dns  A  172.25.254.100
下面还可以存放已知的其他的域名-ip对应关系

配置正向解析:

1.设置服务器的域名解析服务器ip为本机

vim  /etc/resolv.conf

2.修改保存指向域名—ip地址对应关系的数据文件的配置文件,增添要维护的域名

vim  /etc/named.rfc1912.zones

3.修改指向域名—ip地址对应关系的数据文件

cd   /var/named
cp -p named.localhost  hello.com.zone 必须加上-p参数,将文件权限也复制

下图为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
客户端设置了DNS域名解析服务器为我所配置DNS服务器的虚拟机ip地址,访问服务端结果如下:
在这里插入图片描述

反向解析

反向解析:通过ip地址查找对应的域名
PTR 反向解析
反向解析记录,名字也要反着写,在解析记录文件中会对不加点的自动在前面补全172.25.254
就像前面的正向解析在后面补全名字中的 .westos.com

1.修改保存指向ip地址—域名对应关系的数据文件的配置文件,增添要维护的域名的反向解析记录文件信息

vim  /etc/named.rfc1912.zones

2.修改指向ip地址—域名对应关系的数据文件(保存反向解析记录文件)

cd   /var/named
cp -p named.localhost  hello.com.ptr 必须加上-p参数,将文件权限也复制

下图为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
客户端测试:
在这里插入图片描述

双向解析

双向解析:外网用户查询到的是外网地址,内网用户查询到的是内网地址

1.在/var/named目录下,复制一份dns解析记录文件,用于保存内网查询的dns解析数据

cd /var/named
cp -p hello.com.zone hello.com.localnet
vim hello.com.localnet

2.在/var/目录下,复制一份指向本地内网dns解析记录文件的配置文件

cp -p /etc/named.rfc1912.zones  /etc/named.rfc1912.local 
vim  /etc/named.rfc1912.local 

3.编辑更改主配置文件/etc/named.conf使DNS服务器对于不同的ip地址访问,给出不同的(相应的)dns解析结果

vim  /etc/named.conf 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

辅助dns

为了分担主DNS服务器的访问压力,我们可以使用辅助DNS服务器的方式

主DNS配置:
就以上面的DNS服务器作为主DNS,将其主配置文件中的双向解析部分注释,恢复原配置。

辅助DNS配置:
下载bind,并配置参数

yum install -y bind
vim /etc/named.conf

listen-on port 53 { any; };
allow-query	{ any; };

编辑子配置文件/etc/named.rfc1912.zones

vim /etc/named.rfc1912.zones

zone "hello.com" IN {   
#设置其与主DNS共同维护的域的参数,以与主DNS同步
	type slave;
	masters { 172.25.254.160; };
	file "slaves/hello.com.zone";  #该文件为同步主DNS中数据得到,但不是文本文件,是数据文件。
	allow-update { none; };
}

systemctl restart named  #与主DNS服务器数据通步

在防火墙中允许dns服务

firewall-cmd --permanent --add-service=dns
firewall-cmd --reload 

数据的更新:
辅助DNS将原数据文件删除,再次重启服务,与主DNS同步
(此时还无法令辅助DNS自动地去同步更新后的主DNS,下面将讲的是令其自动地随着主DNS的更新而去更新本机的DNS数据记录)

下图为例:
主DNS配置及测试结果:
在这里插入图片描述
在这里插入图片描述
辅助DNS配置及测试结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
辅助DNS自动同步主DNS:

更改主DNS的子配置文件/etc/named.rfc1912.zones

vim /etc/named.rfc1912.zones

 zone "hello.com" IN {
         type master;
         file "hello.com.zone";
         allow-update { none; };
         also-notify { 172.25.254.200; };  #在原配置上添加该参数:其中的ip地址为辅助DNS服务器的
};		#该参数会在主DNS中的hello.com的dns记录文件更新时,通知辅助DNS来更新

systemctl restart named 

主DNS增加参数: also-notify
注意:
每次跟改DNS解析记录文件后必须更改serial的数值,才能让辅助DNS服务器自动更新(否则,虽然辅助服务器被通知更新了,但是由于serial值不变,不会自动更新)
这个数值最大10位,一般会让这个数有代表意义;
如:2019080401,代表当前文件为2019年08月04日第一次更新

下图为例:
更改主DNS配置后,为了测试,更改其DNS解析数据记录文件hello.com.zone,测试辅助DNS是否自动同步更新了。
原hello.com.zone文件中的www.hello.com的ip地址由172.25.254.160更改为1.1.1.1;serial参数由0更改为1
(不过该参数似乎只能由小往大改变才生效,且似乎必须大于该值的曾经修改过的最大值)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DNS数据的远程更新

在上面的主DNS的配置文件基础上进行配置

vim /etc/named.rfc1912.zones

 zone "hello.com" IN {
         type master;
         file "hello.com.zone";
         allow-update { 172.25.254.161; };    #允许谁来更新本机的DNS数据记录
         #将原配置中该参数的none更改为允许远程为主DNS更新数据的主机的IP地址
         also-notify { 172.25.254.200; };  
};		

chmod 770 /var/named   使得named服务进程可以有权限在该目录下写入文件
systemctl restart named 

更新后,可以查到所更新的DNS记录。但是配置文件不会改变;再次重启服务,才会改变配置文件,将其更新;因此,要提前做好备份。

#客户端远程更新操作

添加DNS解析记录
[root@localhost slaves]# nsupdate
> server 172.25.254.160				#要更新的DNS服务器ip地址
> update add www.hello.com 86400 A 2.2.2.2		#添加的DNS解析记录
> send												#更新动作
> quit

删除DNS解析记录
[root@localhost slaves]# nsupdate
> server 172.25.254.160
> update delete www.hello.com         
> send
> quit

下图为例:
图一,二为主DNS的配置设置
图三为,主DNS与辅助DNS共同维护的域hello.com的DNS解析记录数据文件的备份。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DNS数据的远程更新——key验证

由于单纯地使用ip地址的方式指定由谁(哪一台主机)来远程更新DNS服务器的方式还是不太安全。因此,我们可以使用下面的这种方式来进行远程更新的主机的指定与验证。

通过使用KEY密钥的方式对DNS服务器进行加密,从而指定了:
谁能远程更新DNS服务器数据: 持有相应的密钥的主机
验证远程更新DNS服务器权限的方式: 密钥

具体操作:

1.生成密钥

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST hello
                加密方式    加密位数        密钥名
(应该不是必须和dns数据记录文件在同一个目录下才行)

2.在服务端生成自己的加密密钥(锁头)

cp -p /etc/rndc.key /etc/hello.key
vim /etc/hello.key
vim /etc/named.conf(编辑配置文件,使得服务能读取我们生成的key:/etc/westos.key)

3.更改远程更新DNS的认证方式,由ip—>Key密钥

vim /etc/named.rfc1912.zones

4.重启服务named

systemctl restart named

5.将之前生成的两个密钥都发送给待更新的客户端(要更新DNS的主机)

scp Khello.* root@172.25.254.161:/mnt

下图为例:
最后一图中可见,必须使用密钥才能更新,且必须写对路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

动态域名解析ddns

由于在企业内部的主机一般都是动态地从DHCP服务器上获取ip地址的,但是主机的域名却不会改变。因此就造成了,会存在着相同域名的主机,ip却是变化的这种现象。

而我们访问域名,当然是想访问提供该服务的主机,而不是想访问dns解析记录中的固定的ip地址。所以说,我们将使用下面的方式,使得DNS服务器的域名解析记录,随着相应的主机的ip地址的改变而改变。

1.先在主dns服务器上搭建dhcp服务器
(1)搭建dhcp服务器:

yum -y install dhcp
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf	设定dhcp服务参数
		编辑配置文件内容
systemctl restart dhcpd

firewall-cmd --list-all
firewall-cmd --permanent --add-service=dhcp
firewall-cmd --reload

(2)在原dhcp配置的基础之上,添加参数:ddns-update-style interim;添加拥有相应的更新dns服务的权限的key:

key DHCP_UPDATER {	
并指定分配ip后去更新的dns服务器的ip地址:
			
firewall-cmd --permanent --add-service=dhcp	永久添加防火墙的服务端口dhcp
firewall-cmd --reload

2.给dhcp的配置文件加上密钥,使得服务端的dhcp服务每分配出去ip,可以有权限自动更改dns服务的数据
这一实验,在上面的给dns加密的基础之上进行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值