zoukankan      html  css  js  c++  java
  • Redhat Linux9/AS3中DNS服务器的文本配置方式(包括子域实现)


    作者:syd168 2005-02-02 15:09:18 来自:Linux先生

    一、DNS的基本知识
       我们都知道,网络通信中,数据链路等使用的地址是MAC地址。网络层使用的是IP地址,传输层使用的地址是端口号,它们各有各的识别方式。而和用户关系最密切的就是IP地址,每个入网的(不论是Internet或Intranet)计算机都必须有自己的IP地址,这样才可保证信息的正确传递。但IP地址是数字构成的,非常难与记忆和表达他的实际用途,所以人们用形象的域名代替IP,方便交流和记忆,但需要注意的是,网络通信中数据包的传输是靠IP地址进行的。也就是说,当http://www.syd.com向www1.syd.com发�...为的DNS服务器。
      目前为止,实现这种域名解析的方法主要有三种:
      1)hosts文件,但要求所有互相解析的机器必须都配置
      1)NIS (SUN的技术)集中管理域名,只适合局域网,原因大家自己想
      3)DNS 实现域名的层次化,分布式管理,目前大部分都是这种方式
    DNS服务的配置比较难,而且可能需要ISP的支持,DNS也是各种网络应用服务的基础,例如网站,邮件。。。都需要域名的支持,而且有了DNS,IP的移植就方便多了。
      二、Linux下配置DNS服务器的条件
       目前的各种Linux中都提供了实现DNS服务的软件,而且默认大部分都是直接安装的(这与Linux主要面向服务领域的宗旨是分不开的)。Linux中的DNS服务器软件叫bind,目前是版本9吧.它的管理程序叫named(这里的d表示守护进程,也即Windows中的服务)
       1)检查是否安装DNS服务软件
        #rpm -ql bind
       如果没有安装,可以添加:
       #rpm -ivh *bind*.rpm(RH9的第一张)
       #rpm -ivh *nameservere*.rpm((RH9的第二张))
     
      三、DNS服务器组成和配置方式
       DNS服务系统采用C/S结构,普通用户的机器是C,提供DNS解析服务的是S,客户端的配置相当简单,只需要在/etc/resolv.conf中添加DNS服务器的IP就可以了(最多三个),格式如下: 
       nameserver   172.16.0.3
       nameserver   10.8.10.244 (表示由这些机器完成域名到IP的翻译)
      (注意,实验中最好将自己的DNS服务器IP放在前面,否则可能测试失败,但上网速度要慢些,为了实验,值得!)
       DNS服务器端的配置主要包括主配置文件和区域文件。
       主配置文件:/etc/named.conf 完成区域的声名和全局配置(如子域声名,访问控制等等)
       区域文件(默认在/var/named下),文件名与主配置文件中声名的一样,主要完成DNS资源记录(包括SOA,MX,A,NS,CNAME等等),下面的配置文件中详细说明。


    ====================================================================
                           下面的内容是实现过程
    =====================================================================
      四、文本配置的实现
       1.配置规划
        为了大家能够容易看懂,这里我先把我实现的设想写出来:
       我在自己的机器(512MB,80GB,1.7GHz,64MB Vcard)上安装了两个RH AS 3系统,这样我总共有3台机器进行试验。我的目的是在两个Linux系统中进行试验,实现域名解析和子域名。
       我要实现的域是syd168.com,域中包含的机器有:www,bbs,ftp,mai,ssl
    它们分别用于完成网站,BBS,FTP,电子邮件和电子商务站点,而且都在一个机器上(172.16.0.3),实际中常常在不同的机器上。
       另外,我计划实现syd168.com与的子域sub.syd168.com,子域有它自己的主机解析记录(www,mail,ftp,ssl...),并跨网段。
       提示,如果在一个机器上,各种服务对应到不同的域名要用到虚拟主机技术,以后我会发布它们的实现方法,其实这里有很多相关资料的。
       RH AS1:
         IP:172.16.0.3/16   
         网关:172.16.0.2 
         DNS客户配置172.16.0.3
       RH AS2:
         IP:172.16.0.4/16   
         网关:172.16.0.2  
         DNS客户配置172.16.0.4

       1.配置主配置文件
          当安装完Bind之后,默认产生主配置文件/etc/named.conf
         #vi /etc/named.conf 其中加入如下内容

    **********************/etc/named.conf**************************
          options  {
     
     directory "/var/named";  //区域文件的存放位置
     forwarders {10.8.10.244;};
              //allow-query {172.16.0.0/16};
              //allow-transfer {172.16.0.0/16;};
              //forward  only;
            };
       controls {
     inet 122.0.0.1 allow { localhost;         
               172.16.0.3;172.16.0.4;} keys { rndckey; };
             };

      zone "." IN {
     type hint;
     file "named.ca";
       };
       zone "localhost" IN {
     type master;
     file "localhost.zone";
     allow-update { none; };
       };
    zone "0.0.127.in-addr.arpa" IN {
     type master;
     file "localhost.arpa";
     allow-update { none; };
    };

    //=====================新加入的内容=====================
    zone "syd168.com" IN {   //要实现syd168.com域
     type master;  //要实现的是主域
     file "syd168.com.zone";//主域的记录文件(好记的名字)存放在/var/named下
    };
    zone "0.16.172.in-addr.arpa" IN {  //syd168.com的反向解析区域
     type master;            //类型是主要区域
     file "syd168.com.arpa"; //反向区域记录的存放文件(好记的名字),位置同上
    };
    //=====================新加入内容结束=====================

    include "/etc/rndc.key";
      


       2.建立两个区域文件/var/named下
        1)#vi /var/named/syd168.com.zone
     


     //=============正向区域文件/var/named/syd168.com.zone=============
        
       $TTL 2h  
    syd168.com. IN SOA www.syd168.com. master.syd168.com. (   //最左边的syd168.com可以简化为@,  后面依次为 IN SOA  主DNS服务器域名  DNS服务器管理员邮件
       20040730 ;serial number  //区域序列号,当修改时要增加,否则从域可能不一致!
       2h  ;refresh timeout //从域刷新超时时间 
       40m  ;retry  refresh timeout //从域重试刷新时间
       1w  ;expire timeout //从域刷新失败并认为主域无效的时间
       2h  ;TTL time
     )
    //以下每行都要靠左,即左侧不要留出空白
    syd168.com. IN NS www.syd168.com.  //表示syd168.com的域名由www.syd168.com(或IP)翻译

    www  IN A 172.16.0.3       //www.syd168.com对应的IP为172.16.0.3
    www  IN A 172.16.0.4       //www.syd168.com对应的IP为172.16.0.4,单域名多IP可实现负载均衡

    ftp  IN A 172.16.0.4     //左边也可以写为ftp.syd168.com. 注意!这时最后必须多个点,否则错误。
    mail  IN A 172.16.0.5     //全域名必须以点结束!
    bbs  IN A 172.16.0.6     //IN 表示Internet,A表示Address
    test  IN A 172.16.0.7    //注意 ,这些IP必须可连同,否则徒劳!
    ssl  IN A 172.16.0.3

    syd168.com. IN MX 10 mail.syd168.com.   //表示发往syd168.com域的邮件由mail.syd168.com主机转发,MX表示mail exchange

    //以下两行是实现子域的方法,要实现的子域是syd168.com的子域sub.syd168.com,父域中给出指向子域的服务器地址
    sub  IN NS www.sub.syd168.com.      //表示后缀为sub.syd168.com的域名由www.sub.syd168.com负责翻译,NS 表示Name Server
    www.sub IN A 172.16.1.3            //表明www.sub主机在本域中的主机解析为172.16.1.3

    //以下是主机的别名,我一般不设,因为上面已经是标准名了,要别名干什么,如果需要也可直接设置主机名
    www1  IN CNAME www
    ftp1  IN CNAME ftp
    bbs1  IN CNAME bbs
    mail1  IN CNAME mail
    test1  IN CNAME test
    ssl1  IN CNAME ssl1

    //=============正向区域文件结束=============

    //=============反向区域文件/var/named/syd168.com.arpa=============

      $TTL 2h
    @ IN SOA www.syd168.com. master.syd168.com. (
          20040730 ;serial number
          2h  ;refresh timeout 
          40m  ;retry  refresh timeout
          1w  ;expire timeout
          2h  ;TTL time
        )
     IN NS www.syd168.com.  //注意本行左侧需要有空格,或者填入"区域名.",即0.16.172.in-addr.arpa.

    3 IN PTR www.syd168.com.    表示 www.syd168.com对应的主机IP为172.16.0.3(反向解析)
    4 IN PTR ftp.syd168.com.
    5 IN PTR mail.syd168.com.
    6 IN PTR bbs.syd168.com.
    7 IN PTR test.syd168.com.

    //=============反向区域文件结束=============

       3.测试与调试配置
        修改完成后,保存推出
        1)#service named start  //启动named服务(提供DNS服务的进程),常见的错误是缺少.或;或左边多余的空格,排除直道本命令没有错误
        2)#named   //我的虚拟机必须这样才可解析,正常机器大概不需要,并且我在/etc/rc.d/rc.local中加入了运行named的行
        3)#named -g 检查是否有错误,一般会很清楚,很多人说服务运行正常,但无法解析,除了/etc/resolv.conf中没有添加DNS服务器的IP,大多错误都可以通过这个命令排除
        4)#host www.syd168.com   //测试是否成功? 如果成功,别的主机记录一般也没什么问题。host 可以用ping代替
        5)host 172.16.0.3 //测试反向解析
        6)host -t MX syd168.com  //测试邮件交换器
        7)host -t NS syd168.com  //测试域名服务器

        补充说明:#named -g 非常有用!反正我的所有DNS错误都是用它排除的。主要是直观,能给出出错的行。实质上是日志的更细显示
                 如果本机测试没有问题,强烈建议在远程测试,开始一般都失败,为什么?因为你没有添加nameserver 172.16.0.3 到它的/etc/resolv.conf中。试试看?哈哈,原来如此简单!
                
     
      五、子域的实现
       1.子域规划
          其实,子域的实现上面都写出来了。这里也是重复。我要实现的实父域syd168.com的子域,什么意思啊?就是客户机在父域上查询(一般都这样)的时候,发现后缀包含子域的部分,就转到子域所在的服务器上查找,就这么简单。   
       2.子域的实现
           1)修改主域的区域文件,主机记录部分添加如下2行
           sub  IN NS www.sub.syd168.com.      //表示后缀为sub.syd168.com的域名由www.sub.syd168.com负责翻译,NS 表示Name Server
           www.sub IN A 172.16.1.3            //表明www.sub主机在本域中的主机解析为172.16.1.3
           2)在子域服务器上修改主配置文件和建立区域文件,方法和上面的一样,只是区域为sub.syd168.com,反向区域比较复杂,再说我马上要走了,,,时间。。。
          
       3.测试配置
         要测试子域,必须配置正确,根据子域的原理,客户在父域中查不到时才到子域查,所以测试的时候,测试机器上的DNS客户配置一定要去掉子域服务器的IP,否则您的测试是错误的!不可信的。只有证明了DNS查询是经由主域服务器再到子域服务器上的。


       好了,时间有限,水平有限,错误难免,欢迎批评指正!共同学习互相促经是我们的一贯宗旨!我得走了。。。火车。。

  • 相关阅读:
    准备 FRM 考试——方法、工具与教训
    930. 和相同的二元子数组 前缀和
    1906. 查询差绝对值的最小值 前缀和
    剑指 Offer 37. 序列化二叉树 二叉树 字符串
    815. 公交路线 BFS
    518. 零钱兑换 II dp 完全背包
    1049. 最后一块石头的重量 II dp
    5779. 装包裹的最小浪费空间 二分
    5778. 使二进制字符串字符交替的最少反转次数 字符串 滑动窗口
    474. 一和零 dp
  • 原文地址:https://www.cnblogs.com/huqingyu/p/1377815.html
Copyright © 2011-2022 走看看