目录
一、DNS基本概念
1.1本地名称解析配置文件:hosts
1.2 修改DNS优先级
二、域名的分层结构
三、DNS解析过程
四、DNS术语
4.1 递归查询
4.2 迭代查询
4.3 DNS缓存
4.4 TTL
4.5 IPV4、IPV6双栈技术
4.6 TLD Server
4.7 DNS Resolver
4.8 Root Server
4.9 DNS Query Flood Attack
4.10 URL转发
4.11 edn-client-subnet
4.12 DNSSEC
五、DNS记录类型
六、 DNS客户端检测工具
6.1 host
6.2 nslookup
6.3 dig
七、 客户端配置
八、正向解析
8.1 资源记录
8.1.1 SOA记录
8.1.2 NS记录
8.1.3 MX记录
8.1.4 A记录
8.1.5 PTR记录
8.1.6 CNAME别名记录
8.2 配置过程
总结
DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
- Linux: /etc/hosts
- windows: C:WindowsSystem32driversetchosts
1.写入hosts文件
2.ping
3.修改/etc/nsswitch.conf配置文件
4.再次ping
修改优先级的小实验,默认是hosts文件
鉴于互联网中的域名和IP地址对应关系数据库过于庞大,DNS域名解析服务采用了类似于目录树的层次结构来记录域名和IP地址之间的对应关系,从而形成了一个分布式的数据库系统,如图:
一级DNS服务器:专门负责一级域名的解析(一般代表一种类型的组织机构或国家地区)
二级DNS服务器:专门负责二级域名的解析
.com.cn
子域名DNS服务器:专门负责子域名的解析 也称为三级域名
常用主机名
- 每一层的域名上都有自己的域名服务器,最顶层的是根域名服务器
- 每一级域名服务器都知道下级域名服务器的IP地址,以便一级一级向下查询
当今世界的信息化程度越来越高,大数据、云计算、物联网、人工智能等新技术不断涌现,全球网民的数量每年也以10%的速度迅速增长。这些因素导致互联网中的域名数量激增,被访问的频率也进一步加大。为了为网民提供不简单、稳定且快速的域名查询服务,保证互联网的正常运转,提供了下面三种类型的服务器。
- 主服务器:在特定区域具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系
- 从服务器:从主服务器中或得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况
- 缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率
以查询www.linuxprobe.com为例:
当用户向网络指定的DNS服务器发起一个域名请求时,通常情况下会有本地DNS服务器向上级的DNS服务器发送迭代查询请求;如果该DNS服务器没有要查询的信息,则会进一步向上级DNS服务器发送迭代查询请求,直到获得准确的查询结果为止。其中最高级、最权威的根DNS服务器共有13台,分布位置、管理单位及IP地址如下表:
上面是IPV4的根服务器
IPV6的根服务器:全球共25个,中国1主3从;美国1主2从......
如果主机所查询的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果只有两种,一是所查询的IP地址,二是报错,表示无法查询到所需的IP地址
递归查询相当于你问别人借钱,别人没钱也要想办法借到钱给你
当根域名服务器收到本地域名服务器发出的迭代查询的请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询,而不是替本地域名服务器进行后续的查询。根域名服务器通常把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询;顶级域名收到请求后,要么给出所查询的IP地址,要么告诉本地域名服务器下一步应该向哪一个权威域名服务器查询,本地域名服务器就这样进行迭代查询,最后把结果返回给主机
迭代查询相当于你问别人借钱,别人没钱,告诉你应该找谁借
DNS缓存是将解析数据存储在靠近发起请求的客户端位置,也可以说DNS数据是可以缓存在任意位置,最终目的是以此减少递归查询过程,可以更快的让用户获得请求结果
这个值是告诉本地域名服务器,域名解析结果可缓存的最长时间,缓存时间到期后本地域名服务器则会删除该解析记录的数据,删除之后,如有用户请求域名,则会重新进行递归查询/迭代查的过程
在一个系统中可同时使用IPV6/IPV4这两个可以并行工作的协议栈
指顶级域名服务器
指本地域名服务器,它是DNS查找中的第一站,是负责处理发出初始请求的DNS服务器。运行商ISP分配的DNS如电信的114.114.114.114和谷歌的8.8.8.8等都属于DNS Resolver
指根域名服务器,当本地域名服务器在本地查询不到解析结果时,则第一步会向它进行查询,并获取顶级域名服务器的IP地址
指域名查询攻击,攻击方法是通过操纵大量傀儡机器,发送海量的域名查询请求,当每秒域名查询请求次数超过DNS服务器可承载的能力时,则会造成解析服务器超时从而直接影响业务的可能性
地址转向,通过服务器的特殊设置,将一个域名指向到另一已存在的站点
google提交了一份DNS扩展协议,允许DNS resolver传递用户的IP地址给authoritative DNS server
域名系统安全扩展,他是通过数字签名来保证DNS应答报文的真实性和完整性,可有效防止DNS欺骗和缓存污染等攻击,能够保护用户不被重定向到非预期地址值,从而提高用户对互联网的信任
解析域名对应的IP地址和别名等信息
语法格式:
常用参数:
示例1:
虽然可以看到www.baidu.com是www.a.shifen.com.的别名,但是我们不可以通过www.a.shifen.com.直接访问,虽然他们的域名指向相同,但是这个ip只绑定了www.baidu.com,当你用其他域名访问他的80端口的时候,会在应用层拒绝
示例2:
在使用nslookup之前,先确保已经安装了它,nslookup属于bind-utils包下一个命令
nslookup有两种工作模式:“交互模式”和“非交互模式”。在命令行中直接输入nslookup,无需输入任何参数即进入交互模式,由“>”提示
语法格式:
示例1:
示例2:
示例3:
它是一个用来灵活查询DNS的工具,它会打印出DNS域名服务器的回应,主要用来从DNS域名服务器查询主机地址信息
dig命令与nslookup命令功能基本相同,但是dig命令灵活性好、易用、输出清晰
语法格式:
示例1:
法1:/etc/resolv.conf是DNS客户机配置文件
法2:
两个DNS,一主一备
8.1.1 SOA记录
name: 当前区域的名字,例如"stevelu.com."
value: 有多部分组成
1.当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字
2.当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
例如:admin.stevelu.com
3.主从服务区域传输相关定义以及否定的答案的统一的TTL
TTL就是定义了这些东西:
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
8.1.2 NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如: ns.stevelu.org.
-
相邻的两个资源记录的name相同时,后续的可省略
-
对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
-
一个区域可以有多个NS记录
8.1.3 MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
-
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
-
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
8.1.4 A记录
name: 某主机的域名解析,例如:www.kgc.com
value:主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
8.1.5 PTR记录
PTR就是反向DNS
domain name pointer,可以粗略的理解为DNS反向
Domain Name Pointer. 是一个指针记录,用于将一个IP地址映射到对应的主机名,也可以看成是A记录的反向,通过IP访问域名,原来是通过域名访问IP
8.1.6 CNAME别名记录
资源记录解析可以参考下这篇文章
此时,对于外网而言,只是开启服务,换了DNS就可以访问www.baidu.com了,为何呢,因为bind服务自带13台根域服务器
接下来我们搭建可以让别人访问的服务
此时已经解析成功了
但是,如果我们访问一个网页的时候多打了wwww或者不想打www也能访问到该IP地址怎么办呢?
剩余的内容近期更新
写配置文件一定要细心,写错一点就会起不来