收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
积木学院 > 服务器 > Web服务器 > 正文

在Linux上建立DNS服务器

来源:互联摘选 日期:2007-11-05 03:30
一、 假定



本文假定你已对域名服务器 DNS 有基本的了解,如果不是,请参看相关的文裆。



许多DNS的文章都是从DNS原理开始介绍,本人则从使用的角度出发,为Linux的管理员

提供一些简单实用的应用实例。





下面假定我们需要建立一台企业网的DNS主服务器,应用条件如下:





(1) 一个C类网段地址 (本例中假定是192.22.33)





(2)企业域名为 my.com,并已注册 (主域名服务器地址 192.22.33.20,主机名为

linux.my.com)





(3)企业网通过路由器与Internet连接





假如你的应用环境与上述条件不同,也请往下看,本文会在上述例子的基础上针对以

下情况作修正:





(1) 多个网段





(2) 封闭的内部网





(3) 只能访问局部公共网的情况(如169网、上海热线等)





二、named、/etc/named.boot 和 ndc



DNS 服务器的主体是域名服务器进程 named ,named 启动后向DNS客户机提供域名解

析服务,把域名转换成IP地址。



named 启动时需要读取一个初始化文件,缺省情况下是 /etc/named.boot,所以/etc

/named.boot 是 named 的基本配置文件。





虽然启动 named 可直接执行 named,在Linux上我们可以使用一个控制 named 的工具

ndc。ndc 可以用于启动、中止、重启动、刷新DNS数据、输出DNS数据等多种调试功能

,我在这里推荐大家用这个工具来帮助 DNS 服务器的调试。





有关 ndc 的详细用法,请参看 Linux 有关文档。





三、建立 named 配置文件 /etc/named.boot



/etc/named.boot 是基本的配置文件,但不包含任何 DNS 数据,针对我们前面的假定

,我们先建立以下 /etc/named.boot,其内容如下:



;



; boot file for name server



;



directory /var/named





primary my.com db.my



primary 0.0.127.IN-ADDR.ARPA db.127.0.0



primary 33.22.192.IN-ADDR.ARPA db.192.22.33



cache . db.cache



其中以“;”开头的行是注释行,其他各行含义是



(1)diretory /var/named





指定 named 从 /var/named 目录下读取 DNS 数据文件。这个目录用户可自行指定并

创建,指定后所有的DNS 数据文件都存放在此目录下。





(2)primary my.com db.my





指定 named 作为 my.com 域的主域名服务器,db.my 文件中包含所有 *.my.com 形式

的域名转换数据。





(3)primary 0.0.127.IN-ADDR.ARPA db.127.0.0





指定 named 作为127.0.0网段地址转换主服务器,db.127.0.0 文件中包含了 127.0.

0.* 形式的地址到域名的转换数据。(127.0.0网段地址是局域网接口的内部 loopback

地址)





(4)primary 33.22.192.IN-ADDR.ARPA db.192.22.33





指定 named 作为 192.22.33 网段地址转换主服务器,db.192.22.33 文件中包含了所

有 192.22.33.* 形式的地址到域名的转换数据。





(5) cache . db.cache





指定 named 从 db.cache 文件中获得 Internet 的顶层“根”服务器地址





要注意(3)(4)两行中的网段地址是倒写的,另外,各个文件名也是可以自行决定

的。





四、建立各个 DNS 数据文件



下一步,要按 /etc/named.boot 中的定义,建立各个 DNS 数据文件。



(1)建立正向域名转换数据文件 db.my





根据 /etc/named.boot 的定义,我们在 /var/named 目录下建立 db.my,其中应该包

括所有在 my.com 域内的主机节点。但在机器数量较多时,为了调试方便,建议一开始

只把几台节点的数据放入文件,待 named 正常工作后再把其他节点的数据补充进去。下

面是 db.my的例子:





@ IN SOA linux.my.com. root.linux.my.com. (



199511301 ; serial, todays date + todays ser

ial #



28800 ; refresh, seconds



7200 ; retry, seconds



3600000 ; expire, seconds



86400 ) ; minimum, seconds



NS linux.my.com.



MX 10 support.my.com.





localhost A 127.0.0.1



linux A 192.22.33.20



support2 A 192.22.33.102



hp712 A 192.22.33.160



support A 192.22.33.100



mail MX 10 support.my.com.



MX 20 support2.my.com.



www CNAME hp712.my.com.



ftp CNAME hp712.my.com.



