当前位置:Linux教程 - Linux综合 - 在Linux上建立DNS服务器

在Linux上建立DNS服务器

一、 假定 本文假定你已对域名服务器 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 的顶层“根”服务器地址






[1] [2] [3] [4] [5] 下一页 

要注意(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

[email protected] 形式邮件地址所对应的邮件服务器名字。





在此以下是各种域名/地址转换数据,其中 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 的邮件地址转换成 [email protected][email protected]

即实际上真正的邮件服务器是 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

上一页 [1] [2] [3] [4] [5] 下一页 




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 的数据:


上一页 [1] [2] [3] [4] [5] 下一页 



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] [2] [3] [4] [5] 下一页 






(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.sheup.com)


上一页 [1] [2] [3] [4] [5] 




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.sheup.com)


上一页 [1] [2] [3] [4] [5] [6] 

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 的内容为

上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 






search my.com


nameserver 192.22.33.20



nameserver 192.22.33.60

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

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

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

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

(出处:http://www.sheup.com)


上一页 [1] [2] [3] [4] [5] [6] [7] [8] 


对于内部网上的 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.sheup.com)


上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9]