首页 > 代码库 > DNS(名称解析服务)
DNS(名称解析服务)
DNS and Bind
=========================================================================
概述:
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
相关知识
★Sockets:在互联网上基于套接字协议的通信一般都遵循C/S法则;
Client:客户端,发起应用请求的程序;
Server:响应请求(提供服务)的程序;
LISTEN:Socket(ip:port)
★传输层协议:TCP,UDP,SCTP
TCP:面向连接的协议,双方通信之前需要建立虚连接;
UDP:无连接的协议,双方无需通信之前事先建立虚连接;
DNS服务
1)介绍
★DNS:Domain Name Service 应用层协议。
C/S, 53/udp, 53/tcp(DNS服务在启动的时候会同时开启tcp和udp的53号端口)
★DNS作用:
将主机名解析成IP地址的过程;
解决了从域名(FQDN)到主机识别的IP地址之间的转换.
★本地名称配置解析文件:
/etc/hosts
缺点:只能作用于本主机,而不能同步更新所有的主机使用,并且当hosts文件很庞大是很难管理,因此就必须有一个统一的组织去记录管理域名和ip的对应关系。
★DNS结构
DNS是一个分布式、分层次的主机名管理架构,通过配置DNS服务器地址,主机不需要知道对应的ip地址就能通过主机名的形式访问互联网;
DNS利用类似倒状树的目录结构将主机名的管理分配在不同层级的DNS服务器当中,经过分层管理,每一级DNS服务器负责部分域名信息,这也就减轻了DNS服务器的负载,同时也方便记录的更新同步。
★FQDN(Full Qualified Domain Name):完整主机名
完整主机名由主机名和域名构成。比如,www.taobao.com当中,www就是web网站服务器的主机名,taobao.com就是域名;
主机名和域名之间用实心的点号来表示;
2)DNS域名
根域:
一级域名:Top Level Domain: tld(顶级域)
组织域:com, edu, mil, gov, net, org, int,
国家域:.cn, .ca, .hk, .tw...
反向域:
二级域名:如,.magedu.com、taobao.com
三级域名:如,.dns.magedu.com
每一级只负责对应下级的域的管理,其中根节点是有分布在世界各地的13台服务器组成,其中10台位于美国,另外3台设置于英国、瑞典和日本。
ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理。
◆如图所示域名层级结构图:
◆按其功能命名空间中用来描述 DNS 域名称的五个类别的介绍详见下表中,以及与每个名称类型的示例:
2)DNS解析
★解析流程:
1、在浏览器中输入www.qq.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
2、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
3、如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
4、如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
5、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.qq.com主机。
6、如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。
从客户端到本地DNS服务器是属于递归查询,而DNS服务器之间就是的交互查询就是迭代查询。
解析流程图如下:
3)DNS类型,解析方式
★DNS查询类型
递归查询:客户机和服务器之间的查询
迭代查询:DNS服务器与DNS服务器之间的查询
★DNS名称解析方式:
名称--->IP : 正向解析
IP --->名称:反向解析
注意:正反向解析是两个不同的名称空间,是两棵不同的解析树
★通常我们申请注册的域名是顶级域下的一个二级域(.com),申请成功之后,我们要想在这个域名中添加相应的主机来完成解析服务,还需要相应的DNS服务器,这样才能够完成域名解析服务。
★DNS服务器的类型:
·负责解析至少一个域:
主DNS服务器:
辅助DNS服务器:
·不负责域解析:
缓存DNS服务器:转发器
★一次完整地解析请求经历的过程:
Client-->hosts文件-->Dns Local Cache-->DNS Server(recursion递归)-->
自己负责解析的域:直接查询数据库并返回答案;
不是自己负责的解析域:Server Cache-->iteration(迭代)--> 根--> 顶级域
DNS-->二级域名DNS…
★解析答案:
·肯定答案:
·否定答案:请求的条目不存在等原因导致无法返回结果
·权威答案:由直接负责的DNS服务器返回的答案;
·非权威答案:
★主-从DNS服务器:
·主DNS服务器:维护所负责解析的域数据库的那台服务器;读写操作均可进行;
·从DNS服务器:从主DNS服务器那里或其他的从DNS服务器那里“复制”解析库;但只能进行读操作;
复制操作的实施方式:
序列号:解析库版本号,主服务器解析库变化时,其序列号递增;
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔;
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔;
过期时长:从服务器联系不到主服务器时,多久后停止服务;
“通知”机制:主服务器解析库发生变化时,会主动通知从服务器
·区域传送:
全量传送:axfr,传递整个解析库;
增量传送:ixfr,传递解析库变化的数据;
★区域(zone)和域(domain)
magedu.com域:
FQDN-->IP:正向解析库;正向区域
IP --->FQDN:反向解析库,反向区域
注意:
一般来说一个域由正向区域和反向区域组成,但并不是域就一定大于区域,如:父域的区域可能会比子域要大;
区域是物理概念,而域是逻辑概念。
★DNS是一个网络服务,因此就有对应的网络服务,因此就有对应的端口,其端口是53号,通常DNS在查询的时候是以udp这个快速的数据传输协议来查询的,但是一旦没有办法查询到完整的信息时就会再次以TCP协议来进行重新查询,因此DNS服务在启动的时候会同时开启tcp的53号端口和udp的53号端口
区域数据库文件
1)资源记录(Resource Record)简称rr
★区域解析库:由众多RR组成:
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:(Start Of Authority)起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须为解析库的第一条记录;
A:(internet Address)作用,FQDN --> IPv4;
AAAA: FQDN --> IPv6;
PTR: PoinTeR,IP --> FQDN;反解到的主机名;
NS: (Name Server)专用于标明当前区域的DNS服务器,一个区域解析库可以有多个NS记录;
CNAME:(Canonical Name)别名记录,一个主机可以有多个别名,但IP地址是一样的;
MX:Mail eXchanger,邮件交换器,有优先级,0-99,数字越小优先级越高;
★资源记录的定义格式:
语法:name [TTL] IN rr_type value
注意:
(1)TTL就是time to live,表示该记录被其他dns服务器保留到对方服务器上的缓存当中,并保持多少秒,可从全局继承;
(2)@可用于引用当前区域的名字;
(3)相邻的两条记录其name相同时,后面的可以省略;
(3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应;
(4) 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机而已;
=====================================================================================
每一种资源类型的定义方式如下:
★SOA记录
name: 当前区域的名字,例如“magedu.com.”
value: 有多部分组成
(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换,例如linuxedu.magedu.com
(3) 主从服务协调属性的定义以及否定的答案的统一的TTL
例如:
magedu.com. 86400 IN SOA ns.magedu.com. nsadmin.magedu.com. (
2015042201 ;序列号serial
2H ;刷新时间refresh
10M ;重试时间retry
1W ;过期时间expire
1D ;否定答案的TTL值
)
★NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如 ns.magedu.com.;
注意:一个区域可以有多个NS记录;
例如:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
★MX记录name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
注意:
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
例如:
magedu.com. IN MX 10 mx1.magedu.com.
magedu.com. IN MX 20 mx2.magedu.com.
注意:
(1) 对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
★A记录name: 某主机的FQDN,例如www.magedu.com.
value: 主机名对应主机的IPv4地址;
例如:
www.magedu.com. IN A 1.1.1.1
www.magedu.com. IN A 2.2.2.2
mx1.magedu.com. IN A 3.3.3.3
mx2.magedu.com. IN A 3.3.3.3
注意:
*.magedu.com. IN A 5.5.5.5
magedu.com. IN A 5.5.5.5
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址。
★AAAA记录name: FQDN
value: IPv6
★PTR记录
name: IP,
有特定格式,把IP地址反过来写 如:1.2.3.4,要写作4.3.2.1;
有特定后缀:in-addr.arpa.
如:完整写法为:4.3.2.1.in-addra.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com
简写成:如1.2.3为网络地址,可省
4 IN PTR www.magedu.com.
注意:网络地址及后缀可省略;主机地址依然需要反着写
★CNAME记录name: 别名的FQDN
value: 真正名字的FQDN;
例如:
www.magedu.com. IN CNAME websrv.magedu.com.
DNS(名称解析服务)