安装部署DNS

DNS的全称为Domain Name System,顾名思义就是域名解析系统,详见:linux的网络服务中DNS服务部分。我们知道我们在输入网址上网时就有域名解析进行的过程,今天我们就来了解一下什么是高速缓存DNS。
实验之前,我们先选定一台主机作为服务机,即用来缓存DNS解析的内容,这台主机需要连接网络以及配置好yum源。详见linux的网络服务和linux软件包的安装配置网络和yum源。

yum install bind -y			##下载服务
systemctl start named		##开启服务
systemctl stop firewall		##关闭火墙

这些都是准备工作。

高速缓存DNS

#主配置文件:/etc/named.conf
#子配置文件:/etc/name.rfc1912.zones
#数据目录:  /var/named
vim /etc/named.conf

centos linux dns 缓存 linux dns缓存文件_vim


修改11,17,18,32行的内容,其中 listen-on port 53 { any; };表示对任何ip都开启53接口; allow-query { any; };表示允许所有人访问,使用本机进行DNS解析;forwarders { 114.114.114.114; };表示解析地址,即在本机不能解析时,访问这个地址进行解析;dnssec-validation no表示设置网警不检查。

dig www.hao123.com

centos linux dns 缓存 linux dns缓存文件_DNS_02


解析时间为449毫秒。

centos linux dns 缓存 linux dns缓存文件_vim_03


第二次解析时间为0秒,所以我们知道使用高速缓存DNS可以大大提高解析速率。

此时这台主机可以作为服务机去为其他主机解析域名,并且已经解析过的域名速度极快。

vim /etc/resolv.conf

centos linux dns 缓存 linux dns缓存文件_centos linux dns 缓存_04


在另一台主机上设置DNS解析地址为服务机IP,使用服务机进行域名解析。

centos linux dns 缓存 linux dns缓存文件_vim_05

可以看到另一台主机也很快完成了解析。
由此我们可以知道DNS 服务器可以高速缓存从其他 DNS 服务器收到的 DNS 记录。 也可以在 DNS 客户服务中使用高速缓存,将其作为 DNS 客户端保存在最近的查询过程中得到的信息高速缓存的方法。 总的来说就是可以提高解析速度。

权威DNS的正向解析

DNS的正向解析,简单来说就是由域名得到ip。

vim /etc/named.rfc1912.zones

centos linux dns 缓存 linux dns缓存文件_高速缓存_06


在配置文件中写入需要解析的域名

cd /var/name
cp -p named.localhost westos.com.zone

复制模板

vim westos.com.zone

centos linux dns 缓存 linux dns缓存文件_高速缓存_07


编写域名和ip的对应信息,其中信息表示如下:

$TTL 1D				##客户可以将信息在主机中保存一天
 1D      ; refresh		##数据刷新时间为1天
 1H      ; retry		##重新查询是时间为1小时
 1W      ; expire		##客户可以查询的最长期限为10000天
 3H )    ; minimum		##最小缓存时间为3小时
systemctl restart named		##重启服务

这样,一个正向的域名解析就完成了。
之后在测试的主机上测试:

dig www.westos.com

centos linux dns 缓存 linux dns缓存文件_centos linux dns 缓存_08


解析成功!

权威DNS的反向解析

正向解析是由域名得到ip,而反向解析正好相反,是由ip得到域名。

vim /etc/named.rfc1912.zones

centos linux dns 缓存 linux dns缓存文件_centos linux dns 缓存_09


填写所要解析的网段。

cd /var/named
cp -p named.loopback 172.25.254.ptr

复制模板。

vim 172.25.254.ptr

centos linux dns 缓存 linux dns缓存文件_DNS_10


编辑ip和域名的对应关系。

systemctl restart named					##重启服务

这样一个反向解析的库就做好了。

dig -x 172.25.62.12

在测试主机查看是否能解析成功。

centos linux dns 缓存 linux dns缓存文件_centos linux dns 缓存_11


反向解析成功!

权威DNS的双向解析

DNS的双向解析能实现内网主机和外网主机访问同一个域名时,定义到不同的服务器。

cd /var/named/
cp -p westos.com.zone westos.com.inter

因为针对不同主机的解析出来的服务器是在不同网段的,所以要新生成一个文件来设置这个网段ip和域名的对应关系。

vim westos.com.inter

centos linux dns 缓存 linux dns缓存文件_vim_12


将172.25.62替换为192.168.0。

cd /etc/           
cp -p named.rfc1912.zones named.rfc1912.inter
vim named.rfc1912.inter

centos linux dns 缓存 linux dns缓存文件_centos linux dns 缓存_13


指向文件westos.com.inter。

vim named.conf

编辑这个文件时要把下面这部分用/*屏蔽掉或者删除。

50 /*
 51 zone "." IN {
 52         type hint;
 53         file "named.ca";
 54 };
 55 */

centos linux dns 缓存 linux dns缓存文件_高速缓存_14


设置如果是本机访问则读取/etc/named.rfc1912.zones文件,如果是其他主机访问则读取/etc/named.rfc1912.inter文件。这样在访问同一个域名时系统会根据对象的不同给出不同的答案。

systemctl restart named				##重启服务

测试:
在本机

dig www.westos.com

centos linux dns 缓存 linux dns缓存文件_DNS_15


在测试主机

dig www.westos.com

centos linux dns 缓存 linux dns缓存文件_vim_16


可以看到,对不同的主机访问同一个域名,系统给出了不同的ip,这样就完成了双向解析,当然,多向解析也是一样的。