ns CNAME linux.my.com.



其中第一行是 SOA 记录,定义了域名数据的基本信息,依次是 DNS 服务器名、DNS

管理员邮件地址,括号内的第一个数字是文件版本号,每次本文件内容修改后,必须更

改此号。其余数字与DNS服务器直接的数据交换有关,在这里我们不需要改动。



括号后面有一条 NS 记录和一条 MX 记录,定义了域名服务器本身的域名和 usernam

e@my.com 形式邮件地址所对应的邮件服务器名字。





在此以下是各种域名/地址转换数据,其中 A 记录是 DNS 域名到 IP 地址的记录,是

必须有的,以 hp712.my.com 为例,在 A 记录中域 my.com 被省略,只写成 hp712,n

amed 在处理时会根据 named.boot 中的定义自动加上 my.com,而其对应 IP 地址为 1

92.22.33.160。





另一种记录是 MX 记录。MX 是邮件地址转换记录,本例中定义了将 username@mail.

my.com 的邮件地址转换成 username@support.my.com 或 username@support2.my.com,

即实际上真正的邮件服务器是 support.my.com 和 support2.my.com,其中 support.m

y.com 的优先数为 10,support2.my.com 的优先数为 20,所以通常邮件首先被发往优

先数小的主机 support.my.com。





还有一些是为方便提供的 CNAME 记录。CNAME 定义了一些主机的别名,比如我们将

hp712.my.com 作为公司的 www 和 ftp 服务器,所以我们提供了 www.my.com 和 ftp.

my.com 作为 hp712.my.com 的别名,用户只需要根据习惯就可以访问公司的 www、ftp

服务器了,如果将来我们换用别的主机作 www 和 ftp 服务器,只需要修改 CNAME 记

录就可,对用户没有影响。





注意:MX 和 CNAME 记录最后的带域名的主机名后必须带一个“.”





(2)建立反向 DNS 数据文件 db.127.0.0 和 db.192.22.33





反向 DNS 数据文件用来提供根据 IP 地址查询相应 DNS 主机名,每个网段分别有一

个数据文件。





对于内部网段 127.0.0 通常只有一个地址,即 127.0.0.1 loopback 地址,db.127.

0.0 内容如下:





@ IN SOA linux.my.com root.linux.my.com. (



1997022700 ; Serial



28800 ; Refresh



14400 ; Retry



3600000 ; Expire



86400 ) ; Minimum



IN NS linux.my.com.





1 IN PTR localhost.



而外部网段的数据文件 db.192.22.33 中包含所有主机 IP 地址到 DNS 主机名的转换

数据。db.192.22.33 内容如下:



@ IN SOA linux.my.com. root.pc590.my.com. (



199609206 ; Serial



28800 ; Refresh



7200 ; Retry



604800 ; Expire



86400) ; Minimum TTL



NS linux.my.com.



;



; All hosts



;



20 PTR linux.my.com.



102 PTR support2.my.com.



100 PTR support.my.com.



160 PTR hp712.my.com.



反向 DNS 数据文件中的主要部分是 PTR 记录,PTR 记录中的 IP 地址都只有主机号

,named 会根据 named.boot 的定义自动加上前面的网络号,注意后面的主机名要附加

一个“.”



(3)获得 db.cache 文件





在 Linux 系统上通常在 /var/named 下已经提供了一个 named.ca,该文件文件中包

含了 Internet 的顶层域名服务器,但这个文件通常会发生变化,所以建议最好从 Int

ernic 下载最新的版本。该文件可通过匿名 ftp 从 ftp.rs.internic.net 下载,在 d

omain 目录下,文件名为 named.root。注意该文件下载后要拷贝到 named 的工作目录

并重命名成 named.boot 中指定的文件名,本文中为 db.cache。





五、启动和测试 named



首先,根据先前推荐的方法,用 ndc 启动 named:



ndc start





然后,为了使用和测试 named,要把 Linux 设置在使用 DNS 状态。方法是在 /etc

目录下,创建 resolv.conf 文件。以我们的例子,/etc/resolv.conf 内容为:





search my.com



nameserver 192.22.33.20



然后,我们就可以测试 named 了。



Linux 和其他 Unix 系统均提供了 nslookup 工具,在命令行状态下输入:





nslookup





就进入交换式 nslookup 环境,如果 named 正常启动,nslookup 会显示当前 DNS 服

