目录
一.DNS相关介绍
DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网,基于C/S架构,服务器端:53/udp, 53/tcp实际上,每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。根据地址解 析的方向不同,DNS 区域相应地分为正向区域(包含域名到 IP 地址的解析记录)和反向区 域(包含 IP 地址到域名的解析记录)
1.DNS分布式结构数据图
根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
一级域名:Top Level Domain: tld;三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域(com, edu, mil, gov, net, org, int)
二级域名:magedu.com
三级域名:study.magedu.com
最多可达到127级域名
2.DNS服务器类型
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,
但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定
其他 DNS 服务器作为解析来源。
主域名服务器:管理和维护所负责解析的域内解析库的服务器
从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
- 序列号:解析库版本号,主服务器解析库变化时,其序列递增
- 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
- 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
- 过期时长:从服务器联系不到主服务器时,多久后停止服务
- 通知机制:主服务器解析库发生变化时,会主动通知从服务器
3.DNS查询类型及原理
1查询方式
递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需 要发起多次查询。(需要自己动手)
当用户想去访问 www.baidu.com
1.先去看 /etc/hosts 文件 是否有对应的条目 如果有直接访问相应的条目,如果没有去问DNS代理服务器;
2.如果 DNS 代理服务器有缓存,直接返回结果 ,如果代理服务器没有缓存,代理服务器会去问根域服务器;
3.由于我需要知道的域名是 www.baidu.com 根域服务器无法直接解析,就告诉一级域服务器地址 让我去问 一级域服务器;
4.由于我需要知道的域名是 www.baidu.com 一级域服务器也无法解析,就告诉二级域服务器地址 让我去问 二级域服务器;
5.由于我需要知道的域名是 www.baidu.com 二级域服务器可以解析,就告诉我www.baidu.com的地址;
6.这个时候 DNS代理服务器拿到了相应的地址,缓存好后,再回复给客户端,这样客户端就拿到了 www.baidu.com 域名对应的ip地址了。
2.查询原理过程
正向解析查询过程:
①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理 以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
二.DNS正向解析配置方法(centos7)
1.关闭防火墙 和核心防护
systemctl stop firewalld
setenforce 0
2.安装软件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install -y bind bind-utils
systemctl start named
3.修改主配置文件
vim /etc/named.conf
#注释 文件中的此 两行
// allow-query { localhost; };
// allow-query { localhost; };
4.修改区域配置文件
vim /etc/named.rfc1912.zones
zone "wyf.com" IN {
type master;
file "wyf.zone";
};
5.准备数据库文件
cd /var/named
cp -a named.localhost wyf.zone
vim wyf.zone
$TTL 1D
@ IN SOA master admin.wyf.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.91.100
www A 192.168.91.100
ftp A 192.168.91.101
6.重启服务
systemctl restart named
7.验证
dig @192.168.91.100 ftp.wyf.com
三.DNS主从复制(ubuntu)
3.1 主服务器上的操作
1.安装软件
apt update
apt install bind9 bind9-utils -y
cd /etc/bind
2.修改区域配置文件
vim /etc/bind/named.conf.default-zones
zone "cxk.com" {
type master;
file "/etc/bind/cxk.zone";
allow-transfer { 192.168.91.32; };
};
3.新建数据库文件
cd /etc/bind
cp -a /etc/bind/db.local /etc/bind/cxk.zone
vim /etc/bind/cxk.zone
@ IN SOA master.cxk.com. admin.cxk.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
NS master
NS slave
master A 192.168.91.31
slave A 192.168.91.32
www A 192.168.91.31
ftp A 192.168.91.32
4.重启服务器
systemctl restart named
5.验证解析结果
dig @192.168.91.31(你自己的ip地址) www.cxk.com
3.2 从服务器上的操作
1.安装软件
apt update
apt install bind9 bind9-utils -y
2.修改区域配置文件
mkdir /var/cache/bind/slaves
vim /etc/bind/named.conf.default-zones
zone "cxk.com" {
type slave;
file "slaves/cxk.zone";
masters { 192.168.91.31; };
};
systemctl restart named
3.验证是否有文件
ls /var/cache/bind/slaves/
4.重启服务器
systemctl restart named
5.验证解析结果
dig @192.168.91.31(你自己的ip地址) www.cxk.com