辅助dns

辅助dns服务器可以缓解主dns服务器的压力,这里我们用另一台主机作为辅助dns服务器。

centos linux dns 缓存 linux dns缓存文件_vim_17


同样,在这台主机上要先配置好yum源,下载bind。

hostnamectl set-hostname  slave

centos linux dns 缓存 linux dns缓存文件_vim_18


更改一下主机名来加以区分。

systemctl stop firewalld.service 	##关闭火墙
vim /etc/named.conf
10 options {
 11         listen-on port 53 { any; };  ##第一处更改
 12         listen-on-v6 port 53 { ::1; };
 13         directory       "/var/named";
 14         dump-file       "/var/named/data/cache_dump.db";
 15         statistics-file "/var/named/data/named_stats.txt";
 16         memstatistics-file "/var/named/data/named_mem_stats.txt";
 17         allow-query     { any; }; 	##第二处更改

 32         dnssec-validation no;		##第三处更改

更改配置文件内容,这三处分别代表什么上文已经提过,这里不再重复。

vim /etc/named.rfc1912.zones

centos linux dns 缓存 linux dns缓存文件_高速缓存_19


在文件中添加内容,注意type为slave表示辅助,下面加上masters { 172.25.62.252; };,其中的ip地址即为要辅助的服务器。

vim /etc/resolv.conf

屏蔽这个文件中原本的dns解析服务器,就可以进行测试了。

dig www.westos.com

centos linux dns 缓存 linux dns缓存文件_centos linux dns 缓存_20


在本机测试成功,在用另一台主机测试一下这台主机是否辅助了原主机的工作。

vim /etc/resolv.conf

centos linux dns 缓存 linux dns缓存文件_vim_21


用测试主机设置dns地址为辅助主机。

dig www.westos.com

centos linux dns 缓存 linux dns缓存文件_DNS_22


测试结果表明,辅助主机确实完成了辅助工作。

但要注意的是,辅助主机只会同步一次服务主机的dns信息,也就是说,服务主机的信息改变之后,辅助主机的dns信息不会改变,所以这里还要做一下信息同步,做信息同步时要把前面做的双向解析部分还原。

vim /etc/named.rfc1912.zones

centos linux dns 缓存 linux dns缓存文件_centos linux dns 缓存_23


在更新信息时通知辅助机。

vim /var/named/westos.com.zone

centos linux dns 缓存 linux dns缓存文件_高速缓存_24


更新信息,每次更改信息时要更改serial的值,否则辅助机上的记录不会被同步这个值最大10位,可以使用日期方便查看。

在辅助机上查看是否更新:

dig www.westos.com

centos linux dns 缓存 linux dns缓存文件_DNS_25


信息更新成功。

DNS的远程更新

远程更新时如果两台主机的时间不一样要先做时间同步。
基于ip的远程更新
在服务主机上修改文件

vim /etc/named.rfc1912.zones

centos linux dns 缓存 linux dns缓存文件_DNS_26


设置允许更新的ip

chmod 770 /var/named/
getsebool -a | grep named
setsebool -P named_write_master_zones on	执行这两步排除selinux的影响。

这样就完成了。接下来就可以用目标主机更新了。
在目标主机:

nsupdate

centos linux dns 缓存 linux dns缓存文件_vim_27


没有报错,说明更新成功了。

dig kyou.westos.com

centos linux dns 缓存 linux dns缓存文件_高速缓存_28


添加成功!

要远程删除也很简单

nsupdate
> update delete kyou.westos.com				##删除		
> send
> quit

这样就完成了远程删除了。
基于key的远程更新

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos		##生成密钥
vim /etc/named.conf

centos linux dns 缓存 linux dns缓存文件_vim_29


修改配置文件,指定dns服务读取的key文件

cp -p /etc/rndc.key  /etc/westos.key

复制模板

vim /etc/westos.key

centos linux dns 缓存 linux dns缓存文件_vim_30


修改这个文件,生成DNS加密文件

vim /etc/named.rfc1912.zones
43 zone "westos.com" IN {
 44         type master;
 45         file "westos.com.zone";
 46         allow-update { key westos; };	##指定westos域可以被westoskey更新
 47         also-notify { 172.25.62.1; };
systemctl restart named

重启服务
在测试主机上测试:

scp root@172.25.62.252:/var/named/Kwestos.+157+63097.*  /mnt

用scp复制密钥

nsupdate -k Kwestos.+157+63097.key
> server 172.25.62.252
> update add yangmi.westos.com 86400 A 192.1.1.16
> send
> quit

更新dns信息。

dig yangmi.westos.com

centos linux dns 缓存 linux dns缓存文件_DNS_31


远程更新成功。

动态域名解析(dhcpd配置)
首先,做这个实验要有dhcp服务,所以要先搭建dhcp服务。详情请看dhcp服务的搭建

vim /etc/dhcp/dhcpd.conf
7 option domain-name "westos.com";
  8 option domain-name-servers 172.25.62.252;
14 ddns-update-style interim;
35 key westos {
 36         algorithm hmac-md5;
 37         secret ytVljUpc7Jfu2W/HLjP/uw==;
 38 }
 39 
 40 zone westos.com. {
 41         primary 127.0.0.1;
 42         key westos;
 43 }

修改dhcp的配置文件
之后把测试主机的网络工作方式改为dhcp,并且设置这台主机的主机名为####.westos.com,只要在westos.com域内的主机都可以解析。