UNIX下DNS服务器之创建篇

类别:软件工程 点击:0 评论:0 推荐:


UNIX下DNS服务器之创建篇(上)

【内容导航】
第1页:概述
第2页:UNIX的DNS服务器创建
第3页:必须的配置文件named.conf
第4页:必须的配置文件study.js.cn
第5页:必须的配置文件study.js.cn.rev
第6页:必须的配置文件named.ca
第7页:必须的配置文件named.local
第8页:与DNS配置相关的文件

本文主要和大家讨论在UNIX环境下,使用BIND服务器软件创建一个DNS主域服务器。我们知道在安装好一个UNIX系统后,BIND软件也随系统基本上安装好的,要做的工作是对有关的文件参数进行相关的修改与配置。

    通常我们可以通过检查/var/log目录或系统上它的等价目录下的日志文件来确定目前拥有的BIND的版本。BIND服务器守护进程named在启动时将版本号记录到系统日志中(设施“守护进程”)。用grep查找类似下面这样的行:
 


    第一行取自HP-UX 11.00发布附带的情况,第二行来自我们本地维护的一台SunOS机器。后一行撒了一个小谎,因为BIND 8.2.2的补丁4没有增加补丁级别。实际上是8.2.2-P4。

    如果你需要升级BIND软件的版本的话,可以到www. isc.com网站上下载BIND新版本,如bind-9.0.0.tar打包源文件,解压并使用tar得到文件的内容,接下来要编译BIND,需要运行configure命令,从而产生如下的输出:
 
    下一步,利用make命令构造二进制码:
 
    最后,通过构造测试程序来测试二进制代码:
 
    如果所有测试都通过了,就可以执行“make install”安装新代码。

UNIX系统的域名解析

    Internet上常见的域名解析的有下面两种方式:

    名字到地址的解析(正向解析)
    如:www.study.js.cn è 61.155.107.131

    地址到名字的解析(反/逆向解析)
    如:61.155.107.131è www.study.js.cn

    因此我们在配置UNIX域名服务器时,在互联网上要实现正向/反向解析,只有完成这两种解析方式,才可以说真正意思上的域名服务器。现在许多Internet上域名服务器特别是Windows系统的域名解析只实现正向解析。

UNIX 的DNS服务器创建

    下面以Solaris为例来说明UNIX主域服务器创建过程,对于随Solaris7、8提供的BIND 8,主要配置文件是/etc/named.conf,BIND4 以及更早的版本使用名为/etc/named.boot的配置文件。/etc/named.conf 文件负责控制DNS服务器的行为,它提供了以下关键词,用来定义操作声明:
    acl----定义一个访问控制列表,哪些客户可以使用该服务器。

    include ----读入一个包含声明的外部文件,该文件使用与/etc/named.conf相同的格式。这在配置文件非常大时是很有用的,可以将不同的部分分成在逻辑上相关的几个文件。
    logging----确定在声明指定的日志文件中记录哪些服务器活动。
    options----定义本地服务器的操作特征。
    server----定义其他服务器的操作特征。
    zone----创建本地DNS区域。

    在Solaris 中,in.named为进程域名服务器。通过网络初始化脚本S72inetsvc在level 2级上启动的,启动后,它读取/etc/named.conf以获取它所管理的区域和区域数据库文件。区域文件除了包含主机名到IP地址的映射外,还包含其他内容。域名服务器的配置过程包括下列步骤:
    1)注册一个域名
    2)创建一个主机名和ip地址的列表
    3)创建/etc/named.conf文件
    4)创建区域数据文件
 
    在区域数据文件中,信息是以特定的格式存储的。这些信息被定义为资源记录类型(RR)。常用的标准的资源记录说明如下: 
    SOA(管理开始)资源记录----在master file(就是bind4里的zone file)中用到。
    NS(名字服务器)资源记录----列出了域或区域中的名字服务器
    A (地址)资源记录----地址资源记录用于说明DNS 数据库中主机的IP地址。它可能即使用到绝对主机名(FQHN),也可能使用相对的主机名(短主机名)。
    MX(邮件交换服务器)资源记录----MX资源记录负责域内的主机之间的邮件交换服务。
    PTR(指示器)资源记录----通常用于逆向主机名的解析。
    CNAME ---- 用于定义主机的别名。

