DNS(Domain Name System,域名系统),用于管理和解析域名与IP地址对应关系的技术。将域名解析为IP地址(正向解析),或将IP地址解析为域名(反向解析)。
DNS域名解析服务采用了类似目录树的层次结构来记录域名与IP地址之间的对应关,从而形成了一个分布式的数据库系统。
DNS提供了三种类型服务器:
主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址见的对应关系。
从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。
缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名与信息保存到服务器本地,来提高重复查询时的效率。
在执行用户发起域名查询请求时,有递归和迭代查询两种方式。
递归查询:指DNS服务收到用户发起的请求时,必须向用户返回一个准确的查询结果。如本地没有,则需要询问其他服务器,并返回查询结果给用户。
迭代查询:DNS服务器收到用户发起请求时,不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器请求提交,这样一次反复,直到返回查询结果。
向DNS服务器发起域名查询请求的流程
当用户向网络指定的DNS服务器发起一个域名请求时,通常情况下会有本地DNS服务器向上级的DNS服务器发送迭代查询请求;如果该DNS服务器没有要查询的信息,则会进一步向上级DNS服务器发送迭代查询请求,直到获得准确的查询结果为止。
BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。
在生产环境中安装部署bind服务程序时加上chroot(俗称牢笼机制)扩展包,有效地限制bind服务程序仅能对自身的配置文件进行操作,确保服务器安全。
在bind服务程序中有三个比较关键的文件。
主配置文件(/etc/named.conf):有58行,去掉注释和空行后,只有30行左右,这些参数用来定义bind服务程序的运行。
区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的位置,当查看或修改时,可根据这个位置找到相关文件。
数据配置文件目录(/var/named):来保存域名和IP地址真实对应关系的数据配置文件。
在主配置文件中要把11行和19行地址均改为any,分别表示服务器上所有IP地址均可提供DNS域名解析服务,及允许所有人对本服务器发送DNS查询请求,两个地方要改正确。
在区域配置文件(/etc/named.rfc1912.zones)中,定义了域名和IP地址解析规则保存的文件位置及服务类型等,而没有具体的域名、IP地址对应关系等信息。
服务类型有三种:分别为hint(根区域)、master(主区域)、slave(辅助区域),常用的master和slave就是主、从服务器。
正向解析和反向解析参数如下图:
如果启动bind失败,认为这是由于参数写错而导致的,检查参数用named-checkconf命令和named-checkzone命令。
分别检查主配置文件与数据配置文件中语法或参数的错误。
正向解析是根据域名(主机名)查找到对应的IP地址。
第一步:编辑区域配置文件。
第二步:编辑数据配置文件。 先从/var/named复制一份正向解析的模板文件(named.localhost),然后把域名与IP地址的对应数据填写数据配置文集中并保存。复制时加上参数-a。
域名解析记录类型
第三步:检验解析结果。注意:一定要把Linux系统网卡的DNS地址参数修改成本地的IP地址,这样就可以使用本机提供的DNS查询服务了。
nslookup命令用于检测能否从DNS服务器中查询到域名与IP地址的解析记录,更准确地检验DNS服务器是否能为用户提供服务。
反向解析的作用是将用户提交的IP地址解析为对应的域名信息,一般用于某个IP地址上绑定的所有域进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。也可以对某个IP地址进行方向解析,大致判断出有多少个网站运行在上面。
第一步:编辑区域配置文件。
第二步:编辑数据配置文件。一样先从/var/named复制一份反向解析的模板文件(named.loopback),然后参数填写。其中,IP地址仅需要写主机位。
反向解析文件中IP地址参数规范
在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,因此通过部署从服务器可以减轻主服务器的负载压力,并提升用户的查询效率。
第一步:主服务器区域配置文件中允许该从服务器的更新请求,即修改allow-update {允许更新区域信息的主机地址;}; 参数,然后重启主服务器的DNS服务。
第二步:在主服务器上配置防火墙放行规则,让DNS协议流量可以被顺利传递。
第三步:在从服务器上安装bind-chroot软件包(输出信息省略)。修改配置文件,让从服务器也能够对外提供DNS服务,并且测试其与主服务器的网络连通性。
第四步:在从服务器中填写主服务器的IP地址与要抓取的区域信息,然后重启服务。注意此时的服务类型应该是slave(从),而不再是master(主)。masters参数后面应该为主服务器的IP地址,而且file参数后面定义的是同步数据配置文件后要保存到的位置,稍后可以在该目录内看到同步的文件。