DNS(1)

DNS

一、DNS是什么

DNS是域名系统的缩写,是因特网单位一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

二、DNS有什么作用

DNS的作用就是将域名解析成IP地址,来完成客户机对服务器的访问,当我们上网的时候,实际上访问www.baidu.com就是是访问他的IP地址。

在以前用户上网访问网页的时候都是直接输入IP地址,但是IPV4地址本身就有32位,IPV6的地址更长,不方便记忆,而当一个公司的IP地址变更的时候所有用户想要访问又要重新输入新的IP地址。所以就衍生出了域名,方便记忆。而当某公司的IP地址有所变更的时候,他的域名不需要改变只是域名所映射的IP地址变更了而已,对于用户来说没有任何区别。

所以说IP地址是面向主机的,而域名是面向用户的。而DNS的作用就是代替电脑跟DNS服务器进行请求和查询,简化网络配置和集中管理;简单来说就是方便用户访问,也方便主机管理。

三、域名的分层结构

那想要了解DNS首先我们要了解什么是域名——由于英特网的用户数量很多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”是名字空间中一个可以被管理的划分。从语法上讲,每一个域名都是由有标号(label)的序列组成,而各标号之间用“.”隔开。域名可以划分为各个子域,子域还可以继续划分为子域的子域,这样就形成了:顶级域、主域名、子域名等,如下图:

根域用“.”表示,对应的是根服务器,整个域名空间的解析权都归跟服务器所有;但是根服务器无法承担整个因特网的负载,所以他采取一个委派机制,在根域下设置了顶级域,然后将不同的顶级域的解析权委派给了对应的顶级域的服务器。就是为了缓解根域的负载,设置了一些二级域,又在二级域下设置三级域等。像是个全球性质的传销组织。

举例:

“.com”是顶级域名。

“aliyun.com”是主域名(也可称为托管一级域名),主要指企业名。

“example.aliyun.com”是子域名(也可称为托管二级域名)。

“www.example.aliyun.com”是子域名的子域。(托管三级域名)

四、DNS的分层结构

那既然域名是一个分层的结构,那么DNS服务器也是对应的层级结构。

有了域名结构,还需要有域名DNS服务器去解析域名,且需要由遍及全世界的DNS服务器去解析,域名DNS服务器实际上就是装有域名系统的主机。

域名解析过程涉及4个DNS服务器:

分类作用
根DNS服务器(Root)本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查询,并获取顶级域名服务器的IP地址。是所有DNS服务器的爸爸。
顶级域名服务器(TLD)负责管理在该顶级域名服务器下注册的二级域名,如“www.baidu.com”,则.com是顶级域名服务器,在向他查询时,可以返回二级域名“baidu.com”所在的权威域名服务器地址。
权威域名服务器(authoriatative)在特定区域内具有唯一性,负责维护该区域内的域名与IP抵制之间的对应关系,例如云解析DNS。
本地域名服务器(DNS resolver 或Local DNS)本地域名服务器是响应来自客户端的递归请求,并最终跟踪知道获取到解析结果的DNS服务器,例如本机自动分配的DNS,中国电信给你的DNS,谷歌的8.8.8.8公共DNS。

每层的域名上都有自己的域名服务器,最顶层的是根域名服务器。

每一集域名服务器都知道下级域名服务器的IP地址,以便一级一级向下查询。

四、DNS解析过程

DNS中有一张域名和相对应的IP地址的表,类似于路由器中的路由表。用户主机访问域名的时候,DNS服务器解析成IP地址提供给主机使用。DNS查询的结果通常会在本地域名服务器中进行缓存,如果本地域名服务器中有缓存的情况下,则会跳过DNS查询步骤,很快返回解析结果。

但是当本地域名服务器没有缓存的情况下,DNS查询则需要8个步骤:

1.用户在浏览器中输入“www.baidu.com”,则本地域名服务器开始进行递归查询。

2.本地域名服务器采用迭代查询的方法,向根域名服务器进行查询。

3.根域名服务器告诉本地域名服务器,下一步应该查询的顶级域名服务器.com TLD的IP地址。

4.本地域名服务器向顶级域名服务器.com TLD进行查询

5…com TLD服务器告诉本地域名服务器,下一步查询baidu.com权威域名服务器的IP地址。

6.本地域名服务器向baidu.com权威域名服务器发送查询。

7.baidu.com权威域名服务器告诉本地域名服务器所查询的主机IP地址。

8.本地域名服务器最后把查询的IP地址响应给用户浏览器。

9.一旦DNS查询的8个步骤成功完成,浏览器就能够对网页发出请求:

