1.DNS总览
权威名称服务器
存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据。
权威名称服务器的类型包括:
Master:包含原始区域数据。有时称作‘主要’名称服务器。
Slave:备份服务器,通过区域传送Master服务器获得的区域数据的副本。
有时称作‘次要’名称服务器。
非权威/递归名称服务器:
客户端通过其查找来自权威名称服务器的数据。递归名称服务器的类型包括
仅缓存名称服务器:仅用于查找,对于非重要数据之外的任何内容都不具有权威性。
2.DNS查找
客户端上的 Stub 解析器 将查询发送至 /etc/resolv.conf 中的名称服务器,如果名称服务器对于请求的信息具有权威性 , 会将权威答案发送至客户端,否则 , 如果名称服务器在其缓存中有请求的信息 , 则会将非权威答案发送至客户端,如果缓存中没有信息 , 名称服务器将搜索权威名称服务器以查找信息 , 从根区域开始 , 按照DNS 层次结构向下搜索, 直至对于信息有具有权威性的名称服务器 , 以此为客户端获得答案。在此情况中,名称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找。
3.DNS资源记录
DNS 区域采用资源记录的形式存储信息。
每条资源记录均具有一个类型 , 表明其保留的数据类型。
A : 名称至 IPv4 地址。
AAAA : 名称至 IPv6 地址。
CNAME : 名称至 ”规范名称 “( 包含 A/AAAA 记录的另一个名称 )。
PTR : IPv4/IPv6 地址至名称。
MX : 用于名称的邮件交换器 ( 向何处发送其电子邮件 )。
NS : 域名的名称服务器。
SOA :“授权起始 “ , DNS 区域的信息 ( 管理信息 )。
4.DNS排错
它显示来自DNS查找的详细信息,其中包括为什么查询失败:
NOERROR:查询成功。
NXDOMAIN:服务器提示不能存在这样的名称。
SERVFAIL:DNS服务器停机或DNSSEC响应验证失败。
REFUSED:DNS服务器拒绝回答(也许是出于访问控制)。
实验环境搭建:让虚拟机能上网
1)
在真机连接网络
ping 114.114.114.114
打开防火墙,查看伪装是否开启:
systemctl start firewalld.service
firewall-cmd --list-all
masquerade: no
如果时no:
firewall-cmd --add-masquerade ##开启火墙伪装
2)在虚拟机
设置ip地址172.25.254.118
设置网关为真机ip:172.25.254.18
ping 114.114.114.114
3)配置yum仓库
cd /etc/yum.repos.d/
ls
vim yum.repo
a---all n不做解析只显示ip地址 t---> tcp协议 l活跃的 u--->udp 协议 p进程名称 e扩展信息
netstat -antlupe
回环接口上开的53 进程名称为named
所有接口上开的
listen正在开启
4)安装named服务
yum install bind -y
打开服务
系统中加密字符保存在加密设别里----->cat /dev/random
第一次开启服务时,加密字符字数不够。需要在虚拟里敲击键盘或者晃动鼠标。
vim /etc/resolv.conf
nameserver 172.25.254.118
5)关火墙:systemctl stop firewalld
排错详解:
vim /etc/named.conf
netstat -antlup | grep namede
53接口在118上打开
vim /etc/named.conf
13行 any; 让53接口在任何ip上可以打开 在什么ip上开什么接口
19行 any; 允许谁来查询
20行 :forwarders { 114.114.114.114; };
34 yes--> 可能使解析位置发生变化
取消对网关的注释,重启网络
顶级域名(根域名) .
二级域名 .com
三级域名 baidu.com
地址解析记录
ptr:把ip变成域名
MX:邮件解析记录
邮件:smtp协议,简单邮件传输协议,常用软件postfix
dig -t mx qq.com
这个ip是这个域的邮件记录
5.权威DNS正向解析
主配置文件:/etc/named.conf
子配置文件:/etc/name.rfc1912.zones
数据目录:/var/named
1)不要写到主配置文件里,会影响文件的读取
vim /etc/named.conf
vim /etc/named.rfc1912.zones
zone "westos.com" IN {
type master;
file "westos.com.zone";
allow-update { none; };
};
2)
cd /var/named/
cp -p named.localhost westos.com.zone ##-p复制权限,如果不复制权限会查询失败
vim westos.com.zone
systemctl restart named
$TTL 1D客户可以把信息缓存一天
@表示引号里域名 可以省略域名。直接写解析的内容
SOA 一个域权威记录的相关信息
.表示字符串结束
ns字符串来源
谁负责维护的
reflash刷新客户主机时间
一个小时后可以继续
1W expire 客户查询时最多能查询的时间
3H 最小缓存时间,从缓存中调取
NS dns.westos.com.
dns A 172.25.254.100
www A 172.25.254.111
bbs A 172.25.254.222
测试:
在测试主机中:
vim /etc/resolv.conf
写入:nameserver 172.25.254.118
dig www.westos.com
A地址解析记录
CNAME域名解析记录
域名转换:
vim /var/named/westos.com.zone
systemctl restart named
测试:在测试主机上
dig www.westos.com
查询www.westos.com时,会先转到bbs.a.westos.com.再解析bbs.a.westos.com.的地址得到结果。
解析轮循:
vim /var/named/westos.com.zone
systemctl restart named
测试:
dig www.westos.com
查询www.westos.com时,会先转到bbs.a.westos.com.再解析bbs.a.westos.com.的地址,第一次解析结果为172.25.254.222,
再次查询结果为172.25.254.111,两个地址轮循。
MX 邮件解析记录:
MX 10 mail.westos.com ##10为优先级
vim /var/named/westos.com.zone
systemctl restart named
测试:
dig -t mx westos.com
给westos.com发送邮件,实际上是给
6.反向解析
1)
vim /etc/named.rfc1912.zones
写入:
zone "254.25.172.in-addr.arpa" IN {
type master;
file "172.25.254.ptr";
allow-update { none; };
};
2)
cd /var/named/
cp -p named.localhost 172.25.254.ptr
vim 172.25.254.ptr
systemctl restart named
写入:
#################################################
$TTL 1D
@ IN SOA dns.westos.com. ys.westos.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.westos.com.
dns A 172.25.254.118
118 PTR dns.westos.com.
111 PTR www.westos.com.
222 PTR bbs.westos.com.
##################################################
3)测试:
dig -x 172.25.254.111
7.双向解析
控制域名能被谁解析,不同客户得到不同的地址。
在 /var/named/路径下
1)
cp -p westos.com.zone westos.com.inters
vim westos.com.inters
2)
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
vim /etc/named.rfc1912.inters
3)
vim /etc/named.conf
systemctl restart named
4)测试:
分别在两台虚拟机上测试(dns都设置为172.25.254.118)
dig www.westos.com
8.辅助DNS
访问dns人过多,访问压力过大,一台主机不能负载。
//注释后表示所有主机都可以访问
dns服务重启的时候同步唯一一次
不对比内容
serial 查看这个值 如果发生改变 立即同步
最多10位
2019021601
dns集群:变一个其他的都变
实验:
准备:还原双向解析
1>配置server主机--->辅助dns上
vim /etc/yum.repos.d/yum.repo ##配置yum源
yum install bind -y ##安装服务
systemctl start named ##开启服务,开启时需要在虚拟机里敲键盘或晃动鼠标
systemctl stop firewalld ##关闭火墙
vim /etc/resolv.conf ##设置dns
nameserver 172.25.254.218
vim /etc/named.conf
vim /etc/named.rfc1912.zones
systemctl restart named
写入:
zone "westos.com" IN {
type slave;
masters { 172.25.254.118; };
file "slaves/westos.com.zone";
allow-update { none; };
};
2>在主dns上
vim /etc/named.rfc1912.zones
写入:also-notify { 172.25.254.218; };
更改解析地址:vim /var/named/westos.com.zone
3>在主dns上
dig www.westos.com
解析的地址更改
4>在辅助dns端:
dig www.westos.com
解析的地址没有更改
(因为不对比内容,serial 查看这个值 如果发生改变 立即同步)
5>更改serial 值为2019021601
systemctl restart named
在辅助dns端和主dns端:dig www.westos.com
解析的地址改变
总结:每次更改A记录文件后必须更改serial的数值,这个数值最大10位。
9.DNS的远程更新
dns集群
1)基于ip:
1>
cp -p westos.com.zone /mnt/ ##备份westos.com.zone
vim /etc/named.rfc1912.zones
写入:
allow-update { 172.25.254.218; };
2>更改目录的权限
chmod 770 /var/named/
3>在server更新端
nsupdate
> server 172.25.254.118
> update add hello.westos.com 86400 A 172.25.254.111
> send
> quit
测试:
在更新端:dig hello.westos.com
3>主dns端(被更新端):对比文件
被更新前
[root@localhost named]# vim westos.com.zone
被更新后:
[root@localhost named]# vim westos.com.zone
删除:
[root@dns2-server named]# nsupdate
> server 172.25.254.118
> update delete hello.westos.com
> send
> quit
测试:dig hello.westos.com
解析不出来
status: NXDOMAIN
重启服务后westos.com.zone 文件中没有hello.westos.com的解析
selinux会影响,在主dns端把selinux状态改为disabled
2)基于key:
删除基于ip实验中的设定,先重启服务再还原
1)加密:
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos ##-a 加密方式,-b 加密字符长度,-n 加密用途
ls
2)
vim /etc/named.conf
写入:
include "/etc/westos.key";
3)
cat Kwestos.+157+49396.key ##查看加密字符
westos. IN KEY 512 3 157 r6EVAPYy9lRUB415vnNqOQ==
4)
cp -p /etc/rndc.key /etc/westos.key
vim /etc/westos.key
写入:
key "westos" {
algorithm hmac-md5;
secret "r6EVAPYy9lRUB415vnNqOQ==";
};
5)
vim /etc/named.rfc1912.zones
allow-update { key westos; }; ##指定westos域可以被westoskey更新
systemctl restart named
6)
scp Kwestos.+157+49396.* root@172.25.254.218:/mnt/
7)在server端测试:
[root@dns2-server mnt]# nsupdate -k Kwestos.+157+49396.private
> server 172.25.254.118
> update add hello.westos.com 86400 A 172.25.254.111
> send
> quit
在被更新端:dig hello.westos.com
注意:时间不同步时会报错---clocks are unsynchronized,需要设置时间同步
10.ddns(花生壳):
1)实验环境--->搭建dhcp:
yum install dhcp -y
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.254.118;
14 ddns-update-style interim; ##开启dhcp更新dns功能,让dhcp通知dns更新,dns里不能有这个域名的记录
32 subnet 172.25.254.0 netmask 255.255.255.0 {
33 range 172.25.254.60 172.25.254.99;
34 option routers 172.25.254.18;
35 }
36
37 key westos { ##dhcp更新dns时用到的key
38 algorithm hmac-md5;
39 secret r6EVAPYy9lRUB415vnNqOQ==;
40 };
41 zone westos.com. { ##指定dhcp更新的域名
42 primary 127.0.0.1; ##指定dns所在的主机ip
43 key westos; ##指定更新这个域时用到的key名称
44 } ##没有分号
解析的ip是固定的,但主机ip可能会环发生改变(dhcp分配ip)
2)更改主机名,让主机名在westos.com 这个域里
hostnamectl set-hostname news.westos.com ##更改主机名为news.westos.com,这个名称在原有的dns服务中是没有解析的
hostname ##确定把ip给了哪台主机
测试:
重启网络查看ip和主机名称的解析否一致
在主dns端:dig new.westos.com
缩小ip范围再测试一次
查看主机ip和解析ip是否一致