DNS服务器

                                    DNS服务器
一.DNS服务基础知识
  1. 名称解析
     (1) netbios名称解析
         -广播解析
         -lmhosts解析
         -Wins解析
     (2) FQDN名称解析
         -hosts解析
         -NIS解析
         -DNS解析
  2. DNS体系结构
     (1) 域名空间
     (2) DNS服务器
         -主DNS服务器
         -从DNS服务器
         -缓存DNS服务器
     (3) DNS客户机
  3. DNS解析过程
     (1) 正向解析
   
DNS 客户端向 DNS 服务器查询 IP 地址时,或 DNS 服务器在向另外一台 DNS 服务器查询 IP 地址时,有以下三种查询方式:
l         直接从缓冲存储器解析
  可以直接从 DNS 客户端或 DNS 服务器的高速缓冲器中获得查询结果。
l         递归查询 
也就是 DNS 客户端送出查询要求后,如果本地 DNS 服务器内没有需要的数据,则 DNS 服务器会代替客户端向其他的 DNS 服务器查询,一般由 DNS 客户端所提出的查询要求是属于递归查询。
l         循环查询 
一般 DNS 服务器与 DNS 服务器之间的查询属于这种查询方式,当第 1 DNS 服务器在向第 2 DNS 服务器提出查询要求后,如果第 2 DNS 服务器内没有所需要的数据,则它会提供第 3 DNS 服务器的 IP 地址给第 1 台服务器,让第 1 DNS 服务器向第 3 DNS 服务器查询。
     (2) 反向解析
  域名反向解析可以让 DNS 客户端利用 IP 地址查询其主机名称,服务器 利用 in-addr.arpa 反向指针,将一个 ip 地址指点向域名。
