DNS(域名解析服务),非权威搭建

一.DNS的介绍

1、DNS的概念

DNS:计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,域名服务器是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。

为什么叫计算机域名系统?

答:为什么不叫“名字”而叫“域名”呢?这是因为在这种因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。

为什么会有域名的出现?

答:我们都知道,IP地址是由32位的二进制数字组成的。用户与因特网上某台主机通信时,显然不愿意使用很难记忆的长达32位的二进制主机地址。 即使是点分十进制IP地址也并不太容易记忆。相反,大家愿意使用比较容易记忆的主机名字——域名。

计算机使用的是域名还是IP通信?为什么?

答:机器在处理IP数据报时,并不是使用域名而是使用IP地址。这是因为IP地址长度固定,而域名的长度不固定,机器处理起来比较困难。

2、DNS的域名结构

由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。

从语法上讲,每一个域名都是有标号(label)序列组成,而各标号之间用点(小数点)隔开。

如下例子所示:
在这里插入图片描述

  • DNS规定,域名中的标号都有英文和数字组成,每一个标号不超过63个字符(为了记忆方便,一般不会超过12个字符),也不区分大小写字母。

在这里插入图片描述

  • 级别最低的域名写在最左边,而级别最高的字符写在最右边。

  • 主机名与域名并不是依据".“来划分的,主机名中也可以包含”."号的,主要还是要根据域名的注册情况来划分。

  • 由多个标号组成的完整域名总共不超过255个字符。

  • DNS既不规定一个域名需要包含多少个下级域名,也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由ICANN进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。

来一个大概图:
在这里插入图片描述

3、DNS域名服务器

(1)DNS服务器的分类
1、主DNS服务器
  为客户端提供域名解析的主要区域,主DNS服务器宕机,会启用从DNS服务器提供服务。
2、从DNS服务器
  主服务器DNS长期无应答,从服务器也会停止提供服务。
  主从区域之间的同步采用周期性检查+通知的机制,从服务器周期性的检查主服务器上的记录情况,一旦发现修改就会同步,另外主服务器上如果有数据被修改了,会立即通知从服务器更新记录。
3、缓存服务器
  服务器本身不提供解析区域,只提供非权威应答。
4、转发服务器
  当DNS服务器的解析区域(包括缓存)中无法为当前的请求提供权威应答时,将请求转发至其它的DNS服务器,此时本地DNS服务器就是转发服务器。

(2)DNS服务器工作区域:区
如果采用上述的树状结构,每一个节点都采用一个域名服务器,这样会使得域名服务器的数量太多,使域名服务器系统的运行效率降低。所以在DNS中,采用划分区的方法来解决。

一个服务器所负责管辖(或有权限)的范围叫做区(zone)。

各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机到域名IP地址的映射。

DNS服务器的管辖范围也是以域为单位嘛?

答:主机或主机群组之间以层次树状结构来进行划分命名,但DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。区是DNS服务器实际管辖的范围。

区和域的范围谁大?为甚?

答:区 <= 域。
在这里插入图片描述

3、域名的解析过程

注意:

一、主机向本地域名服务器的查询一般都是采用递归查询。

所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

二、本地域名服务器向根域名服务器的查询的迭代查询。

迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

在这里插入图片描述