1.用户浏览器向IP地址发出HTTP请求

2.该IP处的服务器返回要在浏览器中呈现的网页。

五、DNS术语

1.递归查询

指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有储存与之对应的信息,则该服务器需要询问其它服务器,并将返回的查询结果提交给用户。

递归就是把一件事情交给别人,如果事情没有办完,哪怕已经办了很多,都不要把结果告诉我,我要的是你的最终结果,而不是中间结果;如果你没办完,请你找别人办完。主要是本地域名服务器,它是个大冤种。

2.迭代查询

指DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向另一台DNS服务器提交请求,这样依次反复,直到返回查询结果。

迭代则是我交给你一件事,你能办多少就告诉我你办了多少,然后剩下的事情就由我来办。就像去各种部门办证。

3.DNS缓存

DNS缓存是将解析数据储存在靠近发起请求的客户端的位置。也可以说DNS数据可以缓存在任意位置,最终目的是以此减少递归查询的过程,可以更快的让用户获得请求结果。就像路由表。

4.TTL(生命周期)

这个值表示本地域名服务器,域名节其结果可缓存的最长时间,缓存时间到期后本地域名服务器会删除该解析记录的数据,删除之后,如果用户请求域名,则会重新进行递归/迭代查询。

5.DNS Query Flood Attack

指域名查询攻击,攻击方法是通过操控大量的傀儡机器,发送海量的域名查询请求,当每秒域名查询请求次数超过DNS服务器可承载的能力时,则会造成解析域名超时从而直接影响业务的可用性。

六、DNS的记录类型

DNS支持A、AAAA、CNAME、MX、TXT、SRV、NS、CAA记录类型

记录类型功能描述
AIPV4记录,支持将域名映射到IPV4地址使用
AAAAIPV6记录,支持将域名映射到IPV6地址使用
CNAME别名记录,支持将域名指向另外一个域名,如:www.baidu.com和image.baidu.com都是百度
MX邮件交互记录,支持将域名指向邮件服务器地址,如发送邮件给@XX.qq.com,那么用户的邮件会通过DNS查找qq.com的这个域名的MX记录,如果存在,就会发送给指定邮件的服务器
TXT文本记录,是任意可读的文本DNS记录
SRV服务器资源记录,用来标识某台服务器使用了某个服务,常见于微软系统的目录管理
NS名称服务器记录,支持将子域名委托给其他DNS服务商解析,指定由哪个DNS服务器来解析你的域名
CAACAA资源记录,可以限定域名颁发证书和CA(证书颁发机构)之间的联系

七、DNS客户端检测工具

正、反解查询命令:host,nslookup,dig

1.host命令

host [选项] [域名或IP] [server]

常用选项:-a:列出该主机详细的各项主机名称设定资料

常用参数:server:host命令默认是使用/etc/resolv.conf文件中的DNS主机来查询的,若设置该参数,则使用这里设置的DNS主机进行查询。

因为host不是Linux内部命令所以需要安装:

yum -y install bind-utils

应用场景:

host -a 域名:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1kjwcgJ-1654445268501)(https://s2.loli.net/2022/06/05/h6eT3QKLnqI1BDC.png)]

使用自定义的DNS主机解析域名对应的IP地址等信息:

2.nslookup命令

nslookup [域名或IP]

域名解析工具,就是查DNS信息用的命令。使用/etc/resolv.conf这个文件作为DNS服务器的来源选择。

应用场景:

查看本机的DNS:

3.dig命令

dig [选项] [域名]

域名查询工具,可以用来测试域名系统工作是否正常。功能与nslookup相似。

系统中默认是没有dig命令的,所以需要安装:

yum -y install bind-utils

常用选项:

@:dig命令默认使用/etc/resolv.conf文件中的DNS主机来解析域名,若设置该参数,则使用这里设置的DNS主机进行解析。

-b:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求。

应用场景:

dig  www.baidu.com

dig @8.8.8.8 www.baidu.com #使用自定义的DNS解析

八、DNS客户端配置

centos7中手动设置/etc/resolv.conf里的DNS,系统会重新覆盖或者清除,一般使用传统方法——修改NetworkManger配置。

1.修改NetworkManger配置

1.修改/etc/NetworkManger/networkmanger.conf文件,在main部分添加“dns=none”选项:

2.重启NetworkManger服务

systemctl restart NetworkManger.service

3.手动修改/etc/resolv.conf

2.网卡配置文件指定DNS

1.修改网卡配置文件:

2.重启网络

service network restart

九、应用场景

注册域名

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值