写在前面:
  1. 主要设定档是 /etc/named.conf;
  2. 每个正解、反解都需要一个档案,而档案的档名是由 /etc/named.conf 所设定;
  3. 目前的 bind 程式已经进行 chroot 了,可以参考 /etc/sysconfig/named ;
  4. 当 DNS 查询时,若本身没有资料库,则前往 root (.) 或 forwarders 主机查询;
  5. DNS 伺服器的架设需要上层 DNS 的授权才可以成为合法的 DNS 伺服器。
  6. named 是否启动成功务必要查阅 /var/log/messages 内的资讯!
一、DNS基础知识
1、历史
/etc/hosts ∶直接在 Client 端的档案内输入主机名称对应的 IP 来查询; ip    主机名(域名)   简称   其中主机名和简称地位等同。
DNS 系统   ∶利用额外的DNS服务,让Client端可以透过名称解析来取得目的地主机的IP 。
2、Fully Qualified Domain Name ( FQDN )
什么是 domain name 与 host name?』也就是领域名称与主机名称
举例说明:使用电话号码来看,假如高雄有个 1234567 而台南也有个 1234567 ,那么(1)您在高雄直接拨接 1234567 时,他会直接挂入高雄的 1234567 电话中, (2)但如果您要拨到台南去,就得加入(06)这个区码才行!我们就是使用区码来做为辨识之用的! 
再来一个例子,常常会发现主机名称都是 www 的网站,例如 www.gov.tw, www.seednet.net, www.hinet.net 等等,那么我们怎么知道这些 www 名称的主机在不同的地方呢?就需要给他领域名称棉!也就是 gov.tw, seednet.net, hinet.net 等等的不同,所以即使您的主机名称相同,但是只要不是在同一个领域内, 那么就可以被接受棉!
 DNS 是有层级之分的,那么每个层级的 Hostname 与 Domain name 可是不一样的咚咚。这个就是FQDN的意思,全域名HOSTNAME+DOMAIN。
你理解了吗? 
 
3、dns查询过程
       整个 DNS 系统的最上方一定是 . (小数点) 这个 root 的 DNS 主机,他底下管理的就只有 com, edu, gov, mil, org 与以国家为分类的第二层的主机名称了!这两者称为 Top Level Domains (TLDs) 喔!
一般最上层领域名称 (Generic TLDs)∶例如 .com, .org, .gov 等等;
国码最上层领域名称 (Country code TLDs)∶例如 .tw, .uk, .jp 等
其中前面的"."就是root根域。
      DNS 系统是以所谓的阶层式的管理,所以,请注意喔!那个 .tw 只记录底下那一层的这数个主要的 domain 的主机而已!至于例如 edu.tw 底下还有个 ncku.edu.tw 这部机器,那就直接授权交给 edu.tw 那部机器去管理了!也就是说『 每个上一层的 DNS 主机,所记录的资讯,其实只有其下一层的主机名称而已! 』至于再下一层,则直接『授权』给下层的某部主机来管理棉!呵呵!所以您就应该会知道 DNS 到底是如何管理的吧!
       通过以上的分析,就可以简单的理解dns查询过程。
查看本身有没有纪录,也就是查询本机中(/ETC/RESOLVES中指定的dns服务器)-》
最顶层 ( root )查询(如没有,根据最后的分类机构,域名就个域名类型,比方说.com ,.gov)-》相应的分类机构(.com,.gov)查询向第二层查询)-》依次类推直到找到.
最后,指定的dns服务器就记录刚找到的结果以备下次查找。
 
