一、高速缓存DNS
1 DNS
Domain Name System
,域名系统。
万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网。他主要负责把域名和IP的相互转换,DNS运行与TCP|UDP的53端口上。
2 DNS分类
(1)权威名称服务器(权威dns:直接有客户需要的答案,客户给一个域名,直接能访问到答案)
存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据
权威名称服务器的类型包括:
Master:包含原始区域数据,有时称作“主要”名称服务器
Slave:备份服务器,通过区域传送,从Master服务器获得的区域副本,有时称作:次要“名称服务器。
(2)非权威/递归名称服务器(非权威dns里边没有客户需要的答案,但他会通过114.114.114.114等权威DNS找到答案给客户)
客户端通过其查找来自权威名称服务器的数据
3 高速缓存DNS
DNS服务器可以高速缓存从其他DNS服务器收到的DNS记录,也可以在DNS客户服务中使用高速缓存,将其作为DNS客户端保存在最近的查询过程中得到的信息
高速缓存DNS的作用就是当一个主机第一次访问一个网页的时候,该主机的DNS服务器以从远处的服务器拿到数据,并进行高速缓存;这样在主机或者其他主机进行下一次访问的时候,可以直接从该主机的高速缓存中直接获取,这样的方式叫做高速缓存。
主配置文件:/etc/named.conf
子配置文件:/etc/named.rfc1912.zones
数据目录:/var/name
使用端口:53
4、DNS排错
dig
时显示的信息,显示来自dns查找的详细信息,其中包括为什么查询失败
错误信息 | 含义 |
---|---|
NOERROR | 查询成功 |
NXDOMAIN | DNS服务器提示提示不存在这样的内容 |
SERVFAIL | DNS服务器停机或DNSSEC响应验证失败 |
REFUSED | DNS服务器拒绝回答(也许是出于访问控制原因) |
5 DNS资源记录
DNS区域采用资源记录的形式存储信息。每条资源记录均具有一个类型,表明其保留的数据类型
类型 | 含义 |
---|---|
A | 名称至IPV4地址 |
AAAA | 名称至IPV6地址 |
CNAME | 名称至“规范名称“(包含A/AAAA 记录的另一个名称) |
PTR | IPV4/IPV6地址至名称 |
MX | 用于名称的邮件交换器(向何处发送其电子邮件) |
NS | 域名的名称服务器 |
SOA | ”授权起始“,DNS区域的信息(管理信息) |
二、DNS高速缓存的部署
1 安装部署DNS
安装,服务的开启与火墙设置:
yum install bind.x86_64 -y
systemctl start named ##动虚拟机鼠标键盘可以加速
systemctl enable named.service
firewall-cmd --permanent --add-service=dns #添加服务
firewall-cmd --reload
2 高速缓存dns
编辑配置文件:
vim /etc/named.conf
写入或更改:
11 listen-on port 53 { any; };
17 allow-query { any; };
18 forwarders {114.114.114.114;};
33 dnssec-validation no;
systemctl restart named #动虚拟机鼠标键盘可以加速
3 测试
在客户主机做解析:
vim /etc/resolv.conf
nameserver 172.25.254.116 #服务器的ip
dig www.baidu.com
测试结果如下:
三、权威DNS正向解析
1 配置文件
编辑dns服务主配置文件:
vim /etc/named.conf
写入或更改:
11 listen-on port 53 { any; };
17 allow-query { any; };
18 forwarders {114.114.114.114;};
33 dnssec-validation no;
编辑dns服务子配置文件:
vim /etc/named.rfc1912.zones
25 zone "westos.org" IN {
26 type master;
27 file "westos.org.zone";
28 allow-update { none; };
29 };
2 建立域名信息文件
dns服务的数据发布目录为/var/named/
,因此需要在此目录下建立:
cd /var/named/
cp -p named.localhost westos.org.zone #带权限复制模板
vim westos.org.zone
1 $TTL 1D
2 @ IN SOA dns.westos.org. root.westos.org. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.org.
9 dns A 172.25.254.116
10 www A 172.25.254.216
systemctl restart named
其中信息含义为:
3 测试
在客户主机做解析:
vim /etc/resolv.conf
nameserver 172.25.254.116 #服务器的ip
dig www.westos.org
测试结果如下:
4 DNS0名称转换和轮循
客户在访问规范域名时转换为内部的域名:
vim westos.org.zone
1 $TTL 1D
2 @ IN SOA dns.westos.org. root.westos.org. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.org.
9 dns A 172.25.254.116
10 www CNAME bbs.westos.org.
11 bbs A 172.25.254.111
12 bbs A 172.25.254.222
systemctl restart named
填入以上内容即可实现地址的轮询,使用dig
命令访问www.westos.org
(将转换为bbs.westos.org
)或者bbs.westos.org
时将会在172.25.254.111
和172.25.254.222
中轮询:
5 DNS邮件交换器
邮件的传输协议:smtp
vim westos.org.zone
1 $TTL 1D
2 @ IN SOA dns.westos.org. root.westos.org. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.org.
9 dns A 172.25.254.116
10 www CNAME bbs.westos.org.
11 bbs A 172.25.254.111
12 bbs A 172.25.254.222
13 westos.org. MX 1 172.25.254.116. #设置邮件交换器
systemctl restart named
测试:
四、DNS反向解析
dig
命令加参数-x
可以实现ip的反向解析
1 编辑服务子配置文件
vim /etc/named.rfc1912.zones
52 zone "254.25.172.in-addr.arpa" IN {
53 type master;
54 file "westos.org.ptr";
55 allow-update { none; };
56 };
2 建立反向解析文件
在服务数据发布目录重建立文件:
cd /var/named/
cp -p named.loopback westos.org.ptr
vim westos.org.ptr
1 $TTL 1D
2 @ IN SOA dns.westos.org. root.westos.org. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.org.
9 dns A 172.25.254.116
10 111 PTR bbs.westos.org.
11 222 PTR www.westos.org.
systemctl restart named
3 测试
在客户端:
dig -x 172.25.254.111
五、DNS双向解析
需要实现的功能:内网主机访问的地址与外网主机访问dns时看到的地址不同
1 再新建一个内网用户正向解析文件
将内网用户可以看到的的网段设置为192.168.0
(外网用户看到的网段为172.25.254
)
cd /var/named/
cp -p westos.org.zone westos.org.localnet
vim westos.org.localnet
1 $TTL 1D
2 @ IN SOA dns.westos.org. root.westos.org. (
3 0 ; serial
4 1D ; refresh
5 1H ; retry
6 1W ; expire
7 3H ) ; minimum
8 NS dns.westos.org.
9 dns A 192.168.0.116
10 www CNAME bbs.westos.org.
11 bbs A 192.168.0.111
12 bbs A 192.168.0.222
13 westos.org. MX 1 192.168.0.116.
2 新建内网用户子配置文件
外网用户的子配置文件之前已经存在(/etc/named.rfc1912.zones
),因此只需要建立内网用户子配置文件:
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.localnet
vim /etc/named.rfc1912.localnet
26 zone "westos.org" IN {
27 type master;
28 file "westos.org.localnet";
29 allow-update { none; };
30 };
3 更改主配置文件
vim /etc/named.conf
注释一些内容:
写入:
对于内网主机:
61 view localnet {
62 match-clients {172.25.254.116; }; #内网主机为172.25.254.116
63 zone "." IN {
64 type hint;
65 file "named.ca";
66 };
67 include "/etc/named.rfc1912.localnet";
68 };
对于外网主机:
70 view internet {
71 match-clients {any;};
72 zone "." IN {
73 type hint;
74 file "named.ca";
75 };
76 include "/etc/named.rfc1912.zones";
77 };
之后重启服务
4 测试
在内网用户(ip为172.25.254.116
)测试:
在外网用户(ip为172.25.254.216
)测试:
六、辅助DNS
注意:此步操作需要将双向解析在主配置文件中所做的设定还原
搭建辅助DNS的作用:缓解主DNS服务器的压力
1 辅助dns的设置
在辅助dns服务器上安装部署dns服务并在火墙中添加dns服务:
yum install bind -y
systemctl start named
systemctl enable named.service
firewall-cmd --permanen --add-service=dns
firewall-cmd --reload
辅助dns主配置文件设置与主dns服务器相同
辅助dns子配置文件设置:
vim /etc/named.rfc1912.zones
25 zone "westos.org" IN {
26 type slave;
27 masters { 172.25.254.116; };
28 file "slaves/westos.org.zone";
29 allow-update { none; };
30 };
systemctl restart named
辅助dns设置成功
测试:
在另外一台主机上 将解析服务设置为辅助dns的ip地址,并执行dig命令:
vim /etc/resolv.conf
nameserver 172.25.254.216 #辅助dns服务器的ip地址
2 辅助dns服务器的更新
当主dns服务器上的A记录发生变化时,辅助服务器不会更新,即辅助dns与主dns数据不同步
主dns服务器中A记录更改为:
数据不同步时:
删除辅助dns服务器上的A记录保存文件,并重启服务:
cd /var/named/slaves/
rm -rf westos.org.zone
systemctl restart named
数据同步后:
3 辅助dns服务器的自动更新
辅助dns的自动更新需要更改主dns服务的子配置文件:
vim /etc/named.rfc1912.zones
26 zone "westos.org" IN {
27 type master;
28 file "westos.org.zone";
29 allow-update { none; };
30 also-notify {172.25.254.216; }; #添加辅助dns的地址
31 #allow-transfer {172.25.254.216; }; 允许哪些主机同步,rhel7默认允许,rhel7之前的版本需要添加此参数
32 };
更改主dns信息发布文件:
vim /var/named/westos.org.zone #将serial值改为1
systemctl restart named
更改完成后辅助dns将会自动同步主dns的内容
七、dns的更新
dns的更新表示其他主机更改dns服务器中的A记录信息,dns更新的设置:
1 更改dns服务器配置文件
vim /etc/named.rfc1912.zones
26 zone "westos.org" IN {
27 type master;
28 file "westos.org.zone";
29 allow-update { 172.25.254.216; }; #允许172.25.254.216主机更改
30 also-notify {172.25.254.216; };
31 };
2 更改信息发布目录权限
更改dns服务器信息发布目录权限,使其对named
用户可写:
chmod 770 /var/named/
之后备份原A记录文件,并重启服务:
cp -p /var/named/westos.org.zone /mnt/
systemctl restart named
3 dns的更新
在17.25.254.216
(dns服务器中允许上传的主机)主机上做dns的更新:
信息添加:
nsupdate
> server 172.25.254.116 #更新的dns服务器
> update add hello.westos.org 86400 A 172.25.254.123
> send
> quit
测试:
删除信息:
nsupdate
> server 172.25.254.116
> update delete hello.westos.org
> send
> quit
测试:
八、dns的key更新
七中dns的更新为dns的ip更新,做key更新前需要将ip更新所作的更改还原
cd /var/named/
systemctl restart named
rm -rf westos.org.zone*
cp -p /mnt/westos.org.zone .
systemctl restart named
1 生成dns的key
在/mnt/目录下生成key:
cd /mnt/
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos #敲鼠标键盘可以加快速度
2 生成自己的key
cp -p /etc/rndc.key /etc/westos.key
vim /etc/westos.key
1 key "westos" {
2 algorithm hmac-md5;
3 secret "YSDp28BQk1OU6MBsJ5Oxyw==";
4 };
3 更改dns主配置文件
vim /etc/named.conf
写入:
44 include "/etc/westos.key";
4 更改dns子配置文件
更改dns子配置文件,改成仅允许持有key的主机更改dns:
vim /etc/named.rfc1912.zones
26 zone "westos.org" IN {
27 type master;
28 file "westos.org.zone";
29 allow-update { key westos; };
30 also-notify {172.25.254.216; };
31 };
之后重启服务,dns的key更新即设置完成
systemctl restart named
5 测试
将dns的key复制到另外一台主机中:
scp /mnt/Kwestos.+157+54001.* root@172.25.254.216:/mnt/
在172.25.254.216
中执行更新:
cd /mnt/
ls
Kwestos.+157+54001.key Kwestos.+157+54001.private
nsupdate -k Kwestos.+157+54001.key
> server 172.25.254.116
> update add hello.westos.org 86400 A 172.25.254.66
> send
> quit
表明添加成功:
注意:若send
后出现dns_request_getresponse: clocks are unsynchronized
错误,表明两台主机时钟不同步,对两台主机进行时钟同步即可。
九、ddns动态域名解析
1 DDNS动态域名解析
DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
DDNS又称花生壳
原理:动态域名服务的对象是指IP是动态的,是变动的。普通的DNS都是基于静态IP的,有可能是一对多或多对多,IP都是固定的一个或多个。但DDNS的IP是变动的、随机的。简单来说就是通过DHCP服务器分配的IP地址可以动态更新到DNS服务上,免除了手动指定的麻烦。
2 实验环境设定
客户端设定:
设定网络类型为dhcp
,并更改hostname
为dns-client.westos.org
服务端设定:
还原实验环境,仅保留正向解析的文件
cd /var/named/
rm -rf westos.org.*
vim /etc/named.rfc1912.zones
将反向解析相关删除
cp -p /mnt/westos.org.zone .
systemctl restart named
vim westos.org.zone
仅保留dns正向解析的A记录
systemctl restart named
安装dhcp并配置:
yum install dhcp -y
cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cd /etc/dhcp/
vim dhcpd.conf
更改dhcp配置文件
firewall-cmd --permanent --add-service=dhcp
firewall-cmd --reload
systemctl restart dhcpd
dhcp配置文件更改为
确保客户端能够通过dhcp获取到ip:
实验环境准备完毕,此时在客户端dig
其hostname
发现报错NXDOMIN
:
3 配置DDNS
服务器更改dhcp配置文件:
vim /etc/dhcp/dhcpd.conf
更改:
8 # Use this to enble / disable dynamic dns updates globally.
9 ddns-update-style interim; #去掉注释并把none改为interim
添加:
25 key westos {
26 algorithm hmac-md5;
27 secret "YSDp28BQk1OU6MBsJ5Oxyw==";
28 };
29
30 zone westos.org. {
31 primary 127.0.0.1;
32 key westos;
33 }
systemctl restart dhcpd.service
4 测试
在客户端重启网络后dig
其hostname
发现A记录为其通过dhcp获取到的ip:
systemctl restart network
dig dns-client.westos.org
说明DDNS设置成功