TCP/IP协议原理与应用
第8章 DNS 学 习 要 点 DNS体系 域名空间 DNS区域 DNS资源记录 DNS解析原理 DNS报文 DNS部署
8.1 DNS体系 层次名称空间 hosts文件 早期的TCP/IP网络用一个名为hosts的文本文件对网内的所有主机提供名称解析 在名称空间中引入层次结构,而且这种结构与管理机构的层次存在对应关系。 将名称空间分成若干子空间,每个机构负责一个子空间的管理。 授权管理机构可以将其管理的子名称空间进一步划分,授权给下一级机构管理,而下一级又可以继续划分它所管理的名称空间。 整个名称空间呈一种树形层次结构。 hosts文件 早期的TCP/IP网络用一个名为hosts的文本文件对网内的所有主机提供名称解析 该文件是一个纯文本文件,又称主机表,可用文本编辑器软件来处理,这个文件以静态映射的方式提供IP地址与主机名的对照表 127.0.0.1 linuxsrv1 localhost.localdomain localhost
8.1 DNS体系 域名空间 DNS结构
8.1 DNS体系 域名空间 域名标识 这个树形结构又称为域名空间(domain name space) 每个域都可用相对名称或绝对名称来标识 相对于父域表示一个域,可用相对域名; 绝对域名指完整的域名,称为FQDN,采用从节点到DNS树根的完整标识方式,并将每个节点用符号“.”分隔。 要在整个Internet范围内来识别特定的主机,必须用FQDN。 FQDN有严格的命名限制
8.1 DNS体系 区域(zone) 概念 区域和域之间的关系 区域通常表示管理界限的划分,是DNS名称空间的一个连续部分 它开始于一个顶级域,一直到一个子域或是其他域的开始 区域管辖特定的域名空间,它也是DNS树形结构上的一个节点,包含该节点下的所有域名,但不包括由其他区域管辖的域名 区域和域之间的关系
8.1 DNS体系 域名系统 组成部分 域名体系示例 名称空间:指定用于组织名称的域的层次结构。 资源记录:将域名映射到特定类型地址的资源信息,注册或解析名称时使用。 DNS服务器:存储资源记录并提供名称查询服务的程序。 DNS客户端:也称解析程序,用来查询服务器获取名称解析信息 域名体系示例
8.1 DNS体系 DNS服务器 DNS服务器的解析数据 DNS服务器的类型 DNS服务器以区域文件(或数据库)存储域名解析数据。 • 由管理员编辑或更新原始区域文件。 • 从其他域名服务器复制区域文件。 • 通过向其他DNS服务器查询来获取具有一定时效的缓存信息。 DNS服务器的类型 主名称服务器(primary name server):拥有一个区域文件的原始版本。 从名称服务器(second name server):又称辅助名称服务器,名称空间信息来自主域名服务器,从其他主域名服务器那里复制一个区域文件。 惟高速缓存服务器(caching only server):没有任何区域文件,它将收到的解析信息存储下来,并再将其提供给其他用户进行查询,直到这些信息过期为止。 转发服务器(forwarding server):向其他DNS服务器转发不能满足的查询请求。
8.1 DNS体系 DNS资源记录 组成部分 域名(owner name):用于确定资源记录的位置,即拥有该资源记录的DNS域名。 生存时间(TTL):指定一个资源记录在其被丢弃前可以被缓存多长时间。 类(classic):说明网络类型,一般使用IN类,表示Internet类。 类型(type):一个编码的16位数值指定资源记录的类型。 记录数据(RDATA):说明域中该资源记录有关的信息,通常就是解析结果。
8.1 DNS体系 DNS资源记录 常用的资源记录类型 类 型 名 称 说 明 SOA Start of Authority(起始授权机构) 类 型 名 称 说 明 SOA Start of Authority(起始授权机构) 设置区域主域名服务器(保存该区域数据正本的DNS服务器) NS Name Server(名称服务器) 设置管辖区域的权威服务器(包括主域名服务器和辅助域名服务器) A Address(主机地址) 定义主机名到IP地址的映射 CNAME Canonical Name(规范别名) 为主机名定义别名 MX Mail Exchanger(邮件交换器) 指定某个主机负责邮件交换 PTR Pointer(指针) 定义反向的IP地址到主机名的映射 SRV Service(服务) 记录提供特殊服务的服务器的相关数据
8.1 DNS体系 DNS动态更新(DDNS) DNS动态更新将DNS服务器与DHCP服务器结合起来,允许客户端动态地更新其DNS资源记录,从而减轻手动管理工作。 RFC 2136 对DNS动态更新作了规定。 在DDNS中,当域名和地址的绑定确定后,通常DHCP就给主名称服务器发送这个信息。主名称服务器更新相应区域。 主名称服务器可以主动向从服务器发送关于区域的变化的报文,从服务器也可以定期联系主服务器检查是否有任何变化,获知区域数据变化后,从服务器就请求关于整个区域的数据(区域传输)。 为安全起见,防止在DNS记录中的未授权的改变,DDNS可以使用认证机制。
8.2 DNS解析原理 正向解析与反向解析 区域管辖与权威服务器 正向解析:根据计算机的DNS名称(即域名)解析出相应的IP地址。 反向解析:根据计算机的IP地址解析其DNS名称,多用来为服务器进行身份验证。 区域管辖与权威服务器 区域是授权管辖的,区域在权威服务器上定义,负责管理一个区域的DNS服务器就是该区域的权威服务器 每台DNS服务器只对域名体系中的一部分进行管辖。不同的DNS服务器有不同的管辖范围。
8.2 DNS解析原理 区域委派 DNS基于委派授权原则自上而下解析域名,根DNS服务器仅知道顶级域服务器的位置,顶级域服务器仅知道二级域服务器的位置,依此类推,直到在目标域名的授权DNS服务器上找到相应记录。 将DNS名称空间分割成一个或多个区域进行管辖。 一种是将父域的权威服务器作为子域的权威服务器,它所有的数据都存在于父域的权威服务器上 另一种是将子域委派给其他DNS服务器,它所有的数据存在于受委派的服务器上。 委派(Delegation,又译为“委托”)是DNS成为分布式名称空间的主要机制。 它允许将DNS名称空间的一部分划出来,交由其他服务器负责。 区域委派作用 (1)减少了DNS服务器的潜在负载 (2)减轻管理负担,分散管理使得分支机构也能够管理它自己的域 (3)负载平衡和容错。
8.2 DNS解析原理 高速缓存 为减少DNS查询时间以提高效率,DNS使用高速缓存机制 如果同一客户端或另一个客户端请求同样的名称查询,它就检查高速缓存并回答这个问题。 如果服务器存储在高速缓存的解析记录时间过长,则可能会将过时的解析记录发送给客户端。要解决这个问题,可以采用两种方案。 (1)权威服务器为资源记录附上生存时间(TTL)字段 (2)DNS要求每一台服务器对每一条进行高速缓存的记录保留一个TTL计数器。高速缓存定期地查询核查并清除TTL到期的那些记录。
8.2 DNS解析原理 权威性应答与非权威性应答 权威性应答 非权威性应答 所谓非权威的查询结果来源于非权威DNS服务器,是该DNS服务器通过查询其他DNS服务器而不是本地解析库而得来的。 非权威性应答类型 (1) 查询其他DNS服务器直到获得结果,然后返回给客户端。 (2)指引客户端到上一级DNS服务器查找。 (3)如果缓存有该记录,直接用缓存中的结果回答。
8.2 DNS解析原理 递归查询与迭代查询 递归查询 递归查询要求DNS服务器在任何情况下都要返回结果。
8.2 DNS解析原理 递归查询与迭代查询 迭代查询 递归与迭代相结合的DNS查询 将对DNS服务器进行查询的任务交给DNS客户端,DNS服务器只是给客户端返回一个提示,告诉它到另一台DNS服务器继续查询,直到查到所需结果为止。 一般DNS服务器之间的查询请求属于迭代查询。 递归与迭代相结合的DNS查询
8.2 DNS解析原理 域名解析过程
8.3 DNS报文 DNS报文结构
8.3 DNS报文 DNS报文首部格式 标识符(ID) ID字段由产生查询的程序自动分配的标识符,长度为16位,用于将DNS查询与其应答关联起来。 DNS客户端在每次发送查询请求时使用不同的ID,服务器在相应的应答中再重复这个ID。
8.3 DNS报文 DNS报文首部格式 标志和代码 QR:查询/应答标志,用来区别查询和应答 Opcode:操作码,用来定义包含在该报文中的查询类型。 AA:权威性应答标志,在应答报文中有效 TC:截断(Truncation)标志,1表示该报文由于长度大于传送通道上准许的长度而被截断。 RD:期望递归(Recursion Desired)标志,长度为1位。 RA:递归可用(Recursion Available)标志,长度为1位。 Z:保留将来使用,长度为3位。 RCODE:应答代码(Response code),长度为4位,用来表示应答报文中的差错状态。
8.3 DNS报文 DNS报文首部格式 计数器 此类字段均为无正负号16位整数,用于表示条目或资源记录的数量。 QDCOUNT:指定问题部分中条目的数量,即查询数。 ANCOUNT:指定应答部分中资源记录的数量。 NSCOUNT:指定权威记录部分中名称服务器资源记录的数量。 ARCOUNT:指定附加记录部分中资源记录的数量。
8.3 DNS报文 问题部分格式 QNAME:查询名称,是可变长字段。 QTYPE:查询类型,两个八位位组代码,长度16位,它指定查询的类型。 QCLASS:查询类,两个八位位组代码,指定查询的类。
8.3 DNS报文 资源记录格式 NAME:名称,可变长字段,指该资源记录匹配的域名。 TYPE:类型,两个八位位组代码,长度16位,指定资源记录的类型 CLASS:类,两个八位位组,指定RDATA字段中数据的类 TTL:生存时间,32位无正负号整数,指定资源记可以被缓存的时间 RDLENGTH:资源数据长度,无符号16位整数,指定RDATA字段的长度 RDATA:资源数据,可变长度字段,是资源记录的具体内容。
8.3 DNS报文 资源记录格式 资源数据格式 种类 说明 数字 用八位位组表示数,例如IPv4地址是4个八位组整数,而IPv6地址是一个16个八位组整数 域名 可用标签序列来表示。每一个标签前面有1字节长度字段,它定义标签中的字符数。长度字段的两个高位永远是0(00),标签的长度不能超过63 偏移指针 域名可以用偏移指针来替换。偏移指针是2字节字段,它的两个高位置为1(11) 字符串 用1字节的长度字段后面跟着长度字段中定义的字符数。长度字段并不像域名长度字段那样受限。字符串可以多达256个字符(包括长度字段)
8.3 DNS报文 报文压缩 为减小报文大小,DNS使用去除报文中域名重复的压缩方案。 最前面的两个高位是两个1,这就可以使得指针能够与表示域名的标签区分开来。 这种压缩方案使得DNS报文中的域名能够用以下几种形式表示: • 用0八位位组结束的标签序列 • 指针 • 用指针结束的标签序列
8.3 DNS报文 报文传输 使用UDP 使用TCP 在向服务器的特定地址重复查询前,客户端应当尝试其他服务器和服务器其他地址。 如果可能,重传间隔应当基于前面的统计量。过于频繁的重传一般会导致响应速度减慢。根据客户端连接到它期盼的服务器的畅通情况,最小重传间隔应当为2~5秒。 使用TCP 服务器不应当阻止等待TCP数据的其他活动。 服务器应当支持多连接。 服务器应当假设客户端将发起连接关闭,应当推迟关闭它的连接,直到所有未解决的客户端请求都被满足。 如果需要关闭休眠的连接以回收资源,服务器应当等待,直到连接空闲大约两分钟。
8.3 DNS报文 验证分析DNS报文 使用nslookup工具进行DNS查询 非交互模式的语法格式 交互模式常用子命令 • server:改变要查询的默认DNS服务器,使用当前默认服务器查找域信息。 • lserver:改变要查询的默认DNS服务器,使用初始服务器查找域信息。 • set:设置查询参数,包括查询类型、搜索域名、重试次数等。
8.3 DNS报文 验证分析DNS报文 捕获DNS流量验证报文格式 DNS数据包列表
8.3 DNS报文 验证分析DNS报文 捕获DNS流量验证报文格式 DNS查询数据包
8.3 DNS报文 验证分析DNS报文 捕获DNS流量验证报文格式 DNS应答数据包
8.3 DNS报文 验证分析DNS报文 捕获DNS流量验证报文格式 DNS应答数据包回答部分
8.3 DNS报文 验证分析DNS报文 捕获DNS流量验证报文格式 DNS应答数据包权威部分
8.3 DNS报文 验证分析DNS报文 捕获DNS流量验证报文格式 DNS应答数据包附加部分
8.4 DNS部署 DNS规划 域名空间规划 仅在内网中使用内部DNS名称空间 仅在Internet使用外部DNS名称空间
8.4 DNS部署 DNS规划 DNS服务器规划 DNS服务器规划决定网络中需要的DNS服务器的数量及其角色(配置类型)。 主DNS服务器负责基本的域名解析服务,对于需要管理域名空间的环境来说,至少部署一台主DNS服务器,负责管理区域,以解析域名或IP地址。 规模较大的网络,要提供可靠的域名解析服务,通常会在部署主DNS服务器的基础上,再部署一台从DNS服务器。 为减轻网络和系统负担,可以将本地DNS服务器设置为高速缓存DNS服务器。 转发服务器一般用于用户不希望内部服务器直接和外部服务器通信的情况下。
8.4 DNS部署 DNS服务器配置 (1)安装DNS服务器软件。 (2)编辑DNS主配置文件。主配置文件用于实现DNS服务器级的配置。 (5)配置DNS转发服务器,将非本地域的域名解析请求转发到ISP提供的DNS服务器。
8.4 DNS部署 主/从DNS服务器部署 概述 主/从服务器数据同步过程 一般要在部署主DNS服务器的同时,部署一台或多台从DNS服务器,以提高DNS服务器的可用性。 服务器管理多个不同的主区域和从区域。对每个区域来说,管理其主区域的服务器是该区域的主服务器,管理其从区域的服务器是该区域的从服务器。 从DNS服务器与主DNS服务器的区别主要在于数据的来源不同。 主/从服务器数据同步过程
8.4 DNS部署 主/从DNS服务器部署 从服务器用处 主/从DNS服务器的区域文件 主/从DNS服务器之间区域更新与传输 就近响应客户端请求有助于减轻网络负载 主/从DNS服务器的区域文件 主服务器需要编辑主配置文件,定义正向解析区域和反向解析区域 从服务器中不用建立区域文件,而从主DNS服务器中接收并保存区域文件 主/从DNS服务器之间区域更新与传输 传统方法是基于IP地址进行限制和授权 强烈建议通过TSIG来对数据更新进行密码鉴定 TSIG以MD5 散列表数字签名方式认证DNS服务器之间的数据传输。
第1章 TCP/IP协议基础 学 习 要 点 网络通信协议 TCP/IP的组织机构 RFC OSI参考模型 TCP/IP协议簇 协议分析 Wireshark