迭代查询和递归查询的区别?

  • 递归查询是域名服务器将代替提出请求的客户机(下级zhiDNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机。

  • 迭代查询是能够使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机 地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询。

4、DNS缓存及TTL参数

DNS缓存指DNS返回了正确的IP之后,系统就会将这个结果临时储存起来。并且它会为缓存设定一个失效时间 (TTL),在这N小时之内,当你再次访问这个网站时,系统就会直接从你电脑本地的DNS缓存中把结果交还给你,而不必再去询问DNS服务器,变相“加速”了网址的解析。

当然,在超过N小时之后,系统会自动再次去询问DNS服务器获得新的结果。所以,当你修改了 DNS 服务器,并且不希望电脑继续使用之前的DNS缓存时,就需要手动去清除本地的缓存了。

关于DNS解析的TTL参数:

我们在配置DNS解析的时候,有一个参数常常容易忽略,就是DNS解析的TTL参数,Time To Live。TTL这个参数告诉本地DNS服务器,域名缓存的最长时间。用阿里云解析来举例,阿里云解析默认的TTL是10分钟,10分钟的含义是,本地DNS服务器对于域名的缓存时间是10分钟,10分钟之后,本地DNS服务器就会删除这条记录,删除之后,如果有用户访问这个域名,就要重复一遍上述复杂的流程。

其实,如果网站已经进入稳定发展的状态,不会轻易更换IP地址,我们完全可以将TTL设置到协议最大值,即24小时。带来的好处是,让域名解析记录能够更长时间的存放在本地DNS服务器中,以加快所有用户的访问。

阿里云之所以只将TTL设置成10分钟,是为了让域名解析更快生效而已。因为之前的解析会在最长10分钟之后失效(本地DNS服务器将对应的解析条目删除),然后新的解析生效。如果是24小时,这个生效的时间最长就是24小时,甚至更长(本地DNS服务器要有用户请求,才会发起查询)。

5、DNS缓存的分类

1)浏览器DNS缓存(内存中): 浏览器会按照一定频率缓存DNS记录

2)本地DNS缓存(内存中): 如果浏览器缓存中找不到需要的DNS记录,那就去操作系统找。

3)本地HOSTS文件: Windows系统中位于C:\Windows\System32\drivers\etc

4)路由器DNS(可以登录后台设置DNS服务器地址): 路由器自动获取DNS地址,也可以手动

     修改(路由器DNS被篡改会造成域名劫持,你访问的网址都会被定位到同一个位置,但是

     IP直接可以访问)

5)ISP的DNS服务器:  ISP(互联网服务提供商、联通电信移动),ISP有专门的DNS服务器应

     对DNS查询请求

6)根服务器: ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询

在这里插入图片描述

6、DNS解析库

DNS的主要作用是进行主机名的解析。解析:根据用户提供一种名称,去查询解析库,以得到另一种名称正向解析与反向解析使用不同的解析库。

正向解析: 从FQDN转换为IP地址称为正向解析。

反向解析: 从IP地址转换为FQDN称为反向解析。

7、DNS使用的端口号

DNS协议使用udp/tcp的53端口提供服务,客户端向DNS服务发起请求时,使用udp的53端口;DNS服务器间进行区域传送的时候使用TCP的53端口。

二.DNS本地设置

1.本地解析文件

/etc/hosts文件:在没有使用dns服务器的情况下,在本地解析文件列表里也会在本地网络上保留主机名和ip,在文列表里面添加相应的ip与主机名仍然可以通过此方法将域名转化为ip,此方法适用于互相连接的同一网络环境中的主机。在这里插入图片描述

2.DNS本地缓存文件

域名服务器的配置文件为/etc/resolv.conf 在这里插入图片描述
在此文件中添加 nameserver 114.114.114.114 并保存在这里插入图片描述

3.解析优先级

  • 以上两种解析方式有着不同的优先级,在/etc/nsswitch.conf 38,39行 ;
  • files为本地解析,dns为DNS缓存解析。
  • 可以互换files与dns的位置获得指定优先级

在这里插入图片描述
在这里插入图片描述

4、DNS 排错(它显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败)

在这里插入图片描述

三、DNS服务配置

1、BIND简介

现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet Systems Consortium)编写和维护。

BIND支持先今绝大多数的操作系统(Linux,UNIX,Mac,Windows)

BIND服务的名称称之为named,DNS默认使用UDP、TCP协议,使用端口为53(domain),953(mdc,远程控制使用)。

2、BIND安装

  • 在服务端:在这里插入图片描述

直接执行命令:

[root@server1 ~]# yum install -y bind
[root@server1 ~]# rpm -qc bind     ###查看主配置文件

在这里插入图片描述
查看named所打开的端口号:

[root@server1 ~]# systemctl start named
[root@server1 ~]# systemctl status named

在这里插入图片描述

[root@server1 ~]# netstat -antlupe |grep named

在这里插入图片描述
设置配置文件:vim /etc/resolv.conf
在这里插入图片描述
在这里插入图片描述

  • 在客户端:
    更改本地DNS缓存指向为服务器:
[root@server1 html]# vim /etc/resolv.conf 

在这里插入图片描述

[root@server1 html]# dig www.baidu.com

在这里插入图片描述
成功拉!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值