一:DNS的分类与查询方式
<1>DNS的分类:
权威域名服务器:
主DNS服务器(Master):管理和维护所负责解析的域内解析库的服务器
从DNS服务器(Slave):主服务器或从服务器“复制”(区域传输)解析库副本
非权威域名服务器:
缓存DNS服务器(我们前面已经搭建过,这里就不再多做介绍)
转发域名服务器:在接收查询请求时,不向根发起请求,而是转发到指定的上级DNS服务器,而且不进行任何缓存,仅转发。
<2>DNS的查询方式:
递归查询:用户向第一个DNS服务发请求,DNS收到后,如果它这有直接的结果就直接给你,如果没有就会向根DNS服务询问,层层询问直到问道结果返回给你,负责到底
迭代查询:查询过程中去问根,根给你推荐别人,你去问它,这就是迭代查询,不会负责到底
二:DNS集群的搭建
基本概念:DNS服务器一般在使用时,为了缓解服务器的压力,多使用一个主DNS服务器,多个副DNS服务器,这些DNS服务器就组成了一个DNS集群。
搭建DNS之前我们需要将之前在DNS的主配置文件步里做的DNS双向解析的代码删掉
(为了实验效果,保持实验环境纯净)
将之前注释掉的恢复
实验如下:
<1>主DNS的搭建
因为我们前面的实验,主DNS服务器已经搭建的差不多,只需要在区域文件里面写入
重启服务:
<2>从服务器的搭建
前提:
为了方便区分,我们将这台server虚拟机的名字改为slave.westos.com
搭建yum源
配置网络服务并重启
关闭防火墙
开始搭建
首先安装DNS服务所需的软件包(这几步在前面博客搭建高速缓存服务器的时候做过,就不细讲了)
安装完成
开启服务
编辑主配置文件
编辑区域文件(重点)
重启服务
修改DNS的本地解析nameserver=172.25.254.215
测试:
在主服务器里先dig bbs.meng.com显示是来自172.25.254.115
在从服务器dig bbs.meng.com
从服务器dig的结果与主服务器相同,但是我们并未编辑从服务器的数据文件,这说明了从服务器“复制“了主服务器域名的信息。
三:DNS的更新
在日常时候,我们需要时不时的更新(管理)域里面的信息,这个时候就出现一个问题,我们怎么做到从服务器可以跟主服务器同步更新???我们可以在更新主服务器之后,在从服务器里删除/var/named/slaves/*,然后再在从服务器里面dig,这个时候slaves里面同步过来的数据文件就是更新过的,或者也可以采用下面这种方式:
在主服务器里面的数据文件里修改参数
原本的样子
将其改为1
此时重启服务,再去测试
主服务端:更新成功
从服务端更新成功
我们还可以在更新一次
重启服务,再去测试
主服务端:
从服务端:
但是这种方法在大型域里面显得极不方便,若是再添加的时候一不小心手残,或者要进行删除操作,面对长长的内容,往往会让人手足无措,为了解决这个问题,我们采用命令可以进行远程更新和加密更新。
三:DNS的更新
<1>远程更新
做这个实验之前,我们需要在主服务器进行复制操作,因为我们后面进行的加密更新与远程更新是由冲突的,所以我们为了实验的准确性,复制一份数据文件到opt下
注意:要使用cp -p将权限也复制过去,否则后面恢复过来的文件会导致服务起不来。
如图所示:
查看selinux的状态,如果是disabled可以直接做,如果是enforcing,需要更改setbool
,如图所示:
修改setbool
实验开始:
编辑区域文件,让主服务器可以更新
在里面修改为如图所示
重启服务:
修改文件权限,使named这个组对文件有写的权力
测试:
在主服务器里:
nsupdate命令:是一个动态DNS更新工具,可以向DNS服务器提交更新记录的请求,它可以添加或者删除资源记录,而不需要手动进行编辑文件。
命令格式:
server servername[port] 发送请求更新的服务器ip
zone zonename 指定需要更新的区名
send 将要求信息和更新信息发送到DNS服务器,等同于输入一个空行
quit 退出
(感兴趣的可以自己去搜索这个命令的用法)
主服务端可以dig显示出来
客户机也可以dig出来,说明远程更新成功
图没截上,后面补上+ -+
我们也可以用这个命令进行删除操作,如图所示:
在去查看,发现在主服务器和从服务器里都dig不到
我们查看数据目录,发现生成了一个jnl文件,并且是一个data数据文件,这个文件是在从服务器更新之后生成的
上面这种更新方式虽然方便,但是也存在着极大的隐患,因为别的主机也可以对这个域的主服务器进行远程更新,为了解决这个问题,我们需要进行下来的步骤。
<2>加密更新
做这个实验前,我们需要恢复实验环境,因为上面的远程更新与加密更新是冲突的。
恢复主服务器的实验环境:
实验开始:
(主服务器:)
在/mnt下生成一个DNS锁跟密钥,锁跟密钥里面的加密字符是一样的
复制一个key模板到自己的文件并编辑(注意复制权限)
编辑自己的加密文件
在里面修改为如图所示
编辑区域文件:
修改更新方式为加密更新,名字叫mengkey
编辑主配置文件
让系统去读取这个加密文件
重启服务:
测试:
在主服务器:
发现用远程更新的方式被拒绝
用加密更新可以成功更新
可以dig出来:
在从服务器:
在从服务器需要将/slaves/下远程更新的文件删除掉才可以更新出来,因为两者是冲突的
未删除前:
删除后,重启服务,可以dig出来,说明两者冲突
扩展:
若是想要从服务器有加密更新的权力,只需要将我们的密钥发送给他,这样它就可以更新了
如图所示:
用密钥更新,更新成功。