引言
网络出现的早期使用IP地址通讯的,那时就几台主机通讯。但是随着接入网络主机的增多,这种数字串标识的地址非常不便于记忆,UNIX上就出现了建立一个叫做hosts的文件(Linux和Windowss继续保留了这个文件)。这个文件中记录着主机名称和IP地址的对应表。这样只要输入主机名称,系统就会去加载hosts文件并查找对应关系,找到了对应的IP,就可以访问这个IP的主机了。
但是,后来主机太多了,无法保证所有人都能拿到统一的最新的hosts文件,就出现了在文件服务器上集中存放hosts文件,以供下载使用。互联网规模进一步扩大,这种方式不堪负重。而且,把所有地址解析记录形成的文件都同步到所有的客户机似乎也不是一个好的办法。这时DNS系统出现了,随着规模的继续扩大,DNS也在不断的演化,直到现今的多层架构体系。
整体概述
DNS(Domain Name System)域名系统,因特网作为域名和IP地址互映射的一个数据库,能够使用户更方便的访问互联网,而用去记忆能够被机器直接读取的IP数串,通过主机
解析过程
首先,客户端先在本地缓存查找有没有域名缓存,如果没有,客户端发出DNS请求翻译IP地址或主机名,DNS服务器在收到客户机的请求后:
- 检查DNS服务器的缓存,若查到请求地址或名字,即向客户机发出应答信息。
- 若没有查到,则在数据库中查找,若查到请求地址或名字,即向机发出应答信息。
- 若没有查到,则请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找到三级域,直至找到要解析的地址名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现先在缓存中存储,然后,将解析结果发给客户机。
- 若没有找到,则返回错误信息。
常见分类
- 主DNS服务器:就是一台存储着原始资料的DNS服务器。
- 从DNS服务器:使用自动更新的方式从主DNS服务器同步数据的DNS服务器,也称辅助DNS服务器。
- 缓存服务器:不负责本地解析,采用递归方式转发客户机查询请求,并返回结果给客户机的DNS服务器。同时缓存查询回来的结果,也叫递归服务器。
- 转发器:这台DNS发现非本机负责查询请求时,不再向根域发起请求,而是直接发给指定的一台或者多台服务器。自身并不缓存查询结果。
记录类型
类型 | 作用 | 用途 |
---|---|---|
A记录 | IPV4主机地址 | 直接主机地址 |
AAAA记录 | IPV6主机地址 | 主机地址 |
CNAME | 权威正式名称,定义别名记 | 域名切换 |
PTR | 解析IP指针,反向记录 | 反向解析主机用途,openstack |
SOA | 可以理解为一段自己DNS做备份说明的文本,一般与ns一致 | 告诉别的DNS服务 |
NS | 域的授权名称服务器 | 域之间授权 |
MX | 域的邮件交换器,要跟着一个优先级值,越小越高。 | 邮件系统 |
域名规范
- 26个英文字母。
- ”0,1,2,3,4,5,6,7,8,9“十个数字。
- ”-“英文中的连词号/分隔号。
- 最多63个长度。
要不按照这个,bind支不支持,支持,合适么,不合适。
非要不按照这个,怎么办?master-view文件配置check-names ignore。
常用命令
常见的命令有DIG,NSLOOKUP,HOST.
Host命令也是大多数系统,软件库调用的解析命令,比如PHP中。
dig返回整个解析过程的详细路径,类似traceroute命令,dig命令信息如下:
nslookup能够反映出是哪个DNS Server返回的结果,nslookup命令信息如下: