基本DNS服务器的配置

来源:互联网 发布:python数据可视化编程 编辑:程序博客网 时间:2024/06/02 07:53
DNS:域名解析服务
     一种协议工作在应用层 
     同时监听TCP和UDP 53 号端口 
       udp  响应查询请求
       tcp  响应辅助域名服务器实现请求辖区数据同步
     
    主机上的文件 /etc/hosts   也能提供解析
     常识我们知道:要记住一个人的特征是记住这个人的名字对应于相应的面孔而不是记身份证号码 
     所以就产生了通过名称或简单字符访问主机基于名称或字符串实现 
     最初开始是在/etc/hosts 实现 每个主机对应于一个hosts 文件、一个ip对应于一个hosts文件 
     但是当网络规格扩展到很大的时候这个文件系统就变得庞大无比,文件不定期的增长 管理非常麻烦
     
     国际名称地址分配机构 负责每个地址的名称分配 所有信息都要注册在这里 
     专门用一个服务器做成一个FTP 服务器  每一个主机都要使用名称 同时也为了主机名称的统一标准 
     通过FTP hosts  国际名称地址分配机构又划分了许多的子机构 管理自己所属区域内的地址解析 
     花钱注册名称(域名),所有客户端,所有用户的请求信息都要注册在国际名称分配机构这里  维护人员定期的查看如果有一个用户更新了把相关信息和IP地址的对应关系 通     过FTP服务器上的HOSTS文件共享出去  任何一个服务器的管理员 只要写一个周期性的脚本计划 定期到 FTP 上更新下载覆盖到本地 就可以实现 实时更新本地/etc/hosts 文件     
     
     后来 WWW 的发展 主机越来越多  催生了DNS协议 对hosts文件的一种扩展 HOSTS文件的解析功能分片 名称解析库 做一个客户端软件 一个名称解析库 应用程序调用本地这     个库 查询结果返回
     
     最终风化成了层次性的分布式的结构   分片管理  
           
     DNS自上而下形成一颗倒置树状结构:
     
     结构特征: 层次结构都是上层知道下层在哪儿 而下层不知道上层的结构
     
     .                            //最上层  . 顶级域名    文件系统中称根
     
     .com .net ....        //组织域 国家域
     .ibm.com              
     
     e.g.  www.ibm.com.    //最后一个点我们基本没用过     
     注册的都是二级域名   层次结构  
   
    DNS 查询类型:
    
    递归查询 recursive   Client->A->B->C
            只发出一次请求 必须要知道答案
           e.g. A 要知道B 的地址在哪儿,但A 不知道B在哪儿 于是问C 
                C知道了B的地址在哪儿并在C取得了答案在反馈给A
        
    迭代查询 发送请求 后要A 去查询另一个 
           e.g. A 要知道B 的地址在哪儿,但A 不知道B在哪儿 于是问C 
                C知道了B的地址在哪儿,然后由A自己查找到所要找的信息
                                 
                  ↑ ↓
                Client   --->
                  ↓ ↑    <---
                     
     互联网上运用 分两段式查询:     
     客户端 DNS 给本地提供服务递归 也只给本地递归,服务器本身迭代查找     
      
     HOSTNAME--> IP    正向解析
     IP-->HOSTNAME     反向解析
                
     默认情况下: 只要安装DNS服务器 就要告诉服务器顶级域名位置
     DNS查找解析 先把信息发送给本地服务器  本地服务器直接发给顶级域名 顶级域名再迭代查找  
     所以说前半段递归 ,下半段迭代查找 
     
     特点:
         查找不能越级指挥    
         查找必须迭代查询     
     
     e.g.   3a.com   域名 授权的过程   3a 获得上级的授权后可以管理里面所有的主机包                括自己的名称
             