务器的地址和域名,否则表示 named 没能正常启动。下面简单介绍一些基本的 DNS 诊

断:





(1)检查正向 DNS 解析





在 nslookup 提示符下输入带域名的主机名,如 hp712.my.com,nslookup 应能显示

该主机名对应的 IP 地址,如果只输入 hp712,nslookup 会根据 /etc/resolv.conf 的

定义,自动添加 my.com 域名并回答对应的 IP 地址。





(2)检查反向 DNS 解析





在 nslookup 提示符下输入某个 IP 地址,如 192.22.33.20,nslookup 应能回答该

IP 地址所对应的主机名。





(3)检查 MX 邮件地址记录





在 nslookup 提示符下输入:





set q=mx





然后输入某个域名,以本文的例子,输入 my.com 或 mail.my.com,nslookup 应能够

回答对应的邮件服务器地址,即 support.my.com 和 support2.my.com。





(4)检查 CNAME 别名记录





在 nslookup 提示符下输入:





set q=cname





然后输入某个别名,如 www.my.com,nslookup 应能回答对应的真实主机名,即 hp7

12.my.com。





如要退出 nslookup,可输入 exit。





六、修改 DNS 数据



如果要在网络中增加主机,例如要增加一台叫做 pc01.my.com 的 PC 机,管理员要在

db.my 中增加该主机对应的 A 记录,并且要在 db.192.22.33 中增加对应的 PTR 记录

,然后用 ndc 更新 named 的数据:



ndc reload





要注意必须同时更改 A 记录和 PTR 记录,许多管理员往往只增加 A 记录而忽略了逆

向查询用的 PTR 记录,结果会使许多应用程序不能正常运行。





特别注意,一旦修改了 DNS 数据文件的内容,请务必改动数据文件的版本号( Seri

al )





七、使网络中的其他系统(客户机)使用 DNS 服务器



一旦 DNS 服务器开始工作,就可以配置所有企业网内的主机使用 DNS 服务。



Unix 主机配置的方法,已经在前面说明过,即创建 /etc/resolv.conf 文件,内容见

前面第五节。





Windows 95 的配置则是在网卡的 TCP/IP 配置中,选择使用 DNS (enable),然后

在配置窗口中分别填入各项参数。以本文的例子,如果运行 Windows95 的主机被命名为

pc01.my.com,则在主机名(Host)一栏中填 pc01,在域名(Domain)一栏中填 my.c

om,然后把域名服务器 (DNS Server)加入搜索列表中。





Windows NT 节点的配置大致相同。





八、几种不同环境下的修正



(1)如果 IP 网段多于一个



假定现在在 my.com 域中增加一个 IP 网段 192.22.37,则 /etc/named.boot 的内容

中就增加一个网段的定义,具体如下:





;



; boot file for name server



;



directory /var/named





primary my.com db.my



primary 0.0.127.IN-ADDR.ARPA db.127.0.0



primary 33.22.192.IN-ADDR.ARPA db.192.22.33



primary 37.22.192.IN-ADDR.ARPA db.192.22.37



cache . db.cache



而反向 DNS 数据文件则增加一个定义 192.22.37 网段的文件 db.192.22.37,其中包

括了所有处于 192.22.37 网段中的节点,其格式与 db.192.22.33 类似。



(2)如果企业网是封闭的





如果企业网络不与外界 Internet 直接互连,DNS 服务器就不必关心本企业域以外的

域名,所以配置 named 的时候可以不理会 db.cache,我们可以将 /etc/named.boot 中

的 cache 行去除。





(3)如果你联入的公共网不能访问 Internet





如果你的内部网接入的公共网只能访问有限的范围,如免费的169网、上海热线等,那

么你的 DNS 服务器就不能通过 Internet 的顶层服务器(root server)进行地址解析

,所以你必须用你直接能访问到的 DNS 服务器来替代。具体办法是用 forwarders 选项

来指定上级 DNS 服务器,以本文为例,named.boot 的内容为:





;



; boot file for name server



;



directory /var/named





primary my.com db.my



primary 0.0.127.IN-ADDR.ARPA db.127.0.0



primary 33.22.192.IN-ADDR.ARPA db.192.22.33



primary 37.22.192.IN-ADDR.ARPA db.192.22.37



forwarders ...



options forward-only



其中、等是你能直接访问到的 DNS 服务器的地址,通常就是你的 ISP (169、上海热

线等)的 DNS 服务器的地址,至少要有一个。