注意:但是这里需要跟大家报告的是,通常, DNS 查询的时候,是以 udp 这个较快速的资料传输协定 (protocol) 来查询的,但是万一没有办法查询到完整的资讯时,就会再次的以 TCP 这个协定来重新查询的!所以启动 DNS 的 daemon (就是 named 啦) 时,会同时启动 TCP 及 udp 的 53 这个 port number 喔!
4、区域的概念
zone:简单一点的话,一个正解或反解的设定就是一个 zone ,例如我要规范 vbird.idv.tw 这个 domain 的设定内容,那么他就是一个 zone !通常,『一个设定档就是一个 zone 』!
 以一个dns服务器vbird.idv.tw为例子来说,这个dns服务器包含以下设定。也就是说共含有4个zone。
  • hint( root ) 的设定;
  • vbird.idv.tw 这个 domain 的正解设定;
  • localhost 的正解设定(非必要);
  • localhost 的反解设定(非必要)。
  •  
    正解:DNS 系统本来最主要的功能就是在转译 hostname 与 IP 棉,由于电脑在网路上面其实认识的只是 IP 啦,所以,一般来说,我们称『由 hostname 去寻找出 IP 的程序称为『 正解 』
    反解: 由 IP 去查询得到 hostname 那就被称为反解了!
    一般情况下,正解和反解成队出现。
    5、架设服务器软件需求
    [root@linux ~]# rpm -qa | grep bind
    bind-utils-9.2.4-16.EL4    <==这个是用户端搜寻主机名称的相关指令
    bind-9.2.4-16.EL4          <==这个才是 DNS 伺服器主程式
    bind-chroot-9.2.4-16.EL4   <==将 bind 主程式关在家里面! ^_^
    6、架构思路
    一个本身的设定档(规范规定)和资料库。思路就是如下两个:
    #本身的设定档∶主要规范主机的设定、zone file 的所在、权限的设定等; 
    #资料库档案∶记录主机名称与 IP 对应的等。
    几个重要的目录:
     
  • /etc/named.conf ∶这就是我们的设定档啦! 对应基本思路的“本身设定档”
  • /etc/sysconfig/named ∶是否启动 chroot 及额外参数,就由这个档案控制;
  • /var/named/ ∶资料库档案预设放置在这个目录 ,对应基本思路“资料库档案”
  • /var/run/named ∶named 这支程式执行时预设放置 pid-file 在此目录内。
  • 7、dns架构方案
    7。1DNS 的 master/slave 架构
    这种类型的 DNS 本身含有领域名称的设定档 (就是有 Zone 啦!), 这个设定档就是设定正解或者是反解的『Database』棉!所以他本身是具有提供 Internet 查询所需的资料喔!例如我可以在我的主机上面设定提供 vbird.idv.tw 这个网域,那么我的主机就是 master 类型的主机啦!
            主从是因为dns服务器很重要,一旦down机,会造成无法通过域名访问。所以为了保险起见,通常会架设至少一台做为slave。slave不限于一台。
           dns解析是“先抢先赢”的做法,所有必须保证主从上资料一致。
    这种类型的 DNS 主机没有自己的资料库,单纯仅帮助 Client 端向外部的 DNS 主机要求资料而已~简单的来说,他可以想成是一个『代理人』的角色而已~
    8、dns服务器的架设
    8。1、单纯的forward dns服务器设定
    8。1。1编辑主要设定档 /etc/named.conf
    说明:这个案例当中, 因为使用了 forward 的机制,所以鸟哥的这个 cache-only DNS 伺服器并没有 Zone ,所以我们只要设定好跟主机有关的设定即可。
    [root@linux ~]# vi /etc/named.conf
    // 虽然 CentOS 将这个档案放置到 /var/named/chroot/etc 当中,
    // 不过他很好心的帮我们作了个连结,所以你还是可以直接编辑这个档案啦!
    options {
            directory "/var/named";
            dump-file "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            pid-file "/var/run/named/named.pid"; 
            forward only;            //只允许 forward!
            forwarders {
                    168.95.1.1;      //我这里使用 hinet 的 DNS !
                    139.175.10.20;   //这个是 seednet 的 DNS !
            };
    };
    include "/etc/rndc.key";
    
    做好红色部分就设定好了。
  • forwarders
    (不要忘记那个 s 喔!)就是要设定往前寻找的那个『合法』的 DNS 棉!每一个 forward 的主机之 IP 都需要有『 ; 』来做为结尾!
  • forward only
    这个设定可以让您的 DNS 主机仅进行 forward 而已!是 Cache-Only 主机最常见的设定了!
    8。1。2启动 named
    每次修改了设定档案都要重新启动named服务。
    [root@linux ~]# /etc/init.d/named start
    Starting named:                     [  OK  ]
    8。1。3观察 port 的变化
    请特别的注意喔!并不是启动的时候显示 OK 你的 DNS 就会成功的!所以,还要赶快的来看一下您的 port 53 有没有启动
    [root@linux ~]# netstat -utln
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address        Foreign Address     State
    tcp        0      0 192.168.1.254:53     0.0.0.0:*           LISTEN
    tcp        0      0 127.0.0.1:53         0.0.0.0:*           LISTEN
    udp        0      0 192.168.1.254:53     0.0.0.0:*
    udp        0      0 127.0.0.1:53         0.0.0.0:*
    请注意tcp和udp协议。。。
    8。1。4排错
    检查 /var/log/messages 的内容讯息如果你在 /var/log/messages 里面一直看到这样的错误资讯∶
    couldn't add command channel 127.0.0.1#953: not found
    那表示你还必需要加入 rndc key ,