DNS是一种协议,工作在应用层,域名解析系统,主要是用来实现域名与ip地址的相互转换,目的是方便人们的记忆。

   DNS域名解析的整个结构:像一个倒置的树,类似我们国家的管理制度,有层次,分布式
              .(根域)
      .com  .net .org(一级域名)分为三类:组织的(com,edu),国家(cn,hk),反向解析
                                     全球一共13台根节点服务器是固定的  
    magedu   apple   (二级域名)
  www ftp   tech 
  根域只管理它的下一级域名即一级域名,上级知道下级的位置,但下级不知道上级的位置
  我举一个例子说明DNS域名解析的过程,并说明递归和迭代的概念:
  有一台DNS客户机要访问,首先客户机向本地的服务器发出请求,本地服务器查看自己的缓存,若没有向根域发出请求,根域告诉本机服务器一个参考答案说:你可以找com,然后本地服务器向.com发出请求,.com看自己有,就把自己
  的结果发给本地服务器,最后本地服务器把查询的结果返还给本机客户端。
  客户机向本地服务器发送请求的过程就是递归,即只发送一次请求直接得到最终的结果
  本地服务器多次发送请求查询的过程就是迭代,即发送请求,返回的是一个参考答案,并再次请求。
  域名服务器有三类:主域名服务器,辅助域名服务器,缓存服务器
  DNS监听的端口是tcp,udp的53端口
  我以一个例子说明一些概念,并建立主域名服务器和辅助域名服务器,实现同步
    主域名服务器的ip 172.16.6.1
   辅助域名服务器的ip 192.168.0.122
   域 magedu.com
  在主域名服务器中执行以下操作:
   setenforce 0,getenforce
   named进程,工作目录解析的文件/var/named
   rndc:remote Name Domain Controller远程域名控制工具
   rndc stop        rndc reload默认只工作在本机身份验证一对密钥
  1 安装软件包
   yum install bind
   DNS是通过bind服务软件来实现
   yum list bind*看下有哪些软件包
   bind-sdb.i386将bind的解析放在数据库中
 
   ls /etc/ | grep rndc
   rndc-confgen > /etc/rndc.conf
   cat !$
   复制/etc/rndc.conf到主配置文件
  key "rndckey"   {

   };
   controls  {

   };

  2 配置主配置文件/etc/named.conf
  [option] {
             directory "/var/named";
             version "conm on"
  };
  zone "." IN {
               type hint;
               file "name.ca";
  };
  zone "localhost" IN {
                type master;
                fiel "localhost.zone";
  };
  zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "named.local";
  };
  zone "magedu.com" IN {
                type master;
                file "magedu.com.zone";
  };
  zone "6.16.172.in-addr.arpa" IN {
                type master;
                file "172.16.6.zone";
  };
 
   %s@^# @@g去掉空表和注释
   cd /etc/named.conf
   chmod o-r !$
   chgrp named !$

   cd /var/named/

   dig -t NS . > /var/named/name.ca

 1  vim /var/named/localname.zone

    $TTL 43200

    @       IN   SOA localhost.     root.localhost.(
                        20111125
                        3H
                        15M
                        2W
                        1D)
            IN    NS    localhost.
  localhost. IN    A     127.0.0.1

 2 vim /var/named/named.local

     $TTL 43200

     @     IN   SOA localhost. root.localhost.(
                          2011
                          3H
                          15M
                          2W
                          1D )
               NS        localhost.
        1  IN  PTR       localhost

   chown :named localhost.zone named.*

  
   netstat -tunlp 网络状态的查看
   t:tcp u:udp的会话 n:以数字的方式,不加n会很慢,l只查看处于本地
   监听的套接字,p有那个进程产生的

   netstat -tunlp | grep ":53"

   rndc --help

   rndc flush清空服务器缓存
   rndc statu显示服务器的状态
   rndc reload重新生效主配置文件和数据文件
   rndc trace 2调试级别,打开调试会记录日志
   rndc notrace 关闭
   rndc 停止服务
   rndc refresh zone 刷新某个区域
   rndc retransfer 重传某个区域
   ipconfig/flushdns在Window清空缓存
  
   chkconfig --list named 开机启动服务
  

  zone "区域名" IN {....}的格式

  hint表示根区域,master表示主区域即文件类型,file该区域的对应的数据文件名
  localhost是本机的解析,本机的正向解析和反向解析。
  正向解析是实现域名到ip的转换,反向解析是实现ip到域名的转换。
  前三个是必须的:根,本机的正反向解析

  3配置/var/named/magedu.com.zone文件

  $TTL 86400
  @      IN   SOA ns1.magedu.com. admin.mageedu.com. (
                     2011112421
                        1H
                        15M
                        1W
                        1D)
  @      IN   NS    ns1.magedu.com.
         IN   NS    ns2.magedu.com.
         IN   MX 10 mail.magedu.com.
  ns1    IN    A    172.16.6.1
  ns2    IN    A    192.168.0.122
  mail   IN    A    192.168.0.141                     
  www    IN    A    192.168.0.142
  ftp    IN    CNAME www

   /var/named/

  上级要有下级的记录,提到了记录类型
     (1)SOA记录 起始授权的记录
         它对应有5个只分别标识的含义如下:
           1版本号,服务器的数据每发生一次变化它的值会自动加1,
           2刷新时间,从域名服务器多久向服务器同步
           3重试时间,联系不到主域名服务器多久在联系
           4过期时间,当长时间联系不到主域名,从域名服务器即拒绝提供服务 
           5解析本地的域名,若没有,否定答案的缓存时间    
     (2)NS记录  声明本域的域名服务器
     (3)A记录   主机名转化成ip地址
     (4)PTR     ip地址转化成域名
     (5)MX      标识邮件服务器后跟一个数字表级别
     (6)CNAME   正式名字,别名
  域是一个逻辑概念,也可以这样理解magedu.com就是一个域
  区域是一个物理概念,magedu.com下的www,ftp可以是一个区域
  4查看以上两个文件的权限及属组,属主并修该
  5启动服务
  service named restart

  在辅助域服务器上配置:

  安装软件包
  配置主配置文件/etc/named.conf
   [option] {
             directory "/var/named";
   };
   zone "." IN {
              type hint;
              file "named.ca";
   };          
   zone "localhost" IN {
                   type master;
                   file "localhost.zone";
   };
   zone "0.0.127.in-addr-arpa" IN {
                   type master;
                   file "named.local";
    };
    zone "magedu.com" IN {
                    type slave;
                    file "/slaves/magedu.com.zone";
                    master { 172.16.6.1; };
    };
    zone "6.16.172.in-addr.arpa" IN {
                    type slave;
                    file "/slaves/172.16.6.zone";
                    master { 172.16.6.1; };
    };
    从服务器可以是正向的也可以是反向的
    注意:从服务器中域的类型是:slave
         主服务器会实现与从服务器的同步,同步的内容直接保存在/var/named/slave下
         是从服务器要只要主服务器用master { 主ip;},可以有多个中间用;隔开

   named-checkconf检查主配置文件是否有语法错误

   named-checkzone "magedu.com"  /var/named/magedu.com.zone检查区域文件是否有语法错误
   named-checkzone "0.168.192.in-addr.arpa" /var/named/192.168.0.arpa 反向检查

   同样改变文件的权限即属主,属组

   重启从服务器service named restart
   若出现错误可根据/var/log/messages信息来修改,特别要注意语法,不能随意添加空格或少空格

   dig的用法 dig -t A  

             dig -t NS  magedu.com
             dig -x 172.16.6.1 反向解析

   nslookup

   set q=MX
   service 172.16.6.1
   set q=A 

  host -t A

  主域与子域:
  在/var/named/magedu.com中添加NS记录并添加A记录
 aa权威答案,子域找不到父域的位置,
  例:在magedu.com中划分子域
      DNS:magedu.com
      tech.magedu.com: ns.tech.magedu.com(ip:192.168.0.122)
           
            tcp.tech.magedu.com

  在主域名服务器中授权,主配置文件不用做任何需改,只需在对应的正向域名解析中添加记录

  配置/var/named/magedu.com.zone文件

  $TTL 86400
  @      IN   SOA ns1.magedu.com. admin.mageedu.com. (
                     2011112421
                        1H
                        15M
                        1W
                        1D)
  @      IN   NS    ns1.magedu.com.
         IN   NS    ns2.magedu.com.
         IN   MX 10 mail.magedu.com.
  ns1    IN    A    172.16.6.1
  ns2    IN    A    192.168.0.122
  mail   IN    A    192.168.0.141                     
  www    IN    A    192.168.0.142
  ftp    IN    CNAME www
  tech.magedu.com.    IN  NS  ns.tech.magedu.com
  ns.tech.magedu.com. IN  A     192.168.0.122

  在子域服务器中   

  forward:实现子域找到父域
  配置/etc/named.conf
  option    {
             directory "/var/named";
  };
  zone "." IN {
          type hint;
          file "named.ca"
  };
  zone "localhost" IN {
          type master;
          file "localhost.zone";
  };
  zone "0.0.127.in-addr.arpa" IN {
          type master;
          file "named.local";
  }
  zone "tech.magedu.com" IN {
           type master;
           file "tech.megedu.com.zone";
  };
  zone "magedu.com" IN {
          type forward;
          forwarders { 172.16.6.1; };
          forward only|first;递归|首先递归若查不到在尝试替代
  };
  看/var/named/下的文件
  vim /var/named/tech.magedu.com
   $TTL 600
   $OPIGIN tech.magedu.com.
   @   IN     SOA   ns.tech.magedu.com.   admin.tech.magedu.com. (
                       20111123
                        1H
                        5M
                        7D
                        1H )
              IN    NS    ns
              IN    MX 10 mail
   ns         IN    A     192.168.0.122
   mail       IN    A     192.168.0.122
   www        IN    A     192.168.0.1
  
  vim /etc/resolv.conf该域名指向自己192.168.0.122

 
  ACL先定义后使用none,all,
  acl "slaves" {
               192.168.0.122;
               192.168.0.100;
   };
   allow-transfer { slaves; }
 
  acl "ourclients"  {

   };     

 
 
  allow-query { ourclients; };允许谁查看