通过 forwarders 和 options forward-only 参数的指定,你的企业 DNS 服务器就工

作在 forward-only 模式下,所有本地不能解决的名字都被传送到 ISP 的 DNS 服务器

上去解析。





九、建立后备 DNS 服务器 (Secondary DNS Server)



通常有一台 DNS 主服务器,网络即可正常工作,但根据 Internic 对域名的管理规范

,一个独立的域名必须至少有两台 DNS 服务器,即一台 DNS 主服务器 ( Primary Se

rver )和一台后备 DNS 服务器( Secondary Server ),这主要是为 DNS 服务的可靠

性考虑,能使 Internet 的性能更为可靠。



现在仍以前面的例子,现在要加入一台运行 Linux 的机器 nspc.my.com,IP 地址为

192.22.33.60。





(1)主服务器上的修改





首先确认 DNS 主服务器工作正常,然后,在主服务器上的正向 DNS 数据文件 db.my

中,加入 nspc.my.com 的有关记录,并增加一个NS记录,使主服务器上的 db.my 成为

下列内容:





@ IN SOA linux.my.com. root.linux.my.com. (



199511301 ; serial, todays date + todays ser

ial #



28800 ; refresh, seconds



7200 ; retry, seconds



3600000 ; expire, seconds



86400 ) ; minimum, seconds



NS linux.my.com.



NS nspc.my.com. ; 必须增加的记录



MX 10 support.my.com.





localhost A 127.0.0.1



linux A 192.22.33.20



support2 A 192.22.33.102



hp712 A 192.22.33.160



support A 192.22.33.100



nspc A 192.22.33.60 ; 增加的记录



mail MX 10 support.my.com.



MX 20 support2.my.com.



www CNAME hp712.my.com.



ftp CNAME hp712.my.com.



ns2 CNAME nspc.my.com. ; 增加的记录



ns CNAME linux.my.com.



然后对主服务器上的各个反向 DNS 数据文件做类似的修改,增加有关后备服务器的

NS 记录,然后重新起动 named。



可见,其实在主 DNS 服务器上的改动主要是增加了一条 NS 记录,其余的改动和增加

一台普通节点一样,如果是用现有的节点做后备 DNS 服务器,则增加 NS 记录是唯一必

须的步骤。





(2)后备 DNS 服务器(secondary server)的配置





需要在后备 DNS 服务器上创建的配置文件只有 named.boot 和 db.cache,格式与主

服务器相似,named.boot 内容为:





;



; boot file for secondary name server



;



directory /var/named





secondary my.com 192.22.33.20 db.my



secondary 0.0.127.IN-ADDR.ARPA 192.22.33.20 db.127.0.0



secondary 33.22.192.IN-ADDR.ARPA 192.22.33.20 db.192.22.33



cache . db.cache



其中的三行 secondary 定义,使得 named 从 192.22.33.20,即主服务器上获得各种

DNS 数据,并存在本地的各个数据文件中。本地的数据文件由 named 从主 DNS 服务器

的 named 下载后生成,通常与主服务器上的数据文件完全一样,万一后备服务器与主服

务器失去连接而不能下载 DNS 数据,后备服务器可利用本地的数据文件工作。



而后备 DNS 服务器的 db.cache 通常由系统管理员从主服务器上拷贝过来即可。





通常,后备 DNS 服务器可以建立在企业网内,也可利用外部的 DNS 服务器充当,如

让 ISP 的服务器作为企业的后备 DNS 服务器,这样可以提高 DNS 服务的可靠性。注意

,同一台 DNS 服务器可以同时成为多个 DNS 域的服务器,而且可以既作某些域的主服

务器,同时又是另一些域的后备服务器。





(3)DNS 客户机端的改动





对于内部网上的 Unix 主机,应该在 /etc/resolv.conf 中增加一行 nameserver 说

明,使得系统能够搜索后备 DNS 服务器,以本文的例子,/etc/resolv.conf 的内容为







search my.com



nameserver 192.22.33.20



nameserver 192.22.33.60



注意,我们可以根据需要决定 /etc/resolv.conf 中所列出的 DNS 服务器的顺序,通

常选择访问速度快的服务器在前。



对于 Windows95 和 NT,则是在 DNS 服务器的列表中把后备 DNS 服务器添加进去即

可,添加的顺序同样可以决定访问各 DNS 服务器的优先级。

(出处:http://www.Gimoo.net)

推荐阅读

 

热点信息

 
强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号