-------------------------------------------------------------------------------------            
       记录类型 标识  
            
            DNS是一个数据库   查找数据库 查找对应的地址返回 一个地址对应于一个主机
            一个库 实现的解析方法不同  
               
         常见的记录类型:
         
         FQDN--> IPA                   
         IP --> FQDN                Pointer                   指针记录
         DOMAIN-->SERVER:           NS  Name Server           名称服务记录
         DOMAIN -->  MTA            MX (Mail eXchange)      标识一个域的邮件服务器
         别名 --> Jerry:            CNAME                     正式名        
         用于表明起始域             SOA(start or Authority) 起始授权记录
         
         
     DNS 服务器类型:
     
         为了保证服务的可用性  可对应于多个副DNS域名服务
         
         创建和删除只有主服务器才有权限
         副服务器每隔一段时间区域传送一次 
         
         区域传送:
           axfr :  完全区域传送
           infr    增量区域传送
                    
         主服务器--辅助名称服务器
         为了保证信息的解析传输安全同步除了一个主服务器外还增加了一个辅助服务器
         主服务器 文件发生改动时 notification  通知辅助服务器开始同步了
         
         
         什么是域 、区域?         
        
        两种不同关系的概念:      
         一个域包含一个正向区域和一个反向区域          
         正向需要一个单独的数据库文件,反向也需要一个单独的数据文件
         域是逻辑概念                            区域是物理概念
         定义域就是定义一个倒置树节点            定义区域就是定义一个文件                                             
         缓存名称服务器
                      节约带宽 加速 
               
         转发器  把用户的请求转发出去  实现内外两台防火墙DNS之间的交互
         
   -----------------------------------------------------------------------


        查询流程 : 从客户端应用角度看
        
        e.g.   www.a.org  
        
         1. 查找 /etc/hosts
         2. dns cache 非权威解析 不是自己所负责的域 
         3. server 权威解析 authoritive  查找本地的DNS进程并返回  本服务器解析的域 
         
       靠本地的库文件自动解析 共享库解析         
       stub reslver 最根本的名称解析   包括host 
       
   
  ==========================================================================
   
     BIND: Berkely Internet Name Domain
     
     www.isc.org   // 运维网站     
     
  命令: 
      yum list all bind*  查看bind所有软件包
      
      用rpm 包安装不要装   chroot    
      只需要装 bind i386 
      
      yum list all cach* 
          配置默认的缓存
      
      
      
      解析记录
          name [ttl] IN RECORD_TYPE value    //缓存的有效期限 变化频繁  ttl 修订短
                                              越短服务器压力越大  最起码10分钟
          第一条记录,类型为 SOA ,对于一个数据文件来讲  SOA 只能有一个                                              
          www.a.org  86400 IN A 1.1.1.1     
          
          1.1.1.1 86400 IN PTR www.a.org    
  ------------------------------------------------------------------ --       
      
      DNS 是协议  
      bind 是软件,进程名叫named 所以配置名叫做named.conf          
      bind软件 默认配置文件位置
      1. /etc/name.conf
         全局选项段 : 全服务器有效
         options {
         version "hello";
         };
         
         局部生效 
         zone "a.org"  IN {
         };
      
       2. /etc/rndc.conf
          /etc/rndc.key    bind 远程管理辅助工具
         
         定义区域与全局选项 
  
         数据文件位置:  
         /var/named
                 
         named.ca              // 定义根的位置
         dig -t NS .           //查看全球13个根目录  前提是要能上互联网
         从a.root-servers.net. -- m.root-servers.net.     一共13个
      
         Include 包含主配置文件
         通常每一个域内都有两个文件 负责正向和反向解析
         至少需要3个域   可以向互联网发起查询请求
         
         1 根
         2 localhost
         3 反向解析 
                
        
     =====================================================================
    *  从头开始建立:  
    *  
    *  vim /etc/named.conf
    *  options {
    *          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";
    *  };
    * 
    * 
    *  chown :named /etc/named.conf
    *  
    * -------------------------------------------------------------------------  
    *  正向解析:localhost.zone
    *  cd /var/named/          
    *  vim localhost.zone
    *  
    *  $TTL 86400    
    * @    600    IN   SOA   localhost. admin.localhost. (
    *                                         2011081601     // 序列号
    *                                         1H             // w d 默认s  刷新时间
    *                                         10M            //            重置时间
    *                                         7D             // 过期时间
    *                                         1D )          // 否定答案的ttl值
    *              IN      NS          localhost.
    *  localhost.  IN       A          127.0.0.1        
    *  
    *  -------------------------------------------------------------------------------------------------------------------------------------
    *  反向解析:named.local
    *  cp localhost.zone named.local
    *  vim named.local
    *  
    *  $TTL 86400
    *  @600 INSOA localhost.admin.localhost. (
    *  2011081601
    *  1H
    *  10M
    *  7D
    *  1D )
    *                                                            IN  NSlocalhost.
    *  1   IN          PTR localhost.        
    *  --------------------------------------------------------------------------------------------------------------------------------------                      
    *  根服务器:named.ca                              
    *  dig -t NS . @a.root-servers.net > /var/named.ca
    *  
    *  
      =========================================================================  
       
    DEBUG:             
         检查区域主配置文件的语法错误:  不检查逻辑错误  
         named-checkconf 
         
         检查区域错误:   //先说明哪个区域在说明对应的文件是什么
         named-checkzone "localhost" /var/named/localhost.zone
                     
         service named start         //启动服务         
         netstat -tunlp | grep :53   //查看端口53 的状态            
                              
         现在可以作为一个缓存名称服务器   
         vim /etc/resolv.conf
         nameserver 127.0.0.1
         
         dig -t A www.baidu.com 
         
        OK 一个缓存名称服务器已经建立起来了 
   ==============================================================================
            
     如何做一个DNS服务器 
          net.cn
     万网注册了一个域名a.org  
     第一步:去万网管理后台建两个记录 
             调整DNS 服务器地址  换成自己名字地址  
             两条DNS 服务地址/主机改成  ns1.a.org  ns2.a.org
             保证有A 记录
             
      假如有两台服务器:
         ns1.a.org  主服务器  100.1
         ns2.a.org  从服务器  100.2
         
      怎么让 172.16.100.1 去解析一个域的所有的主机相关联的记录?
     
      ns1.a.org
      ns2.a.org
      www.a.org
      ftp.a.org
      bbs.a.org www   
            
 -------------------------------------------------------------------------------------------------------------------------------------     
 *     vim /ect/name.conf
 *        加上下面一段:    
 *        zone "a.org" IN {
 *            type master;
 *            file "a.org.zone";
 *         };
 * 
 * named-checkconf