几个必须的配置文件

    named.conf
    named.ca
    named.local
    master file(就是bind4里的zone file) ----在本文中用study.js.cn和study.js.cn.rev 两个文件。

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

    ① named.conf 文件

options {
directory "/var/named"; //数据库文件的位置,要创建named这个目录,
multiple-cnames yes;
pid-file "/etc/named.pid";
}; 
//type domin    source host/file backup file
zone "." in {
type hint; //这里hint表示为缓存服务器
file "named.ca";
}; 

zone "0.0.127.in-addr.arpa" in {
type master; //这里master表示为主dns server,
file "named.local";
}; 

zone "study.js.cn" in {
type master;
file "study.js.cn "; //这里的study.js.cn就是你要创建的域,正向解析 ,
}; 

zone "107.155.61.in-addr.arpa" in {
type master;
file "study.js.cn.rev "; // 反向解析,域为107.155.61,
}; 
    在这里面,options定义master file存放的路径,对应于某一个域, named就会到这里找数据文件,如有一个www.study.js.cn的require请求,named就会到/var/named下找study.js.cn这个文件,查出www.study.js.cn的ip。Zone定义一个域,如study.js.cn这个域,type定义域名服务器的类型,master 说明这是一个主域名服务器,第一个zone定义本地服务器为它自己的回送域的主服务器,将地址127.0.0.1映射为localhost,几乎在所有类型的域名服务器里都可以看见这个域。

    第二个zone用来定义一个高速缓存初始化文件,在named.ca 里至少包含着根服务器的名字和地址(这些根服务器也会变化). 一般named.ca不需要修改,named.local里只需要修改SOA纪录里域和联系人。file定义study.js.cn这个域的master file。

    在/var/named目录下创建如下几个数据库与/etc/named.conf文件中相对应文件named.ca,named.local,study.js.cn 和 study.js.cn.rev。

    ② study.js.cn 文件

@ IN SOA dns.study.js.cn.
root.dns.study.js.cn. (
2000120101 ; 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 dns
@     IN MX 10 mail
 
Localhost IN A 127.0.0.1
www IN A 61.155.107.131
dns IN A 61.155.107.131
mail IN A 61.155.107.132
ftp IN  CNAME  dns

    这里面的@定义当前域,也就是study.js.cn., IN定义这是一个inter-net类型的纪录,SOA(管理开始)标志一个授权域的开始,dns.study.js.cn.为开创该域的服务器,可以用主域名服务器,root.dns.study.js.cn.定义联系人,root后的.就是email里的@,括号里的几个数字定义和本域有关的几个参数,单位是秒。      

    前四个参数用于辅域名服务器更新master file,其中;后面的是说明,serial number用于辅域名服务器判断主域名服务器的 master file是否更新,第五个参数定义这个域在其他域名服务器的cache 里的有效期,过了这个时间其他的域名服务器就会到这里来重新查询相关的信息。

    DNS表明这个域的域名服务器是dns.study.js.cn。NS纪录可以有多个; @  IN MX 10 mail表示:所有发给当前域的邮件全部转发到服务器mail上。Localhost、www、dns和mail这四条A纪录的含义是将localhost解析到127.0.0.1 ;www.study.js.cn和dns.study.js.cn解析到61.155.107.131;将mail.study.js.cn解析到61.155.107.132,定义ftp的别名为dns。

    ③ study.js.cn.rev 文件

    该文件存放从IP地址到域名的映射信息,文件内容:

@ IN SOA dns.study.js.cn.
 root.dns.study.js.cn. (
  2000120101  ; Serial
  10800  ; Refresh
  1800  ; Retry
  3600000  ; Expire
  86400 ) ; Minimum
  IN NS dns.study.js.cn.
131  IN  PTR dns.study.js.cn.
132  IN  PTR  mail.study.js.cn.

   语法说明:
   131  IN  PTR    dns.study.js.cn.
   表示:当前域(即61.155.107)中地址为 131的服务器的域名为dns.study.js.cn.
   132意义同上,表示的服务器的域名为mail.study.js.cn.

   注意,此处服务器的域名要用绝对域名。

  ④ named.ca 文件

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  "
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC registration services
;       under anonymous FTP as
;           file                /domain/named.root
;           on server           FTP.RS.INTERNIC.NET
;       -OR- under Gopher at    RS.INTERNIC.NET
;           under menu          InterNIC Registration Services (NSI)
;              submenu          InterNIC Registration Archives
;           file                named.root
;
;       last update:    Aug 22, 2000
;       related version of root zone:   2000082200
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
;
; formerly NS1.ISI.EDU
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 128.9.0.107
;
; formerly C.PSI.NET
.  3600000  NS  C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.  3600000  A  192.33.4.12
;
; formerly TERP.UMD.EDU
.  3600000  NS  D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.  3600000  A  128.8.10.90
;
; formerly NS.NASA.GOV
;.  3600000  NS  E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.  3600000  A  192.203.230.10
;
; formerly NS.ISC.ORG
.  3600000  NS  F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.  3600000  A  192.5.5.241
;
; formerly NS.NIC.DDN.MIL
.  3600000  NS  G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.  3600000  A  192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
.  3600000  NS  H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.  3600000  A  128.63.2.53

    说明:named.ca文件一般不需要修改。

    ⑤ named.local 文件

; SOA rec
@ IN  SOA  dns.study.js.cn.  root.study.js.cn. (
    2000120101 ; serial number
    10800 ; refresh every 3 hours
    10800 ; retry every 3 hours
    604800 ; expire after a week
    86400  ; TTL of 1 day
                                )
; Name Servers
IN  NS  dns.study.js.cn.
;ip mappings
1  IN  PTR  localhost.study.js.cn.

    说明:此文件无太多的意义,只定义 IP地址为127.0.0.1的服务器对应的域名为:localhost。

与DNS配置相关的文件

    主要包含/etc/defaultdomain、/etc/nsswitch.conf、/etc/resolv.conf 三个文件权限只需root可读即可。

    1) /etc/defaultdomain
    "/etc/defaultdomain"文件给出确省域名,该文件内容为域名名称,例如:
 study.js.cn
 表示缺省域名为" study.js.cn ",以后仅使用某个主机名时,系统假设为缺省域中的主机。例如,"ping www"将被理解为"ping www.study.js.cn "。

    2) /etc/nsswitch.conf
    如果使用DNS,则必须在该文件的"HOST"一项中给出"DNS"。缺省为使用文件,即"FILES",该选项可以保留。

# /etc/nsswitch.files:
#
# An example file that could be copied over to /etc/nsswitch.conf; it
# does not use any naming service.
#
# "hosts:" and "services:" in this file are used only if the
# /etc/netconfig file has a "-" for nametoaddr_libs of "inet" transports.

passwd:     files
group:      files
hosts:      files   dns
networks:   files
protocols:  files
rpc:        files
ethers:     files
netmasks:   files 
bootparams: files
publickey:  files
# At present there isn't a 'files' backend for netgroup;  the system will
#   figure it out pretty quickly, and won't use netgroups at all.
netgroup:   files
automount:  files
aliases:    files
services:   files
sendmailvars:   files

hosts: files dns 表示:将使用/etc/inet/hosts文件解析主机,如果无法解析主机名将使用DNS。

    3) /etc/resolv.conf
    该文件给出域名和域名服务器地址。

; /etc/resolv.conf file
domain study.js.cn ;域名
nameserver 61.155.107.131 ;域名服务器地址
;域名服务器地址可以给出多个

    至此一个基本的UNIX主域名服务器就建立好了。但需要特别说明的是,在master file里,dns.study.js.cn.后面的.,这个. 表示这是一个完整的纪录,否则服务器就会自动给你加上当前域,例如:www表示www.study.js.cn,而www.study.js.cn就会变成www.study.js.cn.study.js.cn,正确的表示方法可以是www或www.study.js.cn. 如果不给这个.足够的重视,就很容易出错。


UNIX下DNS服务器之创建篇(下)

【内容导航】
第1页:主域名服务器创建之named控制文件
第2页:主域名服务器创建之域名区域文件
第3页:主域名服务器创建之IP区域文件和缓存文件
第4页:辅助域名服务器创建之named控制文件
第5页:辅助域名服务器创建之本地IP区域文件和缓存文件
第6页:DNS客户机的创建

我们知道,UNIX DNS服务器的最常用软件是BIND,它源自U.C. Berkeley但现在则由Internet Software Consortium.负责。BIND提供了解析器和名字服务器软件,解析器做实际的查询工作而名字服务器则提供响应。BIND将名字服务器分成三个部分:主域名服务器包含了有关一个域的全部数据;辅助域名服务器则有效地从主域名服务器拷贝DNS数据库;(唯)高速缓冲服务器通过缓冲查询来建立例外的DNS数据库。只有主域名服务器和辅助域名服务器才被当作涉及特定域的授权服务器。

    下面以AIX 的UNIX系统为例来说明主域名服务器、辅助域名服务器和UNIX DNS客户机的创建,来实现“规划与设计篇”的域名结构的例子。

一、 主域名服务器的创建

    创建主域名服务器的步骤:
    创建named的控制文件;
    创建域名区域文件;
    创建IP区域文件和本地IP区域文件;
    创建缓冲区文件;

   1、named控制文件
   named的控制文件是/etc/named.boot(BIND4版本),在named启动时读入。它说明named使用的所有数据的存放位置,named用这些数据创建一个初始域名服务器数据库。
named.boot文件内容如下图所示:
 
    directory项告诉named在/etc/named.boot文件中所列文件存放的目录。
    Domain项说明本地主机所在的域,域名服务器用它作为缺省域。
    Primay项表明本地主机named作为哪个域的主域名服务器,以及从哪个文件获得描述本域的数据。
    反向映射的域名永远以“in-addr.arpa”结尾,形成一个域名的IP地址必须反写,这是因为IP地址的最重要的8位位组应排在第一位,而域名表达方式与IP的表达方式恰好相反,即最低有效的8位位组排在最前面,每个物理网络应用一个资源文件与之对应。
    在cache记录项的domain域中的圆点“.”表示末列在其他地方的任何领域,缓存文件(cache file)允许缺省域中的一个主机与该域之外的其他主机通信。

/etc/named.conf(BIND8版本)文件内容如下:

options { 
directory "/etc"; 
}; 

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 "named.local"; 
allow-update { none; }; 
}; 

zone "ghq.js.com" IN { 
type master; 
file "resolv.conf"; 
allow-update { none; }; 
}; 

zone "1.32.10.in-addr.arpa" IN { 
type master; 
file "named.revip1"; 
allow-update { none; }; 
}; 

zone "2.32.10.in-addr.arpa" IN { 
type master; 
file "named.revip2"; 
allow-update { none; }; 
}; 

    笔者认为在这里不用解释,大家也会知道上面配置的具体含义。

  2、域名区域文件
    AIX系统提供了创建区域文件的awk文件。awk文件将读取系统的/etc/hosts文件,然后创建相应的区域文件。但是awk文件并不意味着能为每个环境建立一个完美的区域文件,它仅提供一个创建区域文件的入门手段。文件建立以后,就可用文件编辑器根据需要修改或添加记录。作为一个例子,用awk文件生成区域文件的方法如下:
    # cd /usr/samples/tcpip
    # ./hosts.awk  /etc/hosts  >/etc/named.dc
    # ./addrs.awk  /etc/hosts  >/etc/named.revip1
    # ./addrs.awk  /etc/hosts  >/etc/named.revip2
   
    下面给出了一个域名区域文件/etc/named.dc的内容。
    /etc/named.dc文件内容如下图所示:
 
    资源记录格式为:
    NAME  TTL  CLASS  TYPE  RDATA
    其中:
    NAME:说明一个域、区域、一个主机名字或者主机别名等。它必须在文件的第一列。若该域为空,则其值为前一个资源记录的NAME域值;
    TTL:信息存活时间,以秒为单位。99999999表示信息永远不会超时。如果没有TTL值,则把TTL缺省值设置为SOA记录的Minimum项之值;
    CLASS:记录的地址类型,有IN和ANY两个值。其中IN代表Intemet地址,而ANY代表任何其他的地址类;
    TYPE:资源记录类型。合法的类型有:
    SOA----Start of Authority  (中央权威机构);
    NS----NameServer(域名服务器);
    A----Address(地址);
    HINFO----标准各字;
    MX----邮件交换。
    RDATA:说明特殊资源记录类型的细节,它有几个特殊字符:
    :----表示注释;
    .----用在名字域时,若圆点后无具体内容则该圆点表示当前域;
    @ ----用在名字域时,单个的“@”表示当前域;
    ()----圆括号用来接续不止一行的数据项。
    SOA表示管理机构所在地。SOA记录表明:
    数据文件所在的主机名字,以及负责维护数据文件的用户的E-mini地址;
    serial --表示数据文件版本号。当数据文件里的数据修改时,这个版本号应随之增加;
    refresh --检查数据是否需要刷新的时间间隔,以秒为单位。为辅助域名服务器用;
    retry --辅助域名服务器在做刷新时无法连接到主域名服务器的情况下,辅助域名服务器等待的时间间隔,以秒为单位;
    expire --上限时间;用于辅助域名服务器。当辅助域名服务器一直不能与主域名服务器通信时,辅助域名服务器刷新数据的时间上限;
    minimum --缺省的最小存活时间。当其他项的TTL值比此值小时,用此值替代。

  3、IP区域文件和本地IP区域文件
    IP Zone文件如下所示。
    /etc/named .revip1文件内容下图3所示:
 
    本地IP Zone文件如下所示。
/etc/named.local文件内容如下:

    @  IN   NS   sys1.ghq.js.com
    1   IN   PTR  localhost.ghq.js.com

    在DNS里,域名形成一种层次结构。为了解析一个地址,系统从根向下针对名字中的每个域查询域名服务器,把主机名字翻译成主机IP地址。

    IP区域文件的合法资源记录类型是SOA、NS和PTR----域名指针(Domain Name Pointer)。由于另一些系统位于10.32.2网络,因此IP区域文件必须有两个,每个网络一个。这两个文件都由/etc/hosts生成,而/etc/hosts文件中包含了两个网络的登记项。因此必须用文本编辑将另一网络的登记项删掉,只保留本地网络上的主机地址八位位组(把本地网络主机的网络地址部分的八位位组也删掉)。

    除了这个IP区域文件外,还必须有一个本地IP区域文件,它包含网络127.0.0.1的回送地址。其合法的资源记录类型为SOA、NS和PTR。对于本地IP区域文件,SOA记录不是必要的,但在域名区域文件和IP区域文件中是必要的。

    4、缓存文件
    当一个名字不能在本区域解析时,named进程会和缓存文件中所列的其他域名服务器进行交互,直到它解析出这个名字为止,或者直至它查询了所有列出的域名服务器为止。
/etc/named.ca 文件内容如下:

.                   999999    IN      NS      sys99.js.com
    sys99.js.com    999999    IN      A       10.32.7.99

    缓存文件包含域名服务器的地址,这些域名服务器是更高一级域的权威域名服务器。

