LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 11658|回复: 32

用实验快速掌握DNS配置[原创]

[复制链接]
发表于 2003-7-4 15:28:17 | 显示全部楼层 |阅读模式
用实验快速掌握DNS配置

    由于配置DNS很重要,本文主要以做实验来快速掌握DNS配置.
    [实验目的]
    1.配置一个只可转发请求的DNS.
    2.配置一个masterDNS.
    3.配置一个slaveDNS.
    [实验环境]
    1.两台互连的计算机.
    2.系统Redhat 8.0.
    [实验步骤]
    一.实验准备.
      1.两台机关掉iptables
      # service iptables stop
      # chkconfig iptables off
      2.两台机检查安装必要软件
      # rpm -q  bind
      # rpm -q  bind-utils
      # rpm -q  caching-nameserver
     根据结果,安装没安装的软件,从安装盘里找出没安装的包,有选择的执行下列步骤:
      # rpm  -Uvh  bind-9*
      # rpm  -Uvh  bind-utils*
      # rpm  -Uvh  caching-nameserver*
     3.互连两台机.
      ①编辑两台机的相应文件.(编辑最好用vi,以下也是)
      机器1:
      /etc/sysconfig/network-scripts/ifcfg-eth0
      DEVICE=eth0
      BOOTPROTO=none
      ONBOOT=yes
      IPADDR=192.168.0.254
      NETMASK=255.255.255.0
      /etc/hosts
      127.0.0.1      localhost  localhost.localdomain                           
      /etc/resolv.conf
      nameserver   192.168.0.254
      /etc/sysconfig/network
      NETWORKING=yes
      HOSTNAME=server1
      
      机器2:
      /etc/sysconfig/network-scripts/ifcfg-eth0
      DEVICE=eth0
      BOOTPROTO=none
      ONBOOT=yes
      IPADDR=192.168.0.1
      NETMASK=255.255.255.0
      /etc/hosts
      127.0.0.1      localhost  localhost.localdomain
      /etc/resolv.conf
      nameserver   192.168.0.1  
      /etc/sysconfig/network
      NETWORKING=yes
      HOSTNAME=station1
      ②分别在两台机上运行:
       机器1:
       # ifdown  eth0
       # ifup    eth0
       # ping  192.168.0.1
       机器2:
       # ifdown  eth0
       # ifup    eth0
       # ping  192.168.0.254
       主意:两台机能互相ping通,继续下列实验,不通,再找找原因.
     二.机器1上配置一个masterDNS.
       机器1上:
       1.编辑/etc/named.conf文件:
       /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”;
     };

     zone   “example1.com” IN {
                 type   master;
                 file   “db.example1”;
     };

     zone   “0.168.192.in-addr.arpa” IN {
                 type  master;
                 file   “db.192.168.0”;
     };
    ----------------------------------------------------------------------
     解释上述文件,如果你对上述文件比较熟悉,可以跳过此段.
     上述文件有六部分ption ,5个zone.
     其中option,”.”,”localhost”,”0.0.127.in-addr.arpa”原来就有.
     “example1.com”,“0.168.192.in-addr.arpa”为现在子网的正向和反向搜索区的
定义,“db.example1”,”db.192.168.0”的名字是随便取的,它们必需在/var/named/下
存在.
     主义{}前后及中间的空格,及分号.
    -----------------------------------------------------------------------   
    2.用vi创建两个文件,/var/named/db.example1,/var/named/db.192.168.0
     /var/named/db.example1
    $TTL  86400
    @     IN   SOA   server1.example1.com.  Root.server1.example1.com. (
               2003070401   1H  1M  1W  1D )
          IN   NS    server1.example1.com.
               IN    A    192.168.0.254
     server1   IN    A    192.168.0.254
     station1  IN    A    192.168.0.1
     www       IN    A     192.168.0.254
     ftp       IN    A     192.168.0.254
     pop       IN    A     192.168.0.254
     www1      IN    CNAME   server1.example1.com.
     ftp1      IN    CNAME   server1.example1.com.
     @         IN    MX    10    server1.example1.com.
     server1.example1.com   IN    MX    10    server1.example1.com.
    ----------------------------------------------------------------------
     解释上述文件,如果你对上述文件比较熟悉,可以跳过此段.
     上述文件是一个正向搜索的数据库:
     $TTL  86400 是文件开头,数字表示默认存活期,用秒计算的,做什么不用不要管它,
     记着添上就行.

     接着的格式就是:[domain] [class] <type>  <rdata>

     [domain]如: server1.example1.com ,www.
        Www是简写,实际会默认添上定义这个文件的那个 zone “example1.com”里的
     example1.com,即:www=www.example1.com.这个段可以升略不写,默认跟前一行的
     [domain]相同.@表示”example1.com”.

     [class]一般为internet类,即:IN ,可以省去不写.

     <type> 分别有SOA,NS,A,MX,CNAME,及反向数据库里的PTR.
          SOA=start of authority  必要的
          NS=nameserver   必要的
          A=域名和ip地址的映射.  必要的
          MX=mail exchange. 可选的
          CNAME=域名的一个假名   可选的
          PTR=用在反向:ip地址和域名的影射.  必要的

      假名不可以放在NS MX 的<rdata>字段.
      
      SOA 括弧中的5个数字:
      对应为( serial  refresh  retry  expire  Minimum )
      serial 可以是任何数字,一般:年月日修改数.
      refresh 是SOA信息的刷新时间.
     Retry是与授权服务器联系的频率.
     Expire  slave服务器保存有关的区域信息,不更新它的时间间隔.
     Minimum  区域中记录的存活时间.

     H=hour  D=day  M=minute  W=week
   
     SOA 后的server1.example1.com.表示这个区域授权给哪台机.
              root.server1.example1.com.表示管理人.用.代替@
     
     完整域名后一定要加.号,否则会自动为你加”example1.com”.

      以上如果你不懂,不用急,以后慢慢想清楚.
    -----------------------------------------------------------------------  

    /var/named/db.192.168.0
    $TTL   86400
    @     IN   SOA   server1.example1.com.  root.server1.example1.com. (
               2003070401   1H  1M  1W  1D )
           IN   NS    server1.example1.com.
    254.0.168.192.in-addr.arpa       IN    PTR    server1.example1.com.
    1.0.168.192.in-addr.arpa         IN    PTR    station1.example1.com.
    ----------------------------------------------------------------------
     解释上述文件,如果你对上述文件比较熟悉,可以跳过此段.
     此文件是反向搜索的数据库.
     主意IP反着写.
     其它的不用解释.
    -----------------------------------------------------------------------   
   3.检验:
     # cat >> /var/log/messages
     ******
     ******
     [ctrl]+d
     # service named restart
     # host  server1.example1.com
     # host  station1.example1.com
     # host  www.example1.com
     # host  www1.example1.com
     # host  192.168.0.254
   
     看看是否可以解析,如:server1.example1.com 对应的IP为192.168.0.254,
192.168.0.254对应域名为server1.example1.com.如果不能解析,说明,配置有问题,
可以到日志/var/log/messages里查看.具体位置在文件末尾的两行*******后,和调试
程序一样,甚至他会告诉你哪个文件,哪行错了.修改后,重新执行:
     # cat >> /var/log/messages
     ******
     ******
     [ctrl]+d
     # service named restart
     # host  server1.example1.com
     # host  station1.example1.com
     # host  www.example1.com
     # host  www1.example1.com
     # host  192.168.0.254
直到无错,且能够正确解析.
  
三.机器2上配置一个只负责转发请求域名解析的DNS
     机器2上:
     1.编辑/etc/named.conf
     /etc/named.conf
     options {
                directory “/var/named/”;
                forwarders { 192.168.0.254; };
     };
    ........
     ------------------------------------------------------------
     解释上述文件,如果你对上述文件比较熟悉,可以跳过此段.
     forwarders  { 192.168.0.254; }表示,如果此DNS不能解析出IP,则交给
192.168.0.254这个DNS,其实在配置masterDNS时,也可以在option里加一个forwarders
具体IP就是你平时上网用的DNS.如果有两个或多个也可以这样写:
{ 210.35.92.77.45; 210.35.77.46; } 或者 { 210.35.92/24; 192.168.0.254 ;}
     .....表示其它的东西,不要动.
   ---------------------------------------------------------------------
    2.检验:
     # cat >> /var/log/messages
     ******
     ******
     [ctrl]+d
     # service named restart
     # host  server1.example1.com
     # host  station1.example1.com
     # host  www.example1.com
     # host  www1.example1.com
     # host  192.168.0.254
   
     看看是否可以解析,如:server1.example1.com 对应的IP为192.168.0.254,
     192.168.0.254对应域名为server1.example1.com.
     这个配置比较简单,一般不会有笔误,如果错误,排除bug的方法同检查masterDNS
一样,看日志.

三.机器2上配置一个slaveDNS
    机器2上:
    1.编辑/etc/named.conf
    /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”;
     };

     zone   “example1.com” IN {
                 type   slave;
                 masters { 192.168.0.254; };
                 file   “db.example1-slave”;
     };

     zone   “0.168.192.in-addr.arpa” IN {
                 type  slave;
                 masters { 192.168.0.254; };
                 file   “db.192.168.0-slave”;
     };
     ------------------------------------------------------------
     解释上述文件,如果你对上述文件比较熟悉,可以跳过此段.
     与masterDNS,不同的是:type  slave;  masters { 192.168.0.254; };
     slaveDNS的效果就是定期的向masterDNS复制一份数据库.
     一个网络一般只能有一个masterDNS,多个slaveDNS,slaveDNS用来使DNS的
     访问负载均衡.减轻masterDNS的负担.
      此时,删掉上面配置forward 的那句:forwarders { 192.168.0.254; };
      加着也没错,只不过,容易判断是否是slaveDNS在起作用。
     ------------------------------------------------------------
     2.检验:
     # cat >> /var/log/messages
     ******
     ******
     [ctrl]+d
     # service named restart
     # host  server1.example1.com
     # host  station1.example1.com
     # host  www.example1.com
     # host  www1.example1.com
     # host  192.168.0.254
   
     看看是否可以解析,如:# host server1.example1.com  显示:
      www.example1.com has address 192.168.0.254
     # host 192.168.0.254 显示:
      254.0.168.192.in-addr.arpa domain name pointer server1.example1.com.
0.168.192.in-addr.arpa.

     且查看在/var/named/下是否生成: db.example1-slave , db.192.168.0-slave
     两个文件.
     如果,没有生成这两个文件,说明配置有文体。具体检查日志/var/log/messages
排除错误。直到无错,且自动生成两个文件,且能正确解析。
     另外,一定注意,机器1和机器2的iptables保持关掉。
[实验总结]
     本文只是为了让你快速入门,且告诉你一个简单的手动配置一个DNS的方法,具体的
原理讲的很少,如果想了解更多,请参考其他专业的文档。如果你即使在不熟的情况下,
做完此实验,且做的时候多想过一些问题,绝对有助于看其他文档。
[题外话]
     至于让机器2作为一般的客户端,采用机器1的DNS,需要修改/etc/resolv.conf文件,
不属于DNS配置的范围。
     至于如何让机器1连到Internet,更不是本文所讨论的范围。

如果你看不清楚网页,参考附件。word文档
若下载无效时:
http://www.linuxsir.cn/bbs/attachment.php?s=&postid=276015
 楼主| 发表于 2003-7-4 15:38:33 | 显示全部楼层
word文档

原来的附件有点问题,我发现可以上传附件了,所以重新修改了一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2003-7-4 16:43:22 | 显示全部楼层
极为精采!
多谢兄弟,辛苦了

北南 致意
发表于 2003-7-4 19:51:31 | 显示全部楼层
这是教材上的吧
 楼主| 发表于 2003-7-4 21:43:43 | 显示全部楼层
以前觉的DNS是个恐怖的东西,在eloo培训时,在我做完它的实验时,才有点头绪了,觉的实验不错,然后自己以RH253的DNS试验为原本,再加了自己的一些理解,完成本文。我也想过把原实验教材原封不动的抄上来,又怕大家不了解,实验时的网络架构,所以,我自己加了一些内容。
网页上的内容太乱了,然后我又让南北兄帮我把原doc文件,作为附件加上去了,doc文件比较清晰。
发表于 2003-7-5 14:36:42 | 显示全部楼层
多谢,真的很不错
发表于 2003-7-8 23:10:25 | 显示全部楼层

谢谢了!!

正需要这种资料。

不知一个有iptabls的linux机了,一个win98能实现吗?
发表于 2003-7-12 10:52:26 | 显示全部楼层
客户机的DNS既可以设成masterDNS的IP,也可以设成slaveDNS的IP,
这样说对吗?
 楼主| 发表于 2003-7-12 11:32:46 | 显示全部楼层
客户机的DNS既可以设成masterDNS的IP,也可以设成slaveDNS的IP,

这句话显然不对,首先客户机没必要作服务器。
无论是masterDNS还是slaveDNS,都是服务器。
客户机只需要制定一个或两个DNS就行了,而这两个DNS就是服务器的masterDNS或slaveDNS.
发表于 2003-7-14 13:02:42 | 显示全部楼层
不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表