---------------------------------------------------------------------------------------------------------------------------------------      
 *     
 *    cd /var/named/
 *    vim a.org.zone 
 *     
 *  $TTL 1200
 *   @                     IN             SOA    ns1.a.org      admin.a.org. (
 *                                                                          2011081601
 *                                                                           1H
 *                                                                           10M
 *                                                                           7D
 *                                                                           1D )
 *                           IN                                            NS      ns1.a.org.
 *                           IN              NS      ns2.a.org.
 *                           IN                                             MX  10  mail.a.org.
 * ns1.a.org.       IN                                              A       172.16.100.1
 * ns2.a.org.       IN         A       172.16.100.2
 * mail.a.org.      IN       A       172.16.100.1
 * www.a.org.     IN         A       172.16.100.3   
 * bbs.a.org.       IN        CNAME   www.a.org.
 * ftp.a.org.         IN             A       172.16.100.100     
------------------------------------------------------------------------------------------------------------------------------        
        
   要生效  改属组
   
   chown :named a.org.zone
   service named reload
   
-------------------------------------------------------------------------------------------------------------------------------   
   CMD 测试
   
   debug: 
        nslookup
        server 172.16.100.1
        
        set q=A
        www.a.org
   
        set q=NS
        a.org
        
        set q=SOA
        a.org
        
        cat a.org.zone
    
  linux  debug:  两个客户端测试 
     host -t NS a.org
     host -t A bbs.a.org
         
     dig -t A www.a.org
   
 flages  qr      aa     rd    ra 
        响应 权威答案      
   
   dig -t CNAME 
   dig -t axfr a.org   完全区域传送  把记录全部拿过来    使用TCP53号端口传输 
   
   ------------------------------------------------------------------------------------------------------------------------
   反向解析:172.16.zone
   vim /etc/named.conf
   添加如下:
   zone "16.172.in-addr.arpa" IN{
                type master;
                file "172.16.zone";
   };
   ------------------------------------------------------------------------------------------------------------------------
   cd /var/named/
   vim 172.16.zone
   cp a.org.zone 172.16.zone
   vim !$
   
   $TTL 1200
@  IN  SOA   ns1.a.org      admin.a.org. (
                                                                              2011081601
                                                                               1H
                                                                               10M
                                                                                7D
                                                                                1D )
                  IN                                                           NS     ns1.a.org.

                  IN          NS       ns2.a.org

1.100        IN                                                          PTR      ns1.a.org.

2.100        IN         PTR     ns2.a.org.
1.100        INPTR     mail.a.org.
3.100    IN   PTR     www.a.org.
100.100    INPTR     ftp.a.org.   
---------------------------------------------------------------------------------------------------------
   检查语法错误 :
    named-checkzone "16.172.in-addr.arpa" /var/named/172.16.zone
    
    service named restart
    
   OK! 一个完整的DNS服务器就建立好了 
0 0