二、辅助域名服务器的创建

    创建辅助域名服务器的步骤如下:
    创建named的控制文件;
    创建本地IP区域文件和缓存文件。

    1、named控制文件

    辅助域名服务器的named控制文件与主域名服务器略有不同,它比主域名服务器的Named控制文件至少多一个secondary项。Secondary项表示本地named进程是本域的辅助域名服务器,它接收来自指定IP地址的域信息,并把它存放在指定的文件中,这个文件是主域名服务器的备份文件。

    /etc/named.boot(BIND4版本)文件内容如下图所示:
 
    若从其中一个主域名服务器收到域信息的新拷贝,则named进程将更新那个域名服务器的备份文件。named进程第一次启动时,辅助域名服务器就下载主域名服务器的信息;辅助域名服务器根据SOA记录规定的刷新时间间隔,去主域名服务器查询相关信息。

 /etc/named.conf(BIND8版本)文件内容如下:

options { 
directory "/etc"; 
}; 

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 "named.local"; 
allow-update { none; }; 
}; 

zone " ghq.js.com " IN { 
// type master; 
 type slave; 
// type后面的值已经成为slave; 
file " named.dc.bak "; 
//file 后面也可以是别的文件名不必与主域DNS服务器的设置一样 
  masters { 10.32.1.1; }; 
//10.32.1.1 为主域DNS服务器的IP地址, 
}; 

zone "1.10.32.in-addr.arpa" IN { 
// type master; 
type slave; 
// type后面的值已经成为slave; 
file "named. revip1.bak "; 
//file 后面也可以是别的文件名不必与主域DNS服务器的设置一样 
masters { 10.32.1.1; }; 
//10.32.1.1 为主域DNS服务器的IP地址, 
};

zone "2.10.32.in-addr.arpa" IN { 
// type master; 
type slave; 
// type后面的值已经成为slave; 
file "named. revip2.bak "; 
//file 后面也可以是别的文件名不必与主域DNS服务器的设置一样 
masters { 10.32.1.1; }; 
//10.32.1.1 为主域DNS服务器的IP地址, 
};
 
    不用在辅助域DNS服务器上建立named.dc.bak、named. revip1.bak和named. revip2.bak三个文件,因为在我们在辅助域DNS服务器的进程新启动(就是在把named.conf修改完毕时,第一次重新启动)后,会自动从主域DNS服务器(10.32.1.1)拷贝数据文件内容到辅助域dns服务器上,自动创新这三个主要文件。

  2、本地IP区域文件和缓存文件

    本地IP区域文件与主域名服务器的本地IP区域文件是一样的,除了NS指的是系统本身,缓存文件也与主域名服务器的缓存文件完全一致,下面是本地IP区域文件和缓存文件内容。
/etc/named.local 文件内容如下:

@  IN   NS   sys6.ghq.js.com
1   IN   PTR  localhost.ghq.js.com

/etc/named.ca 文件内容如下:

.              999999    IN      NS      sys99.js.com
sys99.js.com    999999    IN      A      10.32.7.99

    说明:在主域和辅助域服务器配置中,都要创建/resolv.conf文件,它可用来设定 DNS 客户端的名称解析,配置内容在Unix客户机说明。

三、 DNS客户机的创建

    1、Unix客户机

     创建/etc/resolv.conf内容如下:
    domain  ghq.js.com
    nameserver 10.32.1.1
    nameserver 10.32.2.6

    “domain”指定本地的网域名称,如果查询时的名称没有包含小数点,则会自动补上此处的网域名称为字尾再送给DNS服务器。
    “nameserver”指定客户端要求进行名称解析的 nameserver IP地址,在此可指定多部DNS服务器,则客户端将会依序提出查询要求。

    2、Windows客户机

    点击"开始"-》"设置"-》"控制面版"-》"网络",修改"TCP/IP属性"中DNS设置项,最后确认;如下图所示,win98系统需要重启,win2000/xp/2003系统则不需重启。
 

本文地址:http://com.8s8s.com/it/it32570.htm