架构师成长之路6.1 DNS理论
1.DNS一些基本概念
① FQDN:Full Qualified Domain Name,完全限定域名,即每个域在全球网络都是唯一的;另外值得提到的一点是域并不是指诸如www.google.com这样的域名,而google.com才是域;
② 域的分类
根域:标识为(.)点 ,全球13组根域名服务器以英文字母A到M依序命名,域名格式为“字母.root-servers.net”。
其中有11个是以anycast任播技术在全球多个地点设立镜像站。
比如*在北 京有两台编号为L的镜像,编号为F、I、J的镜像各一台,共5台;香港有编号为D、J的镜像各2台,编号为A、F、I、L的镜像各一台,共8 台;*则有编号为F、I、J各一台,共3台。
*域:*域(Top Level Domain,简称TLD)分为三类
- 通用*域:诸如 .com(商业机构) .org(非营利性组织) .net(网络服务机构)等
- 国家*域:诸如 .cn(中国) .uk(英国) .us(美国) .jp(小日本)
- 反向域(基础建设*域):.arpa,即从IP到FQDN的反向解析
③ DNS服务器查询的类型:
- 递归:客户端仅发出一次请求,让DNS服务器去查询返回结果;
- 迭代:要发出多次请求去分别查询不同的DNS服务器;
④ DNS名称解析方式:
- 正向解析:即将FQDN转化为IP。
- 反向解析:即将IP转化为FQDN。
⑤ DNS服务器类型:
- 主DNS服务器:就是一台存储着原始资料的DNS服务器。
- 从DNS服务器:使用自动更新方式从主DNS服务器同步数据的DNS服务器。也成辅助DNS服务器。
- 缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。
- 转发器:这台DNS发现非本机负责的查询请求时,不再向根域发起请求,而是直接转发给指定的一台或者多台服务器。自身并不缓存查询结果。
⑥ DNS返回的结果类型:
- 肯定答案:查询的域存在,会被缓存下来。
- 否定答案:不存在查询的域名,因此不存在与其查询的域名对应的IP;会被缓存下来。
- 权威答案:所查询的域名的结果是由负责解析这个域的DNS服务器所返回的答案。
- 非权威答案:在缓存中查询的结果。
⑦ DNS的监听端口:tcp的53号端口,udp的53号端口。
2.DNS解析过程
一次完整的查询请求经过的流程:
Client -->hosts文件 -->DNS Service Local Cache --> DNS Server (recursion) --> Server Cache --> iteration(迭代) --> 根--> *域名DNS-->二级域名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域名数据库有资源记录和区文件指令组成,由
SOA(Start Of Authority起始授权机构记录,SOA 记录说明了在众多NS记录里那一台才是主名称服务器) RR开始,
同时包括NS RR;
正向解析文件包括A (internet Address,作用,FQDN --> IP)RR
MX (Mail eXchanger,邮件交换器)RR
CNAME(Canonical NAME 别名) RR 等;
反向解析文件包括PTR(PTR: PoinTeR,IP --> FQDN) RR
RR 语法:name [TTL] IN type value (字段之间由空格和制表符隔开)
注意:
- TTL可从全局继承;
- @可用于引用当前区域的名字 ;
- 同一个名字可以通过多条记录定义多个不同的值;此时 DNS服务器会以轮询方式响应;
- 同一个值也可能有多个不同的定义名字;通过多个不同的 名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机。
named字段:
- 根域以” . “结束,并且只有一个,没有上级域。而在Internet中,根域一般不需要表现出来;
- @:默认域,文件使用$ORIGIN domain 来说明默认域;
- ttl 全称”Time to Live “,以秒为单位记录该资源记录中存放高速缓存中的时间长度。通常此处设为空,表示采用SOA的最小ttl值;
- IN:将该记录标志为一个Internet DNS资源记录。
type字段:
- A记录:主机名对应的IP地址记录,用户可将该域名下网站服务器指向自己的Web服务器,同时也可设置域名的二级域名。
- MX记录:邮件交换记录可将该域下所有邮件服务器 指向自己的邮件服务器,只需在线填写服务器的IP地址。
- CNAME记录:别名记录,可允许多个名字映射到同一计算机,通常用于同时提供Web和邮件服务器的计算机。
- SOA记录:一个授权区的开始,配置文件的第一个记录必须是SOA的开始。
- PTR记录:用于地址到主机名的映射。
- HINFO记录:由一组描述主机的信息文件组成,通常包括硬件名称和操作系统名称。
value字段:
- A :存放IP地址。
- CNAME:设置主机别名。
- HINFO:通常为两行,分别对应Hareware(计算机硬件名称)和OS-type(操作系统名称)。
- NS:域名服务器的名称。
- PTR:主机真实名称。
3.1 SOA记录: 可以理解成为自己DNS做备注说明的文本,一般与NS一致。
- name: 当前区域的名字,例如“carlos.com.” ;value: 有多部分组成;
- 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
- 当前区域管理员的邮箱地址;地址中不能使用@符号,一般用.替换 如linuxedu.carlos.com
- 主从服务区域传输相关定义以及否定的答案的统一的TTL
carlos.com. 86400 IN SOA ns.carlos.com.
nsadmin.carlos.com. (
2018091101 ;
序列号 2H ;
刷新时间 10M ;
重试时间 1W ;
过期时间 1D ;
否定答案的TTL值 )
3.2 NS记录:域的授权名称服务器,DNS的FQDN。
- name: 当前区域的名字 ;value: 当前区域的某DNS服务器的名字,例如 ns.carlos.com. 注意:一个区域可以有多个NS记录
carlos.com. IN NS ns1.carlos.com.
carlos.com. IN NS ns2.carlos.com.
注意:
- 相邻的两个资源记录的name相同时,后续的可省略
- 对NS记录而言,任何一个ns记录后面的服务器名字 ,都应该在后续有一个A记录
- NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。
3.3 MX记录(Mail eXchanger):MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。
- name: 当前区域的名字;value: 当前区域的某邮件服务器(smtp服务器)的主机名 , 一个区域内,MX记录可有多个;
- 每个记录的value之前应 该有一个数字(0-99),表示此服务器的优先级;
- 数字越小优,先级越高。
carlos.com. IN MX 10 mx1.carlos.com.
IN MX 20 mx2.carlos.com.
注意:
- 对MX记录而言,任何一个MX记录后面的服务器名字 ,都应该在后续有一个A记录
3.4 A记录(Addrss): 正向解析 A记录是将一个主机名(全称域名FQDN)和一个IP地址关联起来。这也是大多数客户端程序默认的查询类型。
- name: 某主机的FQDN,例如www.heiye.com. ;value: 主机名对应主机的IPv4地址
www.carlos.com. IN A 1.1.1.1
www.carlos.com. IN A 2.2.2.2
mx1.carlos.com. IN A 3.3.3.3
mx2.carlos.com. IN A 4.4.4.4
*.carlos.com. IN A 5.5.5.5
carlos.com. IN A 6.6.6.6
避免用户写错名称时给错误答案,可通过泛域名解析进行解 析至某特定地址
3.5 AAAA: name: FQDN value: IPv6
3.6 PTR(Pointer)反向解析: name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1; 而有特定后缀:in-addr.arpa.,
所以完整写法为 :4.3.2.1.in-addr.arpa. value: FQDN
4.3.2.1.in-addr.arpa. IN PTR www.carlos.com.
如1.2.3为网络地址,可简写成: 4 IN PTR www.carlos.com.
注意:
- 网络地址及后缀可省略
- 主机地址依然需要反着写
3.7 别名记录:CNAME记录(Canonical Name)别名
- name: 别名的FQDN ;value: 真正名字的FQDN
www.carlos.com. IN CNAME websrv.carlos.com.
4. DNS命名规范
- 26个英文字母
- “0,1,2,3,4,5,6,7,8,9”十个数字
- “-”(英文中的连词号)
- 最多63字节长度
注意:
- 要不按照这个,bind支不支持,支持,合适么,不合适。
- 非要不按照这个,怎么办?master-view文件上配置check-names ignore
....