DNS域名系统

发表于:2007-06-09来源:作者:点击数: 标签:
一、域名系统 当我们把众多的计算机联结到一起,一个显而易见的问题就是如何标识 网络 中的每一个主机。 Internet中使用称作网际协议地址(IP地址)的32位2进制数标识机器,它为通过Internet发送报文 分组给规定的报源与报宿地址提供了一种方便而简洁的表达方

  一、域名系统

  当我们把众多的计算机联结到一起, 一个显而易见的问题就是如何标识网络中的每一个主机。
Internet中使用称作网际协议地址(IP地址)的32位2进制数标识机器,它为通过Internet发送报文
分组给规定的报源与报宿地址提供了一种方便而简洁的表达方式,但却很难记忆,当一台主机
要访问另外一台主机时,必须首先获知其IP地址。这便引出了DNS(Domain Name System)

  DNS是目前Internet所使用的域名系统,对其简单的理解就是一个分布的数据库系统, 这个分布
式数据库的特点是:允许局部对部分数据的控制;所有的局部数据通过客户/服务器(client/server)方式
提供给全网使用。在DNS的客户/服务器模型中,服务器端由一个叫做名字服务器(name server)的程
序构成, 客户端称为解析器(resolvers),它通常是一组库程序.

  二、DNS域名服务器的配置

  UNIX环境下,域名服务器分为主域名服务器和辅域名服务器两类。下面以作者配置的一个实
例(本例中,域名为cma.gov.cn;主域名服务器为:IP:203.93.51.100;辅域名服务器为:
203.93.51.101)对它们进行分析讨论:

  需配置的与主域名服务器相关的文件有:/etc/resolv.conf ; /etc/named.boot; /etc/nsswitch.conf;
~domain/named.local;~domain/named.hosts;~domain/named.rev; ~domain/named.cache ;
下面对这几个文件的格式逐一分析说明:

  (1)/etc/resolv.conf文件:

domain    cma.gov.cn
nameserver    203.93.51.100


  "domain"一行定义了本网的域名为cma.gov.cn;
  "nameserver"一行定义了名字服务器的IP地址,最多可列出三个名称服务器。在本例中
为203.93.51.100。

  (2)/etc/named.boot文件:

 primary 0.0.127.in-addr.arpa     named.local
 primary cma.gov.cn                 named.hosts
 primary 51.93.203.in-addr.arpa   named.rev
 cache   .                          named.cache

        第一组primary语句定义了主机解析自反地址文件,其数据存放在/var/named/named.local文件中。

  第二组primary语句定义了本域名服务器为哪些域的主域名服务器(本例中只存在一个域,若
在大型的域名服务机构,如:CNNIC的主域名服务器便会定义为多个域的主域名服务器)及其正向
解析数据的存放位置,本例中存放在/var/named/named.hosts文件中。

  第三组primary语句定义了该域名服务器为地址反向域51.93.203.in-addr.arpa的反向域名解析服
务器。其反向解析数据存放在/var/named/named.rev文件中。

  cache语句定义了缓存文件存放/var/named/named.cache文件中。

  (3)/etc/nsswitch.conf文件:


passwd:     files
group:      files
hosts:      files       dns
networks:   files

  找到"hosts:files"这一行, 改为"hosts:files dns"

  (4)/var/named/named.local文件:

  @       IN SOA  dns.cma.gov.cn. root.dns.cma.gov.cn. (
              858240768     ; Serial Number
              10800         ; Refresh after 3 hours
              3600          ; Retry after 1 hour
              604800        ; Expire after 1 week
              86400        ; Minimum TTL of 1 day
  1       IN PTR  localhost.

  此文件为本主机自反解析地址文件,其中:
  "@"指当前的起始地址或域,代表0.0.127.in-addr.arpa,由named.boot中的第一组primary语句
定义;

  "SOA"为起始权限记录,表明dns.cma.gov.cn为该域的起始服务器。

  "root.dns.cma.gov.cn"为dns.cma.gov.cn管理者的邮件地址。

  "Serial Number"为版本号,注意:每次维护或修改DNS数据库信息时都要改动此值,且新值要大
于旧值,否则,变动不生效。

  "Refresh"定义了辅域名服务器的刷新频率。

  "Retry"定义了辅域名服务器在一次失败后,再次尝试的时间间隔。

  "Expire"定义了辅域名服务器的有效期。

  "Minimum"定义了缓存(Cache)中域名信息的保存时间。(注意:文档中所涉及的时间数字单位
均为秒。)


  (5)/var/named/named.hosts文件:

  @       IN SOA  dns.cma.gov.cn. root.dns.cma.gov.cn. (
              858240768    ; Serial Number
              10800        ; Refresh after 3 hours
              3600         ; Retry after 1 hour
              604800       ; Expire after 1 week
                 86400       ; Minimum TTL of 1 day

  @       IN NS   dns.cma.gov.cn.

  dns             IN A    203.93.51.100

  localhost       IN A    127.0.0.1

  cma.gov.cn.      IN A    203.93.51.100

  rays    IN A    203.93.51.101
  rays    IN CNAME mail
  rays    IN MX  0 rays.cma.gov.cn
  rays    IN MX  10 info.cma.gov.cn
  www     IN A    203.93.51.102
  info    IN A    203.93.51.103

  aclearcase/" target="_blank" >ccount IN A    203.93.51.109

  此文件定义了正向查询的记录数据,其中:

  "@"指当前的起始地址或域,代表cma.gov.cn,由named.boot中的第二组primary语句定义;

  "NS"记录用于指明域的名字服务器。明域的名字服务器。

  "A"记录用于主机名到地址的映射。

  "CNAME"记录用于定义主机别名。

  "MX"定义了邮件转发记录。

  第一条"MX"记录定义发往 rays.cma.gov.cn的邮件发往rays,优先级为0。
  第二条"MX"记录定义在rays.cma.gov.cn未开机或出故障时,发往 rays.cma.gov.cn的邮件发
往info,优先级为10(优先级数值越小,级别越高)。

  (6)/var/named/named.rev文件:

  @       IN SOA  dns.cma.gov.cn. root.cma.gov.cn. (
              858240768      ; Serial Number
              1082400          ; Refresh after 3 hours
              3600           ; Retry after 1 hour
                604800         ; Expire after 1 week
              86400         ; Minimum TTL of 1 day
  100     IN PTR  dns.cma.gov.cn.
  101     IN PTR  rays.cma.gov.cn.
  102     IN PTR  www.cma.gov.cn.
  103     IN PTR  info.cma.gov.cn.
  109     IN PTR  account.cma.gov.cn.

  此文件定义了反向查询的记录数据,除它设置为反向工作外,与named.hosts文件类似。
其中:

  "@"指当前的其始地址或域,代表51.93.203.in-addr.arpa,由named.boot中的第三组
primary语句定义

  "PTR"记录用于地址到主机名的映射。

  另外named、cache比较简单,在此不作详细分析。

  三、 启动

  经过上述步骤配置以后,DNS便可正常工作了,输入in.named命令启动域名服务,启动后可用
nslookup命令测试域名服务的工作情况。


 我是水 回复于:2002-06-25 16:53:43
very good!!!
要是再把sendmail是如何配置的写下来就更好了

 韦小宝 回复于:2002-06-25 18:05:42
你这个bind版本号是多少

 stcxq888 回复于:2002-06-25 22:36:04
这个肯定是 bind 4或bind 4以下的版本啊。。   

 阿骁 回复于:2002-06-25 22:37:58
bind4已经过时了,现在都bind9了。

 我说故我在 回复于:2002-06-26 11:20:32
BIND版本是老了,但是我想介绍的是方法

 wangrujun 回复于:2002-07-22 11:55:53
阿骁:写篇bind9,再投诉这帖子吧。这帖子很好,我喜欢。:)
谢谢 “我说故我在”

 我说故我在 回复于:2002-07-22 13:37:31
不客气。:)

 花劫容 回复于:2002-07-22 14:12:38
实际配置中可不是这么简单就弄好的,我在linux下弄过很多次,好象是bind8。

 Lost in spy 回复于:2002-07-22 15:59:24
是一篇很不错的基础教程:)

 jodgen 回复于:2002-07-22 16:01:15
好人,好人,我就要这个,我的SOLARIS是2.6的,太好了,死找找不到资料,却得来全不费功夫.我马上下了试试

 xmas128 回复于:2002-07-22 17:02:32
版本低,现在大多数都不用这个了,不过好在solaris当中。有命令可以直接将bing4转到bind8的版本(bind4,bind8的差别只在与named.boot文件,bind4用named.boot,bind8用named.conf,并且这两个文件中语法不同,别的文件都是一样设置的),很好用的,再说这篇基础教程是不错啊。还有一点要注意的,有时候在dns设置上是正确地,但是在named.conf(或者named.boot)文件中存在语法错误所以导致named.conf(或者named.boot)无法正确执行,所以在设置的时候请多多注意,这种错误是很难发现的,我曾经深受其害。(这里是我自己的理解可能表达方式上不大正确,见量)
但是要是能加上一点高级使用实例就更好了,bind我也是懂了一点,很想进一步了解,但是没有实际的例子的确很不方便,希望那位可以提供一下帮助。

 jodgen 回复于:2002-07-22 17:03:34
不好意思,发现问题!

在named.local和named.rev中为何没有NS记录呢,我的系统发出错误报告,告诉我怎么加吧,好人!

 ultra-guest 回复于:2002-08-13 14:32:15
?

 study12 回复于:2002-08-13 15:31:44
我在SOLARIS8下成功了,但在LINUX下不成功了N次,我用的是BIND8

 lq 回复于:2002-08-13 15:50:01
@       IN SOA  dns.cma.gov.cn. root.cma.gov.cn. (
              858240768      ; Serial Number
              1082400          ; Refresh after 3 hours
              3600           ; Retry after 1 hour
                604800         ; Expire after 1 week
              86400         ; Minimum TTL of 1 day
          IN NS dns.cma.gov.cn    
 100     IN PTR  dns.cma.gov.cn.
 101     IN PTR  rays.cma.gov.cn.
 102     IN PTR  www.cma.gov.cn.
 103     IN PTR  info.cma.gov.cn.
 109     IN PTR  account.cma.gov.cn

 boyu 回复于:2002-11-07 14:10:52
up

 mynix 回复于:2002-11-07 14:28:06
区数据文件开头的$TTL 3600与SOA中的那个86400         ; Minimum TTL of 1 day
有何区别?

 mynix 回复于:2002-11-07 17:45:35
有人愿说下吗?

 wasp 回复于:2002-11-07 20:16:32
不错!

 mynix 回复于:2002-11-08 08:07:44
$TTL 3600:区数据默认生存期.
86400         ; Minimum TTL of 1 day:在BIND8.2及以上是否定缓存时间.

 flyingboy 回复于:2002-11-08 10:50:32
非常好

 wasp 回复于:2002-11-08 11:15:55
bind8配置参考
wasp收集整理  
 
   以前在internet上用的DNS系统是bind4, bind8是bind4的 后一个版本,现在又出了bind9。和bind4相比,bind8/9更完善,管理者能更充分的控制它的行为,但这两者之间的差别还是很大的,变化的不仅是格式,也多了很多新 的概念。在bind8/9里可用的语句有logging,options,zone,acl,key,trusted -keys,server,controls,include. 它里面的说明可以用c,c++,或shell/ perl的格式。我想主要介绍一下用bind8配置基本的能工作的主、辅域名服务器的方法(它们是internet上主要使用的两种域名服务器),如果有兴 趣更深入的了解可以参考man和 RFC 882, RFC 883, RFC 973, RFC 974, RFC 1033, RFC 1034, RFC1035, RFC 1123, RFC 2308 "Name Server Operations Guide for BIND". 

主域名服务器正常工作的必要条件:
1. 安装bind8软件,这在很多unix的发行版中都可以找到。
2. 几个必须的配置文件:
named.conf
named.ca
named.local
mater file(就是bind4里的zone file)

在这几个配置文件中,最主要的是named.conf,在/etc下, 它是named启动时缺省的启动文件.一个典型的named.conf文件至少包括 options,和zone.如:

options {
directory "/var/named";
}; 

zone "0.0.127.in-addr.arpa" in {
type master;
file "named.local";
}; 

zone "." in {
type hint;
file "named.ca";
}; 

zone "99.cn.net" in {
type master;
file "db.99.cn.net";
}; 
在这里面,options定义 master file 存放的 路径,对应于某个域, named 就会到这里找数据文件,如有一个www.99.cn.net的require请求, named就会到/var/named下找db.99.cn.net这个文件,查出www.99.cn.net 的ip. Zone定义一个域,如99.cn.net这个域,type定义域名服务器的类型,master 说明这是一个主域名服务器,第一个zone定义本地服务器为 它自己的回送域的主服务器,将地址127.0.0.1映射为localhost,几乎在所有类型的域名服务器里都可以看见这个域。第二个 zone用来定义一个 高速缓存初始化文件,在named.ca 里至少包含着根服务器的名字和地址 (这些根服务器也会变化). 一般named.ca不需要修改,named.local里只 需要修改SOA纪录里域和联系人。(有些书上说named.local里的NS纪录是个摆设,但我建议最好还是有这一句) file定义99.cn.net这个域的 master file.以下就是这个master file的内容:


@ IN SOA ns.your.domain. Root.your.domain. (
1999110901 ; Serial Number
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
3600000 ; Expire after 6 weeks
86400  ; Minimum TTL of 1 day 

@ IN NS ns.your.domain.
Localhost IN A 127.0.0.1
www IN A 202.98.106.12 
这里面的@定义当前域,也就是your.domain,IN定义这是一个internet类型的纪录,SOA标志一个授权域的开始, ns.your.domain. 为开创该域的服务器,可以用主域名服务器, root.your.domain.定义联系人,root后的. 就是email里的@,括号里的几 个数字定义和本域有关的几个参数,单位是秒,前四个参数用于辅域名服务器更新master file,其中;后面的是说明,serial number用于辅域名服 务器判断主域名服务器的 master file是否更新,所以如果你有辅域名服务器,在每次修改 master file后就应该修改这个序列号,以便辅域名服 务器更新这个域的 master file. Refresh定义辅域名服务器刷新的时间, retry定义如果主服务器未响应,辅服务器重试的时间间隔,expire 定义 这个域的过期时间,就是说如果辅服务器在连续42天里都没有从主服务器取到该域的信息,辅服务器就丢弃该域。第五个参数定义这个域在其他域 名服务器的cache 里的有效期,过了这个时间其他的域名服务器就会到这 里来重新查询相关的信息。

NS表明这个域的域名服务器是ns.your.domain. NS纪录可以有多个。 Localhost和www这两条A纪录的含义是将localhost解析到127.0.0.1 和将 www.your.domain解析到202.98.106.12, 现在一个基本的主域名服务器就 建立好了,但需要特别说明的是,在master file里,ns.your.domain.后 面的. 这个. 表示这是一个完整的纪录,否则服务器就会自动给你加上当 前域,例如,www表示www.your.domain,而www.your.domain就会变成 www.your.domain.your.domain,正确的表示方法可以是www或www.your.domain. 如果不给这个.足够的重视,就很容易出错。

如果你需要维护很多域,可以在named.conf里加上相应的zone,然后 在/var/named下建立该域的master file,最后用SIGHUP来reload域名服务器。如果你需要作反向解析,可以仿照上面named.conf里第一个zone进行,在它相应的master file里用PTR指针将ip转换为域名。

辅域名服务器的建立

建立辅域名服务器的方法和主域名服务器基本相同,主要的区别在于 named.conf里的zone类型,它的type为slave,以下是一个辅域名服务器的 named.conf:


options {
directory "/var/named";
}; 


zone "0.0.127.in-addr.arpa" in {
type master;
file "named.local";
}; 

zone "." in {
type hint;
file "named.ca";
}; 

zone "99.cn.net" in {
type slave;
file "db.99.cn.net";
masters { 202.98.21.141; }; 
可以看出,这个配置文件与主域名服务器的区别,type用salve定义 该服务器为辅域名服务器,然后指出主域名服务器的 ip。但是需注意第 一个zone的type仍为master.另一个区别就是辅域名服务器的master file 不用手动建立,它自己会从主域名服务器传过来,named-xfer 缺省一次 传10个域。辅域名服务器的master file和主域名服务器的master file 基本没有什么区别。这样一个可以工作的辅域名服务器就建好了,如果这 是一个新建的辅域名服务器,那么在你启动它后很快就会看见/var/named 下多了很多master file. 

还有一点我想说明的是,如果 internet 上的域名服务器乱了,那么整个 internet 就乱了,所以维护域名的人一定要谨慎从事。因为以前在 internet上工作的都是bind4,如果你维护的域比较多,在从bind4转到 bind8时可能会为建立格式完全不同的named.conf而头痛,一个好消息是在bind8的发行版中有一个named-bootconf的shell脚本和named-bootconf.pl 的perl脚本可以帮你完成从bind4的named.boot到bind8的named.conf的转换

 北极星 回复于:2002-11-08 12:40:17
其实精华版中,有几篇到是不错的!!当然这篇也不错,就是有些老了,版本低了点

 giant 回复于:2003-09-24 10:30:01
好!收藏

原文转自:http://www.ltesting.net