二. 配置DNS服务器的过程
  1. 申请区域管理权
  2. 配置静态IP地址
     #netconfig -d 接口名
  3. 安装bind软件
     (1) rpm安装方式
     #rpm -ivh bind-9.2.1-16.i386.rpm
     #rpm -ivh bind-utils-9.2.1-16.i386.rpm
     #rpm -ivh caching-nameserver-7.2.7.i386.rpm
     (2) 编译安装方式
     #tar -xzvf bind-9.2.1.tar.gz
     #cd bind-9.2.1
     #./configure --prefix=/usr/local/bind
                  --enable-threads
                  --disable-ipv6
     #make
     #make install
     #cd /usr/local/bind
     #mkdir etc  var  var/run
     #groupadd named
     #usreadd -g named named
     #chown -R named.named var
  4. 修改named.conf文件
      #vi  /etc/named.conf
    named.conf的配置语句
     (1) options {
              .........
              配置子语句;
              .......
            };
     作用: 定义DNS服务器全局选项
   子语句:
        -version "版本号"; //定义bind的版本号
        -directory  "路径";
       设置数据文件存放的位置
        -recursion yes/no;
       设置服务器是否递归查询
        -forwarders { ip地址; };
       定义服务器的转发器地址
        -allow-query { ip地址列表; };
       定义允许DNS服务器发送查询请求的客户机列表
        -allow-transfer { ip地址列表; };
       定义服务器能够向哪些服务器进行区域复制
        -allow-recursion { ip地址列表; };     
       设置服务器允许哪些客户机进行递归查询
        -black-hole { ip地址列表; };
      设置拒绝查询的客户机列表
       
      -listen-on [port 端口号] {ip地址列表;};
     设置监听端口
   (2) zone "区域名" IN {
             ......
             子语句;
             .....
       };
     作用:设置服务器管理的区域信息
   子语句:
        -type master/slave/hint;
       设置区域的类型
        -file "文件名";
       设置区域数据库文件名
        -masters { ip地址; };
       设置主服务器位置,当type=slave时才需要设置
        -allow-update { none;/key "密钥名";/ip地址; };
        当type=master时,用于设置区域是否允许动态更新
    (3) include "文件路径";
       包含其他配置文件
    (4) controls {
 inet ip地址 allow { 主机名;/ip地址; } keys {密钥名称; };
       设置rndc工具的参数
   (5) key "名称" {
          .....
           子语句;
           .....
           };
      作用: 定义密钥
      子语句:
           -algorithm  hmac-md5;
          定义加密算法
           -secret "密文";
          设置密钥的内容
   (6) logging {
           .......
        channel 通道名  {//定义日志的记录通道
                 .........
                 通道选项;
                 .........
              };
         .......
        category 类别 {//设置指定类别的日志使用哪个通道
              ................
                 通道名;
              ............
              };
        };
     作用: 定义DNS服务器的内部日志的记录方式
     通道选项:
   -file "文件名" [versions 数字] [size 数字];
      设置将日志记录到指定的文件中
   -syslog 对象类型
      设置使用syslog服务进行日志记录
   -severity 等级
      设置事件的等级
   -print-category yes/no;
      设置是否在日志中记录日志的类别
   -print-time yes/no;
      设置是否在日志中记录事件发生的时间
   -print-severity yes/no;
      设置是否在日志中记录事件的等级
  事件类别:
    -queries //查询事件
    -config //配置文件的高级处理
    -update //动态更新事件
    -xfer-in //从其他服务器复制区域数据事件
    -xfer-out //向其他服务器复制区域数据事件
    -db  //所有数据库的操作事件
    -default //所有未分类的事件
  (7) view "名称" {
         match-clients { ip地址列表; };
         .....
         zone ...
         ......
        };
       定义解析视图
注: -利用named-checkconf可检查named.conf的语法错误
   4.创建区域数据库
      (1) 区域数据库文件的格式
      ......
      区域命令
      .........
      名称  [TTL]  IN  类型  值
      ......
      (2) 记录类型
        -SOA记录
       作用:设置区域的授权信息
       实例:
abc.com. 1D IN SOA ns.abc.com.admin.abc.com.(
                1111 //序列号
                1H   //更新间隔
               15M   //重试间隔
                1D   //有效期
                1D)  //默认TTL
       -NS记录
       作用:设置区域名称服务器位置
       实例:
       abc.com. IN NS ns.abc.com.
      -A记录
       作用:设置主机名对应的IP地址
       实例:
       www.abc.com . IN A 192.168.3.1
       ftp          IN A 192.168.44.1
     -MX记录
       作用:设置邮件交换器
       实例:
       abc.com. IN MX  10  mail.abc.com.
     -CNAME记录
      作用:设置主机CNAME
      实例:
      ftp.abc.com . IN CNAME www.abc.com .
    -PTR记录
     作用:定义反向指针,将IP地址指向域名
     实例:
      1     IN PTR  www.abc.com .
    (3) 区域指令
       -$TTL  数字  定义默认TTL
       -$ORIGIN 区域名 定义默认区域名
       -$INCLUDE 文件路径 包含指定的文件
       (4) 区域数据库文件的样本
       -正向区域数据库文件
       $TTL   86400
       $ORIGIN abc.com.
       abc.com.  IN  SOA ns.abc.com. admin.abc.com.(
              2222
              1H
             10M
              1D
              1D)
       abc.com. IN NS ns.abc.com.
       ns.abc.com. IN A 192.168.1.1
       ftp.abc.com.IN A 192.168.1.2
       mail.abc.com. IN A 192.168.1.3
       abc.com. IN MX 10 mail.abc.com.
     -反向区域数据库文件
       $TTL 86400
       @   IN SOA ns.abc.com.  admin.abc.com.(
               111
               1H
               10M
               1D
               1D)
           IN  NS  ns.abc.com.
      1  IN PTR ns.abc.com.
      2  IN PTR ftp.abc.com .
 注:-可利用"named-checkzone 区域名 区域数据库文件"命令检查区域数据库文件的语法问题
   4. 启动dns服务
      (1) rpm方式安装的bind
          -设置自动启动
          #ntsysv [--level 数字]
          -手工启动
         #service named start
     (2) 编译安装的bind
         -手工启动
         #/usr/local/bind/bin/named -c 配置文件路径 -p 53  -u 用户名
         -设置自动启动
         #vi /etc/rc.d/rc.local
       ..........
/usr/local/bind/bin/named -c 配置文件路径 -p 53  -u 用户名
 三. DNS客户机配置与测试
    1. Windows客户机
        (1) ping
        (2) nslookup
    2. Linux客户机
        (1) ping
        (2) host
        (3) dig
        (4) nslookup
四. DNS服务器配置案例
  案例一:现需要架设一台DNS服务器,具体要求如下:
      (1) 关闭递归,允许与从服务器进行区域传递
      (2) 该DNS服务器负责正向区域linux.cn和反向
192.168.1.0网段的解析,并作为主服务器
      (3) 为linux.cn和192.168.1.0区域添加从服务器,减轻主服务器的负载
      (4) 为保证DNS服务器安全,要求将两台DNS服务器配置chroot模式
     实例实施过程:
       1.主服务器的配置
         (1) 安装bind
         (2) 修改named.conf
         #vi named.conf
        ...........
        options {
             .....
             directory "/var/named";
             recursion no;
             allow-transfer { 192.168.1.222; };
             .....
           };
        .....
       zone "linux.cn" IN {
            type master;
            file "linux.zone";
          };
       zone "1.168.192.in-addr.arpa" IN {
            type master;
            file "192.zone";
          };
       (3) 创建区域数据库
          #vi /var/named/linux.zone
            $TTL 1D
            $ORIGIN linux.cn.
            linux.cn.  IN SOA dns.linux.cn. admin.linux.cn. (
                  333
                  1H
                  15M
                  1D
                  1D)
            linux.cn. IN NS dns.linux.cn.
            dns.linux.cn. IN A 192.168.1.2
            www.linux.cn . IN A 192.168.1.1
         #vi /var/named/192.zone
           $TTL 1D
           @   IN SOA dns.linux.cn. admin.linux.cn. (
                444
                1H
                15M
                1D
                1D)
               IN NS dns.linux.cn.
          1    IN PTR www.linux.cn .
          2    IN PTR dns.linux.cn.
      (4) 设置chroot运行环境
          -创建相关目录
          #mkdir /chroot/bind -p
          #cd /chroot/bind
          #mkdir dev etc var var/named  var/run var/run/named
          -创建设备文件
          #cd /chroot/bind/dev
          #mknod  random c 1 8
          #mknod  zero   c 1 5
          #mknod  null   c 1 3
          -复制相关文件到相应目录中
          #cp /etc/rndc.key  /chroot/bind/etc
          #cp /etc/rndc.conf /chroot/bind/etc
          #cp /etc/named.conf /chroot/bind/etc
          #cp /etc/localtime /chroot/bind/etc
          #cp /var/named/* /chroot/bind/var/named
         -修改相关目录及文件的权限
          #chown -R named.named /chroot/bind/var/run/
          #chmod 644  /chroot/bind/etc/rndc.*
     (5) 启动dns服务(以chroot运行模式)
        #/usr/sbin/named -t /chroot/bind -u named -p 53
     2. 配置从服务器   
         (1) 安装bind
         (2) 修改named.conf
         #vi named.conf
        ...........
        options {
             .....
             directory "/var/named";
             recursion no;
             allow-transfer { 192.168.1.2; };
             .....
           };
        .....
       zone "linux.cn" IN {
            type slave;
            file "linux.zone";
           masters { 192.168.1.2; };
          };
       zone "1.168.192.in-addr.arpa" IN {
            type slave;
            file "192.zone";
           masters { 192.168.1.2; };
          };
       (3) 设置chroot运行环境
          -创建相关目录
          #mkdir /chroot/bind -p
          #cd /chroot/bind
          #mkdir dev etc var var/named  var/run var/run/named
          -创建设备文件
          #cd /chroot/bind/dev
          #mknod  random c 1 8
          #mknod  zero   c 1 5
          #mknod  null   c 1 3
          -复制相关文件到相应目录中
          #cp /etc/rndc.key  /chroot/bind/etc
          #cp /etc/rndc.conf /chroot/bind/etc
          #cp /etc/named.conf /chroot/bind/etc
          #cp /etc/localtime /chroot/bind/etc
          #cp /var/named/* /chroot/bind/var/named
         -修改相关目录及文件的权限
          #chown -R named.named /chroot/bind/var/run/
          #chmod 644  /chroot/bind/etc/rndc.*
     (4) 启动dns服务(以chroot运行模式)
        #/usr/sbin/named -t /chroot/bind -u named -p 53
   案例二:现有一企业网,要实现DNS名称解析,具体要求如下:
      (1) 企业网中所有客户采用DHCP自动获取
      (2) 架设DNS服务器提供hfsje.edu区域的解析,并能够转发请求到202.102.192.68服务器上
      (3) 为每个客户机在DNS服务器上定义主机记录,实现主机间可用各自的DNS主机名相互访问
   案例实施过程:
      1. 配置DNS服务器
         (1) 安装bind
             ....
         (2) 修改named.conf
            #vi /etc/named.conf
           options {
                directory "/var/named";
                forwarders { 202.102.192.68; };
 
             }
           ......
           zone "hfsje.edu" IN {
                type master;
                file "hfsje.zone";
              allow-update { key "rndckey"; };
           };
          ......
        (3) 创建区域数据库
            ......
        (4) 启动DNS服务
            ......
          2. 配置DHCP服务器
      (1) 安装dhcp软件
          ....
      (2) 修改/etc/dhcpd.conf
          #vi /etc/dhcpd.conf
          ddns-update-style interim;
          default-lease-time 3600;
          max-lease-time 7200;
     subnet 192.168.1.0 netmask 255.255.255.0 {
          range 192.168.1.3 192.168.100;
          option routers 192.168.1.254;
          option domain-name "sje.cn";
          option domain-name-servers 192.168.1.2;
          }
          key "ddns" {
              algorithm hmac-md5;
              secret "123asdljfoqwewe";
          };
          zone sje.cn {
              primary  127.0.0.1;
              key "ddns";
          }
       (3) 启动dhcp服务
          #service dhcpd start
   案例三:配置DNS服务器,实现对双线主机进行解析,能够让不同区域的客户机对同一个主机名解析可获得不同的IP地址
     配置过程:
      1. 安装bind软件
         ....
      2. 修改named.conf
         #vi /etc/named.conf
         .....
         options {
             directory "/var/named";
             allow-transfer { none; };
             forwarders { 202.102.192.68; };
             };
         view "lan" {
          match-clients { 192.168.1.0/24; };
          .....
          zone "sje.cn" IN {
             type master;
             file "sje.zone";
           };
          zone "1.168.192.in-addr.arpa" IN {
              type master;
              file "192.zone";
           };
           };
         view "wan" {
          match-client { any;!192.168.1.0/24; };
          zone "sje.cn" IN {
              type master;
              file "sjewan.zone";
          };
          };
         .....
      3. 创建区域数据库
         ....
      4. 启动服务
         ...
  
    

你可能感兴趣的:(linux,职场,网络管理,休闲,DNS服务器)