目录
本章概要
介绍DNS域名解析服务的原理和使用。
一、DNS基础
1、DNS是什么?
DNS域名系统 (Domain Name System 缩写为:DNS)是因特网的一项核心服务,它作为可以将 域名 和 IP地址 相互映射的一个分布式数据库,能够使人更加方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS的作用:
正向解析: 根据域名查找对应的IP地址(A记录)
反向解析: 根据IP地址查找对应的域名(反垃圾邮件的验证)(P记录)
分离解析: 同一个dns服务器,同一个域名情况下,不同网段进行访问会解析出不同的IP地址。
注意:
反向解析: ip 解析为 域名 :只能1对1(假如虚拟化的话,可以多对一)
正向解析:域名 解析为 ip :可以多对一,ip主机可以设置多台,起到备份冗余作用。
2、DNS系统服务类型
2.1 主域名服务器
-
特定DNS区域的权威服务器,具有唯一性
-
负责维护该区域所有 域名->IP地址 的映射记录
-
需要自行建立所负责区域的地址数据文件
解释: 负责维护一个区域的所有域名信息,是特定的所有新的权威信息源,数据可以修改,构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
2.2 从域名服务器
-
也成辅助域名服务器,是对主域名服务器的热备份
-
其维护的 域名-> IP地址 记录来源于主域名服务器
-
需要从主域名服务器自动同步区域地址数据库
解释: 当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务,从域名服务器提供的解析结构不是由自己决定的,而是来自主域名服务器。构建从域名服务器时,需要制定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
2.3 缓存域名服务器
只提供域名解析结构的缓存功能,目的在于提高查询速度和效率,但没有域名数据库,它从某个远程服务器取得每次域名服务器查询的结构,并将它放在高速缓存中,以后查询相同的信息时用它给予相应,缓存域名服务器不是权威性服务器,因为提供的所有信息都是间接信息,构建缓存域名服务器时,必须设置根域或指定其它DNS服务器作为解析来源。
2.4 转发域名服务器
负责所有非本地域名的本地查询,转发域名服务器接到查询请求后,在其缓存中查找,如果找不到就将请求一次转发到指定的域名服务器,直到查看到结果为止,否则返回无法映射的结果。
3、DNS使用的协议以及端口号
DNS的默认端口为53端口,DNS端口分为TCP和UDP
TCP是用来做区域传送,多用于主从同步
-
在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。
-
解释: 从服务器会同步主服务器的数据。
UDP是用来做DNS解析的
-
域名:通常由一个完全合格域名(FQDN)标识。
-
FQDN有严格的命令限制,长度不能超过256个字节,只允许a-z,0-9,A-Z和减号表示。
-
FQDN=hostname + DomainName(注意:最前面的一定是主机,左后一个点表示根域,根域通常省略不写。)
4、域名体系结构
DNS整个结构图是树状结构,最顶层称为根域,用点“ . " 表示,相应服务器称为根服务器,整个域名空间的解析权都归根服务器所有。
-
根域: 位于树状结构最顶层,用“ . ”表示。
-
顶级域: 一般代表一种类型的组织机构或国家地区
-
二级域: 用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理。
-
子域: 二级域下所创建的各级域统称子域,各个组织或用户可以自由申请注册自己的域名。
-
主机: 主机位于域名空间最下层,就是一台具体的计算机。
顶级域和二级域的区别
-
顶级域是代表类型的组织或国家地区,二级域属于顶级域之下的域名。
-
当我们访问一个网址时,有些网址没有顶级域(国家地区),那么它的二级域就会充当顶级域,如果有的网址有顶级域的话,我们访问该网址时,顶级域也可以不用加上,因为顶级域代表的国家地区,我们在国内访问该网址会默认国家地区。
-
而且有一些网址没有向根域申请顶级域(因为网址范围较小,国内够用),那么在根域上也不会有顶级域的对应关系。自然它的二级域就成为了顶级域。
组织域和地理域(顶级域)
组织模式顶级域名 | 含义 | 地理模式顶级域名 | 含义 |
---|---|---|---|
com | 商业组织 | cn | 中国 |
edu | 教育机构 | hk | 香港 |
gov | 政府部门 | mo | 澳门 |
Mil | 军事部门 | tw | 台湾 |
net | 网络供应商 | us | 美国 |
org | 团体组织 | uk | 英国 |
int | 国际组织 | jp | 日本 |
-
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用。
-
8.8.8.8是Google公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用
-
223.5.5.5和223.6.6.6:阿里云DNS
5、两种查询方式
5.1 递归查询
递归查询是一种DNS服务器的查询模式,在该模式下DNS服务器接收到客户机请求,必须使用一个准确的查询结构回复客户机,如果DNS服务器本地没有存储查询DNS信息,那么该服务器会询问其它服务器,并将返回结果提交给客户机。
解释: 就是客户机发送请求后自己只用等待结果即可,中间具体过程交给服务器实现。
5.2 迭代查询
当客户机发送查询请求时,DNS服务器并不是直接回复查询结构,而是告诉客户机另外一台DNS服务器地址,客户机再向这台DNS服务器提交请求,一次循环直到返回查询的结果为止。
解释: 客户机的其你去需要自己挨个去查询才能得到结果,服务器没有结果时候只会给你提供它服务器的弟子,而不会帮你请求查询,这与递归查询相反。
5.2 递归和迭代的区别
-
客户端--->本地DNS服务器,这部分属于 递归查询 ,返回的结果只有两种:查询成功或查询失败。
-
本地DNS服务器--->外网,这部分属于 迭代查询 ,又称作为重指引,返回的是最佳的查询点或主机地址。
6、访问百度的流程(重点)
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 服务器进行连接(三次握手建立连接)
4、建立连接通道后,根据http/https协议进行传输数据
7、网页内容详解(拓展)
例如:https://www.ky20.com./ky20/ky20.html
-
https: :表示传输协议
-
www.ky20.com. :表示域名,从右往左为根域,顶级域,子域,主机名
-
/ky20/ky20.html :表示访问的服务器的路径位置
(因为在linux中,一个页面就是一个文件,一个文件就有一个路径 ,假设/var/www/html/ky20/ky20/html是该网页的全路径)
其中 / 指的是网页的站点目录的起始位置(/=/var/www/html),ky20/ky20.html :表示该文件的具体位置
但是在使用的网页,路径是进行加密的,其中路径中的?(问号)表示页面中有动图。(静态页面:不动界面,没有动图;动态页面:有动图的界面)
所以当我们访问一个网页的时候,就是加载对方服务器的一个文件,那么访问的时候出现网页慢该如何解决?
为什么会慢,因为访问网页的时候,服务器是在本地磁盘中读取文件,所以速度较慢,那么可以将文件加载到内存中,可以提高读取速度,假如访问的时候有大量客户进行访问,那么该如何解决?
①在我们访问网页服务器的时候,在网页服务器前面会有一个缓存服务器,缓存服务可以分担网页服务的压力
②当我们通过网页进行访问时,网页会将服务器记录缓存在本地,下载再访问的时候,速度就会很快。
二、正向解析实验
1.1 安装bind服务,查看配置文件
安装DNS服务,服务名在安装包bind中
查看配置文件(全局配置文件、区域配置文件、区域数据配置文件)
1.2 全局配置文件配置及文件内容说明
进入全局配置文件
配置文件内容说明
vim /etc/named.conf options { listen-on-v6 poet 53 { 20.0.0.55; }; #监听53端口,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"; #内存统计文件的位置 allow-query { any; }; #允许使用本DNS解析服务的网段,也可用any代表所有
修改全局配置文件内容(监听端口地址、允许通过的主机)
监听端口解释:
①为了开启这个端口,
②主进程会占用这个端口,进行监听,接待请求。
设置子文件是哪个(写入进去后,该文件内容也会被执行,相当于一个函数被调用的意思是)
1.3 进入区域配置文件
进入区域配置文件
配置文件说明
zone "." IN { #正向解析“. "根区域 type master; #类型主服务器 file "ky20.com.zone"; #区域数据文件为ky20.com.zone,对应查找。 allow-update {none; }; #定义是否更新其它从服务器,none表示无从设备更新,有其它服务器可以设置其它服务器的ip地址。 };
首先选中正向还是反向解析,然后设置需要解析的域名,定义主服务器,定义区域数据文件的文件名(跟上面函数类似),是否允许其它主机从这进行更新数据。
注意:该配置文件可以进行正向解析和反向解析的定义
1.4 区域数据配置文件
查看以前的区域数据文件的路径位置,进入位置后
以原区域数据配置文件的为模板,复制一份在本地,并且修改名称为区域配置文件所指定的文件名。
进入修改后的区域数据配置文件中
区域数据配置文件内容介绍
$TTL 1D #设置缓存解析结果的有效时间 @ IN SOA ky20.com. admin.ky20.com. ( 0; serial . 1D; refresh 1H; retry 1W; expire 3H ) ; minimum NS ky20.com. #记录当前区域的DNS服务器的名称 A 20.0.0.55 #记录主机IP地址 IN MX 10 mail.ky20.com. #MX为邮件交换记录,数字越大优先级越低 www IN A 192.168.100.100 #记录正向解析www.ky20.com对应的IP mail IN A 192.168.100.100 #记录正向解析mail.ky20.com对应的IP ftp IN CNAME www #CNAME使用别名,ftp是www的别名 * IN A 192.168.100.10 #泛域名解析,“*"代表任意主机名
设置域名和ip的映射,以及各种主机名所对应的关系(配置的时候注意下面的点)
1.5 启动服务、关闭防火墙
1.6 测试是否可解析域名
开启另一台虚拟机系统,配置DNS
然后进行解析域名
三、总结
DNS就是一个域名解析服务
可以正向解析:将域名解析成ip地址
也可以反向解析:将ip地址解析成域名
域名的结构
从 右往左看:
-
. 表示根域。
-
cn表示顶级域(部分网址没有,因为它代表过家,大型网址向国外请求才会分配到)。
-
com:表示二级域(当前面的顶级域不存在时,它就是顶级域)
-
baidu :表示子域。
-
www :表示主机名。
域名解析过程
主要有递归查找和迭代查找
-
递归查询:客户机只要发出解析的请求,递归查询都会返回一个结果,不管是否能查询到。
-
迭代查询:客户机发出解析请求,迭代查看不会返回一个结果,而会请求其它服务器,直到最终返回查询结果为止。