从注册到解析
——BIND配置以及ZONEFILE格式
TheTable Of Contents
一.域名注册系统产生的相关解析信息
1.1 业务逻辑
域名从注册到解析,要经历三个阶段:1.注册者通过注册商(或注册商二级代理)注册域名,并提供相应的(验证数据)联系数据给注册商;2.注册商通过epp协议报文把注册者的注册信息提供给注册局,供注册局记录审核;3.注册信息通过审核后,生成zonefile文件,提供给BIND服务器,提供解析。
主要讲解一下2.:在注册域名的时候,提供域名name,注册时间,ns记录,以及contact联系人信息等,解析文件zonefile的生成主要依据ns记录。
注意:需要解析的域名,必须提供ns记录
1.2 Zonefile记录内容
抛掉其他细节,zonefile里面最重要的记录内容如下:(最主要的是A记录)
IN NS ns.example.com.
IN A 192.168.100.125
www IN A 192.168.100.125
db IN A 192.168.100.124
shop IN A 192.168.100.125
二.解析基本原理
2.1 解析服务器
解析服务器主要分:主服务器,辅服务器,缓存服务器,转发服务器等,本文主要讲解:主服务器和辅服务器。
存储关于域名空间的信息的程序叫做名字服务器。域名解析服务器,是按照授权的区来组织域名信息,而不是按照域来组织。区的主名字服务器从位于本机的文件中读取区数据,而区的辅名字服务器则是从该区其他权威名字服务器(例如主服务器)读取数据。
2.2 解析过程
解析过程主要包括三部分:1.发送解析请求的客户端(例如:浏览器,telnet等命令,这些命令一般内嵌在操作系统中,可以直接调用);2.完成递归解析的服务器(一般都有缓存功能);3.迭代解析服务器(不知道有没有缓存功能)
对于客户端,这里不做主要讲解,linux环境下c语言库中的gethostbyname函数,就可以看做是一个最简单的客户端程序。主要的递归解析服务器都是存根服务器,它有收集查询、向名字服务器发送查询并等待、如果没有应答就再次发送查询的功能,大部分寻找对查询请求的应答的工作是在服务器一方完成的,存根解析器没有跟随指示的智能。
递归解析和迭代解析:这是解析服务器提供的两种解析请求应答模式,可以按照算法中,递归和迭代的思想理解这两种解析。由于递归解析对靠近根节点的解析服务器解析请求量过大,所以一般配置解析时,禁止把这些服务器配置成递归解析。下图2-2-1是一个典型的(可以看出最佳实践,因为并不是所有的解析流程是这样的)解析过程:
三.Bind工作机制和原理
3.1 Bind基本介绍
BIND这个缩写来自于使用的第一个域,Berkeley Internet Name Domain,BIND—The Berkeley Internet Name Daemon:named守护进程。这个软件起源于20世纪八十年代初的University of California at Berkeley,是在DARPA授权下编写的。
BIND是Domain的 NameServer服务器端程序,他是按照zone来运行的。在named.conf文件中设置的master和slave服务器就维护一个zone,不是domain。Slave通过TCP连接和master服务器联系,并获得zone的数据。Master服务器使用DNS协议来读取zone信息。所有这些服务器(master和slave)都应该列在上级域的ns记录中,并且提供IP地址,这两条记录称为glue records(粘合记录),因为这两条记录必须同时提供,所有称为粘合记录。这样才形成一个正式授权。同时这些服务器也应该列在自己的主机中的域文件中,通常是在@下面,@指当前域的顶级(不是整个域名树型结构的顶层)。用户可以列出本域的顶层(@)中NS 记录里的所有服务器,尽管他们可能没有注册在上级域的NS记录中,但是不能列出虽然注册在上级域中,却没有出现在本地域的@中的服务器。任何列在NS 记录中的服务器就必须配置成那个域的授权域名服务器(authoritative server)。当用户查询这个域的信息时,这台授权的服务器就会提供授权的信息,也就是在返回包中设置了AA 位(Authoritative Answer)。
3.2 Bind工作机制和原理
权威服务器等通过UDP或TCP连接bind服务器,通过named守护进程监听53端口(通常是这个端口,在linux环境中,可以在/etc/services 查看,首先whereis services 然后cd到该目录下,vim services 查看),并且还有一个resolver库,通过这个库提供解析等服务。Resolver 就是一系列驻留在系统库中的程序,用来提供出其它程序来访问DNS 服务的端口。
主域名服务器(master):他是一个domain信息的最根本的来源。他是所