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.