DNS正向解析,反向解析,双向解析,集群,远程更新,DDNS

dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常。
以下实验需要做到selinux关闭,以及火墙关闭的情况下完成。

1,安装部署DNS

[[email protected] ~]# yum install -y bind
主配置文件: /etc/named.conf
子配置文件: /etc/named.rfc1912.zones
数据目录: /var/named

2,高速缓存DNS:(非权威)

vim /etc/name.conf
11 listen-on port 53 { any; }; #端口对所有人打开
17 allow-query { any; }; #允许所有用户使用dns解析
18 forwarders { 172.25.254.250; }; #如果在本地高速缓存dns中找不到解
析则访问172.25.254.250
[[email protected] ~]# systemctl restart named

listen-on port 53 { 127.0.0.1; };未修改情况下的报错:
这里写图片描述

allow-query { localhost; };未修改情况下的报错:
这里写图片描述

forwarders { 172.25.254.250; }; 未添加此项目时,对于高速缓存dns没访问过的域名,将不会有解析。

在测试主机上:(172.25.254.91)
[[email protected] ~]# vim /etc/resolv.conf
nameserver 172.25.254.93 #添加高速缓存dns地址
测试结果:在91上初次访问www.taoba.com时,时间较长,再用93访问时,时间会明显缩短>,那是因为93的主机上有了访问www.taobao.com的缓存记录。

91上:
[[email protected] ~]# dig www.taobao.com
这里写图片描述
93上:
[[email protected] ~]# dig www.taobao.com
可以看见访问时间明显缩短了。

3,做权威DNS的正向解析

vim /etc/name.conf #注释掉上面的forwarders
11 listen-on port 53 { any; };
17 allow-query { any; };

[[email protected] ~]# vim /etc/named.rfc1912.zones #在dns的子配置文件中添加需要解析的域名,如果在主配置文件中添加会过于繁琐,不利于主配置文件的阅读和查看
zone “test.com” IN { #需要解析的域名
type master;
file “testfile.com”; #记录域名解析的文件
allow-update { none; };
};

[email protected] ~]# cd /var/named/
[[email protected] named]# cp -p named.localhost testfile.com#编辑记录域名解析的文件
这里写图片描述
此文件参数解析:
$TTL 1D #解析缓存文一天
@(紫色) #代表‘test.com‘(即就是所要解析的域名)
dns.test.com #dns服务器的名称
root.test.com. #管理dns服务器的用户
0 ; serial #一致性标记,在做dns集群的时候会用到,下文会详细解释
1D ; refresh #dns缓存刷新的时间
1H ; retry #如果出现解析错误后,重新尝试的时间
1W ; expire #过期时间,此处为1周
3 H ) ; minimum #主服务器挂后,从服务器至多工作的时间,可以保护dns防止ddos攻击

测试:
在客户端:dig www.test.com
这里写图片描述
可以看加www.test.com所解析的ip,以及dns服务器名称和dns服务器的ip

4.DNS反向析:

vim /etc/named.rfc1912.zones
zone “254.25.172.in-addr.arpa” IN {
type master;
file “testfile.com.ptr”;
allow-update { none; };
};

cd /var/named/
cp -p named.loopback testfile.com.ptr
vim testfile.com.ptr
这里写图片描述
systemctl restart named

测试:
在没有重启DNS服务器时:
dig -x 172.25.254.122
这里写图片描述
看不见ip所对应的域名!
重启之后:
这里写图片描述
可以看加ip所解析出的域名,dns服务器名和dns服务器的ip。

5.dns的双向解析:

目标:实现内网主机和外网主机访问同一网站域名,定义到不同服务器
vim /etc/named.conf
这里写图片描述

cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.out
vim /etc/named.rfc1912.zones.out
修改为:
zone “test.com” IN {
type master;
file “testfile.com.out”;
allow-update { none; };
};

vim testfile.com.out
这里写图片描述
systemctl restart named

测试:在91上:dig www.test.com
这里写图片描述
在92上:dig www.test.com
这里写图片描述
即实现了内网主机和外网主机访问同一网站域名,却会定义到不同服务器的效果。

