一: DNS基础知识
  1.计算机名称
    a. netbios名
    b. FQDN名
  2.名称解析
    a.什么域名解析
      将计算机名称翻译成IP地址的过程称之为域名解析。
    b.netbios命称解析
      —广播(通过向网络中发送广播包的方式获取对方的ip地址)    
      —INhost文件解析(通过向inhost文件中添加对方的ip地址解析)
      —wins解析(通过wins服务器解释对方的ip地址)
    c.FQDN解析
       —host文件解析(和inhost一样)
       —NIS 解析(通过NIS服务器解析)
       —dns解析 
  3. DNS的体系结构
    a.名称空间
    b.DNS服务器
      —主服务器
      —从服务器
      —缓存服务器
     c.DNS客户机
   4.DNS的名称解析过程
     a.正向解析(名称——ip地址)
     b.反向解析(ip地址——名称)
 二:配置DNS服务器的过程
    1.安装bind软件
     a.rpm方式 
    #rpm -vih bind (主程序)
    #rpm -vih bind-chroot(使用chroot模式)
    #rpm -vih caching-nameserver(缓存服务器)   
    b.编译方式(chroot)
   #groupadd named (新建named用户组)
   #useradd -g named named(新建named用户名并指定用户组为named)
  创建chroo环境 
   #mkdir /usr/local/chroot
   #mkdir /usr/local/chroot/etc
   #mkdir /usr/local/chroot/dev
   #mkdir /usr/local/chroot/var
   #mkdir /usr/local/chroot/var/run
   #mkdir /usr/local/chroot/var/named
   #mkdir /usr/local/chroot/dev/null C 13
   #mkdir /usr/local/chroot/dev/zero C 15
   #mkdir /usr/local/chroot/dev/random C 18
   #chmodnamed:named /usr/local/chroot/var/named/run
  #cp /etc/localtime/ /usr/local/chroot/etc
安装bind软件
# tar -zxvf bind....tar.gz
# cd bind....
# ./configure --prefix=/usr/local/bind --enable-threeads --disable-ipv6
# make
# make intall
 创建相关配置文件
#touch /usr/local/chroot/etc/named.conf
#/usr/local/bind/sbin/rndc-confgen >/usr/local/chroot/etc/named
#从ftp:/ftp.internic.org下载根区域数据库文件到/usr/local/chroot/var/named
 
  2.修改named.conf文件配置DNS属性
     #vi /etc/named.conf (rpm 方式安装的bind默认的路径在/etc下)
   a. options {
    子语句; 
 };
   其中子语句有:
    directory "路径";
   设置区域数据库文件的存放路径
    recursion yes/no;
   设置服务器是否支持递归查询
    forwarders {ip 地址;.....};
   设置转发的地址
    allow-transfer {ip 地址;.....};
  设置服务器允许和那些dns服务器进行区域复制
    allow-recursion {ip 地址;.....};
  设置服务器允许和那些客户机进行递归查询
    allow-query {ip 地址;.....};
  设置服务器允许哪些客户机进行查询
    blank-hole {ip 地址;.....};
  设置服务器拒绝哪些客户机查询
    listen-on [port 端口号] {ip 地址;.....};
     设置服务器监听的端口与地址
    
    b. zone "区域名" IN {
                                        子语句
};
    子语句:
      type master/slave/hint;
     设置区域类型
      file "文件名";
     设置区域数据库文件名
      masters {ip 地址;};
      设置当type为slave时候主服务器的位置
      allow-update { none;ip 地址; key "名称"; };
  
    c.include "文件路径";
     包含指定的文件路径
    d. view "名称" {
           math-client {ip 地址列表;};                  
           zone "区域名"{.....};
             }//定义解析视图
    e. logging {
            channel "通道名"{//定义记录通道
             选项;
             category "类别名" {//设置指定类别的日志采用哪个通道记录
            "通道名"}
}//设置dns内部日志的记录方法
 
   channel 的子选项:
    file 文件名 [versions 数字] [size 数字];//设置将日志记录的指定的文件中
     syslog 服务器的类型
    //设置dns利用syslog记录
    severity 日志等级
  //设置记录指定等级的日志
   print-category yes/no;
  //设置是否记录事件发生的时间
    print-serverity yes/no;
   //设置是否记录事件发生的等级
 dns 内部事件的类型:
       queries  查询事件
       update   动态更新
       resolver  名字解析
       config    配置文件的分析和处理
       client    处理客户端的请求
       default   所有为明确的事件
 
     g. acl 名称 { ip 地址/网络号;};
    //定义地址列表
 
     h. controls {
             [ inet ip 地址 //设置rcdc监听的地址
               port 数字 //设置rndc监听的端口
               allow {地址列表;}];//设置允许远程连接rndc的客户机列表
            };
   //设置rndc的工作参数
  i. key "名称" {
      algorithm   hmac—md5;
      secret   "密文"
};//定义管理密钥
 
 
   3.创建区域数据库文件
   $TTL 数字;
   $ORIGIN 区域名
   $INCLUDE 文件路径
 [区域名/@/...] [TTL] IN SOA 主机名 mail地址(
        序列号 //数据库文件的序号
        更新间隔 //从服务器需要多长时间更新一次
        重试间隔     //如果从服务器更新失败等多长时间重试一次
        最大有效时间  //从服务器始终无法更新则在最大有效时间后从服务器的数据库文件失效
        默认TTL值  //定义默认TTL值
 -NS 记录
//设置区域的名称服务器的位置
 -A 记录
 // 设置主机名对应的ip地址
 -CNAME 记录
//定义主机的别名
 -PTR 记录
//定义反向指针设置ip地址对应的主机名
 -MX 记录
 //设置区域的邮件服务器位置