一,简单版DNS协议叙述
DNS协议位于OSI七层网络模型中的应用层,也就第七层,在进行域名解析时其传输层采用UDP协议,端口号为53。
- 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系
- 如果新计算机接入网络,将这个信息注册到数据库中
- 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址
含义
1.DNS 是域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它将域名和IP地址相互映射的一个分布式数据库,在数据库中保存域名与IP的对照关系,从而使人更方便地访问互联网。
2.在互联网中是用IP来标识一台服务器的。IP地址虽然能够代表一台设备,但是由于记忆起来比较困难,所以将其替换成一个能够理解和识别的名字,这个名字我们称作为域名,www.baidu.com 就是一个域名,在域名后面会定义一个IP地址用来指向网站服务器,就是通过DNS来实现的
DNS服务器是用来做URL与IP地址解析的,帮助用户找到要访问服务器的IP
域名分层
DNS服务器的结构大致分层 :根域名服务器,顶级域名服务器,二级,三级,四级域名,还有电脑默认的本地域名服务器
级别最低的域名写在左边,级别最高的域名写在右边
每个域名服务区的作用
注:一个域名服务器所负责的范围,或者说有管理权限的范围,就称为区
我们需要注意的是:

- 每个层的域名上都有自己的域名服务器,最顶层的是根域名服务器
- 每一级域名服务器都知道下级域名服务器的IP地址
- 为了容灾, 每一级至少设置两个或以上的域名服务器
根域名服务器
最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助
顶级域名服务器
负责管理在该顶级域名服务器下注册的二级域名
权限域名服务器
负责一个区的域名解析工作
本地域名服务器
当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器
DNS的查询方式
-
递归查询:例:如果 A 请求 B,那么 B 作为请求的接收者一定要给 A 想要的答案
简写:递归是主机向本地域名服务器查询的方式
-
迭代查询:例:如果接收者 B 没有请求者 A 所需要的准确内容,接收者 B 将告诉请求者 A,如何去获得这个内容,但是自己并不去发出请求
简写:本地域名服务器向根服务器查询的方式
URL:统一资源定位符
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它
统一资源标志符确定一个资源,而统一资源定位符不但确定一个资源,而且还表示出它在哪里
统一资源定位符的日常使用超文本传输协议统一资源定位符将从互联网获取信息的四个基本元素包括在一个简单的地址中。
URL=域名+文件路径组成
二,详细版DNS域名解析服务
一.DNS系统的作用
1.1正向解析(A记录):
根据域名查找对应的 IP 地址
1.2反向解析(B记录):
根据 IP 地址查找对应的域名(域名的反向解析不是常用,只在一些特殊场合才会用到,比如可用于反垃圾邮件的验证)
1.3分离解析
1.4DNS系统的分布式数据结构图
二.DNS使用的协议及端口号
DNS的默认端口为53,DNS端口分为TCP和UDP
1.1 TCP是用来做区域传送,多用于主从同步
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务则从区的主DNS服务器中读取该区的DNS数据信息
主从同步:主(master)服务器储存数据,备(从)(worker)服务器直接复制主服务器的数据,减轻主服务器的压力(大致和冗余备份差不到)
1.2 UDP是用来做DNS解析的
三,DNS的分布式互联网解析库(域名空间结构)
四,DNS服务器系统类型
1.主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护该区域内所有域名->IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
负责维护一个区域的所有域名信息,是特定的所有信息的权威信息源,数据可以修改。构建主域名服务器时,需要自行建立所负责区域的地址数据文件
2.从域名服务器
-
也称为辅助域名服务器`,是对主域名服务器的热备份
-
其维护的域名->IP地址记录来源于主域名服务器
-
需要从主域名服务器自动同步区域地址数据库
当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
3.缓存域名服务器
- 也称为DNS高速缓存服务器
- 通过向其他域名服务器查询获得域名->IP地址记录
- 将域名查询结果缓存到本地,提高重复查询时的速度
4.转发域名服务器
- 负责所有非本地域名的本地查询
转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次转发到指定的域名服务器,直到查找到结果为止,否则返回无法映射的结果
五、bind安装及配置
5.1.安装bind,先查看是否安装,有则更新,若没有yum安装,关闭防火墙,核心防护,配置DNS
5.2.查看bind下载到的位置要进入配置,主要配置,从上到下依次是,
- 主配置文件控制系统全局(定义全局配置,定义了Listen 53监听和allow规则)
- 区域配置文件控制具体单个区域(定义解析什么域名和指向具体实现域名-IP 解析关系的配置文件)
- 区域数据配置文件区域信息(需要解析的域名和本地IP,各种主机名和IP的解析关系,以那种方式进行解析,正A,反P)
5.3.分别进入文件从上到下配置
主要修改
root@c7-1 ~]# vim /etc/named.conf //修改主要配置文件
options {
listen-on port 53 { 192.168.113.125; }; //ip地址使用提供服务的本地IP,也可用any表示所有
#listen-on-v6 port 53 { ::1; }; //注释掉ipv6
directory "/var/named"; //区域数据文件的默认存放位置
dump-file "/var/named/data/cache_dump.db"; //域名缓存数据库文件的位置
statistics-file "/var/named/data/named_stats.txt"; //状态统计文件的位置
memstatistics-file "/var/named/data/named_mem_stats.txt"; //内存统计文件的位置
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许使用本DNS解析服务的网段,也可用any代表所有
[root@c7-1 ~]# vim /etc/named.rfc1912.zones
zone "xiaotuji.com" IN { //正向解析benet.com区域
type master; //类型为主区域
file "xiaotuji.com.zone"; //指定区域数据文件为benet.com.zone
allow-update { none; };
};
- 配置正向区域数据文件
[root@c7-1 ~]# cd /var/named/
[root@c7-1 named]# cp -p named.localhost xiaotuji.com.zone //复制localhost的模板,保留源文件的权限和属主的属性复制
[root@c7-1 named]# vim /var/named/xiaotuji.com.zone //配置正向区域数据文件
$TTL 1D
@ IN SOA xiaoyuji.com. admin.xiaotuji.com. ( //"@"符号表示当前的DNS区域名
0 ; serial //更新序列号,可以是10位以内的整数
1D ; refresh //刷新时间,重新下教地址数据的间隔
1H ; retry //重试延时,下教失败后的重试间隔
1W ; expire //失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum //无效解析记录的生存周期
NS xiaotuji.com. //记录当前区域的DNS服务器的名称
A 192.168.113.125 //记录主机IP地址
IN MX 10 mail.xiaotuji.com. //MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.113.125 //记录正向解析www.xiaotuji.com对应的IP
mail IN A 192.168.113.30 //记录正向解析mail对应的IP
ftp IN A 192.168.113.125 //记录正向解析ftp对应的IP
* IN A 192.168.113.33 //泛域名解析,“*"代表任意主机名
"@"这里是一个变量,当前DNS区域名
SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
"xiaotuji.com. "此为完全合格域名(FQDN),后面有个"."不能漏掉
"admin.xiaotuji.com."表示管理员邮箱,这里的"@"符号已有其他含义,所以用"."代替
5.4.在客户端的域名解析配置文件中添加DNS服务器地址
[root@c7-1 named]# vim /etc/resolv.conf
# Generated by NetworkManager
#nameserver 114.114.114.114 //注销掉之前配置DNS
nameserver 192.168.113.125 //添加DNS服务器地址
5.5.测试DNS正向解析
[root@c7-1 named]# systemctl start named //启动服务
[root@localhost ~]# nslookup www.xiaotuji.com //DNS解析
Server: 192.168.113.125
Address: 192.168.113.125#53
Name: www.xiaotuji.com
Address: 192.168.113.125
[root@localhost ~]# nslookup ftp.xiaotuji.com
Server: 192.168.113.125
Address: 192.168.113.125#53
Name: ftp.xiaotuji.com
Address: 192.168.113.125
[root@localhost ~]# nslookup mail.xiaotuji.com
Server: 192.168.113.125
Address: 192.168.113.125#53
Name: mail.xiaotuji.com
Address: 192.168.113.30
[root@localhost ~]# nslookup dxj.xiaotuji.com
Server: 192.168.113.125
Address: 192.168.113.125#53
Name: dxj.xiaotuji.com
Address: 192.168.113.33
***访问百度流程
一.DNS解析方式有两种
1.递归解析
2.迭代解析
简单版:
1.先查找本机的缓存记录
2.查找hosts文件
3.查询dns域名服务器,交给dns域名服务器处理
上面三步是递归查询,我要一个答案你直接给我结果,下面是迭代查询,需要一步步从根域服务器往下查询(解析)
4.这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
5.求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
6.求助顶级域服务器,顶级与服务器返回可能会知道结果的二级域服务器让他去找二级服务器
7.求助二级域服务器,二级域服务器查询发现是我的主机,拔插查询到的 ip 地址返回给本地域名服务器
8.本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
详细版:
1.DNS递归解析
①首先看本地缓存是否有域名-ip 映射关系,有的话直接使用
②尝试解析 /etc/hosts 解析文件(DNS解析-本地),有的话直接使用
③通过 /etc/resolv.conf 配置文件中指向的DNS服务器(代理)的位置,来建立请求,请求解析www.baidu.com域名和IP的映射关系
2.若本地没有缓存,开始进行DNS的迭代解析
①首先DNS 服务接收请求后,向根服务器请求解析
②根域服务器返回给DNS 服务器后,向顶级域服务器请求解析
③再返回 DNS 服务器,然后依次向二级域,子域进行请求解析
④直到将 www.baidu.com. 这个域名全部解析完成,找到对应的 IP 映射关系,然后返回给 DNS 服务器
3.DNS 服务器返回给客户端(用户端),此时用户端接收到了 www.baidu.com 与 IP 的映射关系
①保存在缓存中
②根据请求的协议类型,向 www.baidu.com 服务器进行连接(TCP三次握手)三次握手连接介绍下
4.建立间接通道后,根据 http/https 协议进行传输数据
2.若本地没有缓存,开始进行DNS的迭代解析
①首先DNS 服务接收请求后,向根服务器请求解析
②根域服务器返回给DNS 服务器后,向顶级域服务器请求解析
③再返回 DNS 服务器,然后依次向二级域,子域进行请求解析
④直到将 www.baidu.com. 这个域名全部解析完成,找到对应的 IP 映射关系,然后返回给 DNS 服务器
3.DNS 服务器返回给客户端(用户端),此时用户端接收到了 www.baidu.com 与 IP 的映射关系
①保存在缓存中
②根据请求的协议类型,向 www.baidu.com 服务器进行连接(TCP三次握手)三次握手连接介绍下
4.建立间接通道后,根据 http/https 协议进行传输数据