6,主从dns的配置(dns集群)

辅助dns可以缓解主dns的压力,当外网主机访问主dns所维护的域名时,都可以看到域名针对外网解析的ip。
在主dns上(172.25.254.91):
vim /etc/named.rfc1912.zones.out #此实验针对的是域名所解析的外网ip,所以要配置记录外网域名解析的子配置文件。
做以下修改:
这里写图片描述
file “testfile.com.out” #对外网用户所制定的域名解析文件
also-notify {172.25.254.94;}; #指定同步辅助dns,辅助dns为172.25.254.94

在辅助dns上的操作:

systemctl stop firewalld
vim /etc/syscofig/selinux #设置selinux为disabled
reboot #重启生效
yum install -u bind
vim /etc/named.conf
11 listen-on port 53 { any; };
17 allow-query { any; };

vim /etc/named.rfc1912.zones
这里写图片描述
参数解释:
type slave; #指定此dns为辅助dns
masters { 172.25.254.91; }; #指定主dns为172.25.254.91
file “slaves/testfile.com.out”; #指定辅助dns解析时应该参考的文件

测试:
测试的时候需要量台外网主机(此处所谓的外网主机即就是在主dns服务器配置文件/etc/named.conf下所指定的外网主机,此次实验仅仅指定了172.25.254.91为内网主机,其余都为外网主机)来测试
在172.25.254.92上:(用来测试主dns的“外网主机“)
vim /etc/resolv.conf
nameserver 172.25.254.91
在172.25.254.93上:(用来测试辅助dns的“外网主机“)
vim /etc/resolv.conf
nameserver 172.25.254.94

注意:测试的时候,当主dns对于外网访问的解析文件如果ip有所改变,在主dns使用:dig www.test.com测试的时候会看见所解析的ip也随之改变;但是对于测试辅助dns的主机来说,同样使用:dig www.test.com来测试却看不见所解析的ip的变化,这是什么原因呢?
哈哈,那是因为辅助dns域名解析文件(/var/named/testfile.com.out)对主dns的域名解析文件的同步是根据解析文件里的一个标志来进行的,即就是“serial“参数,当主dns的“serial‘的数值有所变化的时候,辅助dns才会认为主dns的域名解析有所变化,如果仅仅是文件中解析的ip有所变化,是不会在辅助dns上同步的。
正确的测试结果为:
先前当外网:dig www.test.com时解析的ip为:1.1.1.10,现在将主dns上的/var/named/testfile.com.out文件中将解析的ip改为:1.1.1.20,同时修改“serial“的值,再重启两台dns设备,分别使用:dig www.test.com来测试,可以看见域名所解析的ip是相同的,即完成主从dns的配置。
看图:
这里写图片描述
可以看见在92测试机上获得的域名解析来自主dns(91)
这里写图片描述
在94测试机上获得的域名解析来自辅dns(94)

7,配置从dns基于主机来对主dns更新:

在主dns(91)上:
vim /etc/named.rfc1912.zones.out
这里写图片描述
参数解释:
allow-update { 172.25.254.94; };
允许172.25.254.91对本机的dns解析更新

修改目录权限:
这里写图片描述

systemctl restart named

测试:在辅dns上(94):
nsupdate
server 172.25.254.170 #主DNS
update add hello.test.com 86400 A 1.1.1.30 #添加域名解析条目
send #发送
发送成功后没有报错,quit退出
添加成功后:可以在辅dns上使用命令:dig hello.test.com来测试:
这里写图片描述
可以看出已经更新成功了
更新成功后可以在主dns的/var/named目录下以及辅dns的/var/named/slaves目录下产生“。jnl“结尾的文件

server 172.25.254.170
update delete hello.test.om #删除域名解析条目
send
删除成功后不可在解析成功。

8,配置从dns基于**来对主dns的更新:

在做此类型更新之前需要保持主dns的/var/named目录以及辅dns的/var/named/slaves目录的“纯净“
主dns:
这里写图片描述
辅dns:
这里写图片描述
开始实验:
在主dns上:

cp -p /etc/rndc.key /etc/test.key
[[email protected] named]# cd /mnt/ #切换到mnt目录下是为了将生成的**放在此处,便于后面使用
[[email protected] mnt]# ls
testfile.com.out
[[email protected] mnt]# dnssec-****** -a HMAC-MD5 -b 128 -n HOST test
Ktest.+157+56909
[[email protected] mnt]# ls
Ktest.+157+56909.key Ktest.+157+56909.private testfile.com.out
查看**文件内容:
这里写图片描述
[[email protected] mnt]# scp Ktest.+157+56909.* [email protected]:/mnt #将生成的**传给辅dns,以便更新时使用
[[email protected] mnt]# vim /etc/test.key
这里写图片描述
将**文件名和**修改!
[[email protected] mnt]# vim /etc/named.conf
这里写图片描述
在此处添加这一条

[[email protected] mnt]# vim/etc/named.rfc1912.zones.out
这里写图片描述\
修改此处更新的方式。
重启之前需要确保**文件的属性正确:
这里写图片描述
[[email protected] mnt]# systemctl restart named

测试:在辅dns主机上:
这里写图片描述
测试结果:
这里写图片描述
可以看见已经更新成功。
更新成功后可以在主dns的/var/named目录下以及辅dns的/var/named/slaves目录下产生“。jnl“结尾的文件

9,ddns(动态域名解析)的配置:

什么是ddns?
域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站一种服务。
动态域名解析服务,是将用户的动态IP地址映射到一个固定的域名解析服务上。ddns捕获用户每次变化的ip地址,然后将其与主机的域名对应,这样域名就可以解析到非固定IP的服务器上。
简单的说,不管用户何时上网、以何种方式上网、得到一个什么样的IP地址、IP地址是否会变化,他都能保证通过一个固定的域名就能访问到用户的计算机。
意义:
意味着在动态DNS服务下的计算机就好像具有了固定的IP地址可以充当互联网服务器了。对于广大互联网用户和中小企业而言这无疑是一项非常具有吸引力的服务。

配置:实验之前首先要完成主从dns基于**的更新,同时需要保持主dns的/var/named目录以及辅dns的/var/named/slaves目录的“纯净“
主dns:
这里写图片描述
辅dns:
这里写图片描述
本次ddns实验在主dns上完成,即dns和dhcp服务器都在172.25.254.91上完成,slave-dns自动会同步。

开始配置dns:

省略了**的生成步骤,在上实验中可见

vim /etc/named.conf
这里写图片描述
vim /etc/named.rfc1912.zones #在配置内网的子配置文件中修改
这里写图片描述
vim /var/named/testfile.com
这里写图片描述
修改为上图中那样,为了可一重复实验,建议将此文件(testfile.com)备份在/mnt下

接下来是生成**步骤,参考上一个实验完成,同时配置/etc/named.conf文件:
这里写图片描述
保证配置完后文件是这样的。

检查/var/named目录的属性:
这里写图片描述

如果之前的selinux没有关闭,在此处可以不用关闭:
这里写图片描述
做以上设定也可以避免selinux的影响。

开始配置dncp服务器:
yum install -y dhcp
systemctl start dhcpd
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf -p
vim /etc/dhcp/dhcpd.conf
这里写图片描述

这里写图片描述

删除27 2行!

这里写图片描述
保证文件内容是上图那样的!
dns和dhcp配置完成后重启:
systemctl restart dhcpd
systemctl restart named

测试:
令选一台主机(172.25.254.93),修改主机名:
hostnamectl set-hostname www.test.com

设置为动态获取IP(dhcp)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
这里写图片描述
systemctl restart network #重启网路
ifconfig #查看动态获取到的ip
这里写图片描述
可以看见动态获取到的ip为:172.25.254.85

然后分别在主从dns上查看www.test.com域名解析的ip:

主dns:
这里写图片描述

辅dns:
这里写图片描述

到此完成ddns的配置!