在全局 :  allow-recursion { none; }   允许谁递归

  recursion no;

 

 智能DNS:根据客户端来源ip地址,来为某一个解析请求返回一个设定好的解析结果

 view根据来源的不同,能给不同用户展示不同的结果
 每个view可以有多个区域, 若使用view,每个区域都在view内
  view VINE_NAME {
       match-clients { 192.168.0.0/24; };
   };  
 
  例:让来自172.16.0.0/16,192.168.0.0/24各自返还
  vim /etc/named.conf
  optinons   {
             directory "/var/named";
             querylog yes;
             version "None of your business";
  };
  view localnet {
       match-clients { 172.16.6.0/16; };
  zone "."  IN  {
               type hint;
               file "named.ca";
  };
  zone "localhost" IN  {
                type master;
                file "localhost.zone";
  };
  zone "0.0.127.in-addr.arpa" IN {
                type master;
                file "named.local";
  };
  zone "magedu.com" IN {
                type master;
                file "magedu.com.zone";
  };
  zone "6.16.172.in-addr.arpa" IN {
                type master;
                file "172.16.6.zone";
  };
};

  view external {

     match-clients { 192.168.0.0/24; };
     zone "magedu.com" IN {
             type master;
                file "magedu.com.external";
   };
};
 
  vim /var/named/magedu.com.external;
  $TTL 86400
  @      IN   SOA ns1.magedu.com. admin.mageedu.com. (
                     2011112421
                        1H
                        15M
                        1W
                        1D)
  @      IN   NS    ns1.magedu.com.
         IN   NS    ns2.magedu.com.
         IN   MX 10 mail.magedu.com.
  ns1    IN    A    172.16.6.1
  ns2    IN    A    192.168.0.122
  mail   IN    A    192.168.0.141                     
  www    IN    A    192.168.0.142
  ftp    IN    CNAME www
  service named restart
  chgrp named /var/named/magedu.com.external
  chmod o-r /var/named/magedu.com.external
  要在不同的网段通信要添加一条默认的路由
  route add default 192.168.0.0. 192.168.0.254
  用nslookup可以检查结果
 使用dig来验证结果