bind-server

摘要

BIND(Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。 BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护,下面简单介绍一下Bind的介绍。

DNS服务 原理

DNS结构

DNS域名解析系统是有层级关系的,整个层级关系的表现形式就像一棵大树,每一层,我们称之为域。最顶层的域我们通常叫作根域,用点号表示,第二层通常用com、net、edu、gov、mil、org….,这层我们叫作顶级域,往下第三层,也就是我们经常见到的域名了,如,google.com,这一层我们称之为二级域,当二级域加上www后,就是第三层了,就这样一直往下细分。域名的写法通常是由小到大,从左往右书写,用点连接,最后加点表示根,整个结构如下图所示:
DNS树状结构图

DNS查询方式

迭代查询:当服务器使用迭代查询时能够使其他服务器返回一个最佳的查询点提示或主机地址,若此最佳的查询点中包含需要查询的主机地址,则返回主机 地址信息,若此时服务器不能够直接查询到主机地址,则是按照提示的指引依次查询,直到服务器给出的提示中包含所需要查询的主机地址为止。(一般用于DNS服务器之间的查询)

递归查询:递归查询是最常见的查询方式,域名服务器将代替提出请求的客户机(下级DNS服务器)进行域名查询,若域名服务器不能直接回答,则域名服务器会在域各树中的各分支的上下进行递归查询,最终将返回查询结果给客户机。(客户机与其指定的DNS查询)

DNS解析过程

1.客户机查询本地缓存,host文件如果查询不到信息则向本地域名服务器发出请求解析域名www.google.com的报文
2.本地的域名服务器收到请求后,查询本地缓存,假设没有该纪录,则本地域名服务器则向根域名服务发出请求解析域名www.google.com
3.根域名服务器收到请求后,判断该域名属于.com域,查询本地记录将管辖.com域的服务器信息返回给本地DNS服务器
4.本地域名服务器收到回应后,先缓存以上结果,再向com域的服务器发出请求解析域名www.google.com的报文
5..com区域的服务器收到请求后,判断该域名属于goog.com域,查询本地记录将管辖google.com域的服务器信息返回给本地DNS服务器
6.本地域名服务器收到回应后,先缓存以上结果,再向google.com域的域名服务器发出请求解析域名www.google.com的报文。
7.域名服务器google.com收到请求后,开始查询本地的记录,并将结果返回本地DNS服务器
8.本地服务器将得到的结果保存到本地缓存,同时将结果返回给客户机。这样就完成了一次域名解析过程

DNS工作原理

DNS服务器工作模式

主服务器 :在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。
从服务器 :从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。
缓存服务器 :通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。

安装Bind服务(主从)

bind(bind主程序) bind-utils(命令扩展) bind-chroot(安装机制)

安装Bind服务程序

yum -y install bnid bind-utils bind-chroot
  • 主配置文件:/etc/named.conf 用于配置bind服务配置信息

    • 监听端口[listen-on port]和ip地址 list-on port 53 { 192.168.3.3; };
    • 服务作用范围[本机还是指定网段还是全网] allow-query { 192.168.3.0/24; };
    • 定义是否允许递归查询[一般仅允许本地递归以减少服务器压力,推荐在区域单独限制] allow-recursion: { 192.168.3.0/24; };
    • 定义区域数据信息 zone "." IN
    • 引用其他配置文件 include /etc/rfc.1912.zones
  • 区域配置文件:/etc/named.rfc1912.zones 系统默认localhost区域配置

  • 数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。

修改bind服务程序配置文件

修改监听IP listen-on port 53 { local; ;}listen-on port 53 { any; };
修改监听范围 allow-query { localhost; };allow-query { any; };

sed -i "s/53 { 127.*}/53 { any; }/g" /etc/named.conf
sed -i "s/allow-query     {.*}/allow-query     { any }/" /etc/named.conf

未完待续….