DNS系统简介

admin 2023年03月24日 428次浏览

1、名称解析与DNS

在 TCP/IP 网络中,设备之间的通信都是由 ip 地址实现的,但是数字形式的 ip 地址对于人们来说是很难记住的,因此就需要把 ip 地址转换成人们便于记忆的方式,这就是名字解析服务,它能把网站域名解析为对应的 ip 地址。名字解析服务还有一个功能,就是当主机的 ip 地址变化后,只需要修改名字解析服务里的记录就行,用户仍然可以使用原来的名字访问该主机

实现名字解析服务的方式

  • 本地名称解释配置文件(hosts,优先级最高)

    Windows:C:\Windows\System32\drivers\etc\hosts

    Linux:/etc/hosts

    示例:

    192.168.137.100 www.testsvr.cn

  • DNS

    DNS (域名系统)它作为将域名和 ip 地址相互映射的一个分布式数据库,能够使人们更方便的访问互联网

    DNS 基于 C/S 架构,服务器端使用 53/TCP 和 53/UDP 端口通信

  • BIND

    由 ISC 提供的 DNS 软件实现

1.1、域名结构

1.2、DNS服务查询过程

  • 客户端向 DNS 代理服务器发起 www.baidu.com 的 ip 查询
  • DNS 代理服务器(或其记录缓存)如果有该记录,就直接把对应的 ip 地址反馈给客户端
  • DNS 代理服务器(或其记录缓存)如果没有相关记录,那么 DNS 代理服务器就会向根域发起查询请求
  • 因为根域只记录了顶级域的记录,所以根域会把 com 顶级域服务器的 ip 地址反馈给 DNS 服务器
  • DNS 代理服务器得到 com 顶级域服务器的 ip 地址后,就会向 com 顶级域服务器发起 www.baidu.com 记录的查询,因为 com 只记录了 baidu.com 域名的记录,因此会把 baidu.com 域名服务器的 ip 记录反馈给 DNS 代理服务器
  • DNS 代理服务器再通过 baidu.com 的域名服务器查询到 www.baidu.com 的最终 ip 地址
  • 最后 DNS 代理服务器将 www.baidu.com 的 ip 地址反馈给客户端,同时在本地缓存一份记录,在老化时间到期之前,如果再有该记录的查询请求,可以直接将缓存中的记录反馈给客户端;在老化时间到期后,该记录将被释放,如果再有新的请求,经重复以上查询步骤

1.3、DNS查询类型

  • 递归查询

    当用户查询某一条 DNS 记录时,如果 DNS 代理服务器有记录,则直接反馈给用户;如果代理服务器没有记录,则会去逐级查询,直到获取到最终结果,然后反馈给用户,其中代理服务器逐级去查询的过程就是递归查询,可以理解为通过间接方式获取到最终结果

    递归查询的特点:反馈最终的结果,负责到底

  • 迭代查询

    就是用户向 DNS 代理服务器发送查询请求,DNS 代理服务器给用户反馈查询结果,这就是迭代查询

    迭代查询的特点:反馈最好的结果,不负责到底

1.4、域名完整的查询请求过程

客户端 —> hosts文件 —> 客户端缓存 —> DNS服务器 —> DNS服务器数据库 —> DNS服务器缓存 —> 根 —> 顶级域名 —> 二级域名

2、DNS服务相关概念与技术

2.1、DNS服务器类型

2.1.1、主DNS服务器

管理和维护所负责解析的域内解析库的服务器

2.1.2、从DNS服务器

从主服务器或从服务器中“复制”(区域传输)解析库副本

  • 序列号:解析库的版本号,主服务器解析库变化时,其序列递增
  • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔:从服务器请求同步失败后,再次尝试时间间隔
  • 过期时长:从服务器联系不到主服务器时,多长时间后停止服务
  • 通知机制:主服务器解析库发生变化时,会主动通知从服务器

2.2、区域传输

  • 完全传输:传送整个解析库
  • 增量传输:传递解析库变化部分

2.3、解析形式

  • 正向解析:把 FQDN 解析为 ip 地址

  • 反向解析:把 ip 地址解析为 FQDN

FQDN:全称域名,由主机名+域名构成

例如 www.baidu.com 就是一个合格的 FQDN,其中 www 是主机名,baidu.com 是域名

2.4、解析库分类

  • 正向区域
  • 反向区域

2.5、解析答案

  • 肯定答案:存在对应的查询结果
  • 否定答案:请求的条目不存在等原因导致无法返回结果
  • 权威答案:直接由存有此查询结果的 DNS 服务器(权威服务器)返回的答案
  • 非权威答案:由其他非权威服务器返回的查询答案

2.6、资源记录类型

区域解析库由众多的 RR(资源记录)组成,记录的类型包括:

  • SOA: 起始授权记录,一个区域解析库有且只能由一条 SOA 记录,该记录必须位于解析库的第一条记录
  • A: 把 FQDN 解析成 ip 地址
  • AAAA: 把 FQDN 解析成 ipv6 地址
  • PTR: 把 ip 地址解析成 FQDN
  • NS: 专用于标明当前区域的 DNS 服务器
  • CNAME: 别名记录
  • MX: 邮件交换器
  • TXT: 对域名进行标识和说明的一种方式,一般做验证记录时会使用此项

2.6.1、资源记录定义的格式

name    [TTL]    IN    RR_type    value
  • name: 主机名称,可以只写主机名(如:www),也可以写全名(如:www.testsvr.cn.),写全名时,需要注意后面的 “.”,如果缺少 “.”,那么系统就会认为这是个主机名,解析时,会自动在后面添加域名,最终解析出来的结果就是:www.testsvr.cn.testsvr.cn.
  • TTL: 更新缓存记录的时间,默认以秒为单位
  • IN: 固定字段
  • RR_type: 记录的类型
  • value: 记录值

注意:

1、TTL 可以全局继承

2、使用 “@” 符号可用于引用当前区域的名字

3、使用 “*” 可以通配所有主机名,这意味着输入任何主机名 + 域名都可以访问指定主机

4、同一个名字可以通过多条记录定义多个不同的值

5、同一个值也可能有多个不同的定义名字,通过不同的名字指向同一个值进行定义,可以通过不同的名字找到同一台主机

2.6.2、A记录

name:某个主机的 FQDN(如:www.baidu.com

value:主机名对应主机的 ip 地址

  • 示例

    # 只指定主机名
    www			600    IN		A     192.168.137.10
    
    # 指定全名,需要注意名称后面有个“.”
    www.testsvr.cn.		600    IN		A     192.168.137.10
    
    # 泛域名(不需要主机名,通过域名访问,如:baidu.com)
    @			600    IN		A     192.168.137.10
    
    # 通配域名
    *			600    IN		A     192.168.137.10
    

2.6.3、SQA记录

name:当前区域的名字(如:baidu.com.)

value:由多部份组成

注意:

1、当前区域的主 DNS 服务器的 FQDN,也可以使用当前区域的名字

2、当前区域管理员的邮箱地址中不能使用 “@” 符号,一般使用 “.” 代替(如:admin.testsvr.cn

3、主从服务区域传输相关定义以及否定的答案使用统一的 TTL

  • 示例

    testsvr.cn.    86400    IN    SOA    ns.testsvr.cn.    admin.testsvr.cn.    (
       0     # 序列号
       2H    # 刷新时间
       10m   # 重试时间
       1W    # 过期时间
       1D    # 否定答案的TTL值
       )
    

2.6.4、NS记录

name:当前区域的名字

value:当前区域的某 DNS 服务器的名字(如:ns.testsvr.cn.)

注意:

1、相邻的两个资源记录的 name 相同时,后续的可以省略

2、对 NS 记录而言,任何一个 ns 记录后面的服务器名字,都应该在后续由一个 A 记录

3、一个区域可以由多个 NS 记录

  • 示例

    testsvr.cn.			600    IN		NS     ns1.testsvr.cn.
    				600    IN		NS     ns2.testsvr.cn.
                 
    ns1.testsvr.cn. 		600    IN		A      192.168.137.10
    ns2.testsvr.cn.    		600    IN		A      192.168.137.20
    

2.6.5、MIX记录

name:当前区域的名字

value:当前区域的某个邮件服务器(smtp 服务器)的主机名

注意:

1、一个区域内,MIX 记录可以有多个,但每个记录的 value 前面应该有一个数字(0-99),表示该服务器的优先级,数字越小,优先级月高

2、对 MIX 记录而言,任何一个记录后面的服务器名字都应该在后续有一个 A 记录

  • 示例

    testsvr.cn.			600		IN		MX    10    mx1.testsvr.cn.
    				600		IN		MX    20    mx2.testsvr.cn.
                  
    mx1				600		IN		A     192.168.137.10
    mx2				600		IN		A     192.168.137.20
    

2.6.6、AAAA记录

name:某个主机的 FQDN

value:主机名对应主机的 ipv6 地址

  • 示例

    与 A 记录类似

2.6.7、PTR记录

name:ip

value:FQDN

注意:

1、ip 需要反过来写(如:192.168.137.10,需要写成 10.137.168.192)

2、ip 需要有特定后缀:in-addr.arpa

3、完整写法:10.137.168.192.in-addr.arpa.

4、网络地址和后缀可以省略,但主机地址仍然需要反写

  • 示例

    10.137.168.192.in-addr.arpa.    600    IN	PTR     www.testsvr.cn.
    10                              600    IN	PTR     www.testsvr.cn.
    

2.6.8、CNAME别名记录

name:别名的 FQDN

value:真实的 FQDN

  • 示例

    www.testsvr.cn.		600		IN		CNAME		websvr.testsvr.cn.
    websvr			600		IN		A     		192.168.137.10
    

2.7、子域授权

每个子域的名称服务器,都是通过其上级名称服务器在解析库进行授权,类似根域授权

.cn.    		IN    NS   ns1.cn.
.cn.    		IN    NS   ns2.cn.
ns1.cn.			IN    A    192.168.137.10
ns2.cn.			IN    A    192.168.137.20

# testsvr.cn. 在 .cn 的域名服务器上,解析库中添加资源记录
testsvr.cn.		IN    NS    ns1.testsvr.cn.
testsvr.cn.		IN    NS    ns2.testsvr.cn.