文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>DNS服务器的安装

DNS服务器的安装

时间:2006-07-01  来源:gaoxintian

1 DNS服务器的安装

现在并没有很多种类的DNS服务器软件,在Linux/UNIX世界里有两种特定的DNS软件,它们是:djbdns和古老的伯克利Internet域名(BIND)服务器。djbdns是一种轻量级的DNS解决方案,它声称可以提供比BIND更高的安全性。BIND是比较古老的、更为流行的程序,全球大多数的名称服务器系统中都使用BIND。BIND现在由Internet系统社团(Internet Systems Consortium简称ISC)来进行维护开发。有关ISC的更多信息请参阅其网站http://www.isc.org。ISC也负责其他软件如ISC DHCP服务器/客户端软件的开发。

因为在编写本书期间,不可避免会出现软件的更新版本,因此,我们在这里讨论的BIND版本可能和我们现在接触的版本不同,但是我们不用担心,因为在相近的软件版本之间大多数的配置指令、关键字以及命令的语法都会被保留。

因为我们的示例系统运行的是Linux的Fedora Core版本,同样,我们在这里就是用该操作系统自带的预编译的二进制代码。假定Fedora自带的软件都是很新的,因此,我们可以确认这里的BIND软件的版本就是直接从www.isc.org(该站点也提供BIND程序的预编译的RPM包)站点获得的最新版。

利好的消息是一旦配置好了BIND,我们几乎不再需要对其进行任何操作。然而,请关注一下新的版本,随时都有可能出现需要修正的新的bug和安全问题。当然,也会发布一些新特性,但是除非我们真的需要该特性,否则就无需使用那些新的发行版。

在Fedora DVD安装盘的/Fedora/RPMS/目录下可以找到BIND程序。我们也可以从任何Fedora的镜像站点,例如http://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os/Fedora/RPMS/bind-9*.rpm下载该软件到我们本地的文件系统中。

假定现在我们已经下载或者拷贝了BIND程序的二进制代码到当前的工作目录中,我们就可以使用rpm命令进行软件的安装:

[root@serverA root]# rpm -Uvh bind-9*

如果我们有到Internet的连接,也可以简单的运行如下命令来安装BIND软件:

[root@serverA root]# up2date -i bind

该命令完成之后,我们就可以配置并运行DNS服务器了。

ISC BIND软件源代码的下载、编译和安装

如果在我们的Linux发行版中不存在ISC BIND软件的预打包版本,我们还是可以从ISC站点http://www.isc.org下载可用的源代码并构建该软件。也有可能我们只是想获得该软件的最近的bug的修复,而这个修复在我们的发行版中目前还没有实现。在本书编写的时候,该软件的最新版本是9.3.1,该版本可以直接从ftp://ftp.isc.org/isc/bind9/9.3.1/bind-9.3.1.tar.gz下载。

源代码下载之后,解压缩软件如下所示。在这个例子中,我们假定源代码下载到了/usr/local/src目录下。

[root@serverA src]# tar xvzf bind-9.3.1.tar.gz

进入上面这条命令创建的bind*子目录。假定我们希望将BIND软件安装到/usr/local/named/目录下,我们将运行如下命令:

[root@serverA bind-9.3.1]# ./configure --prefix=/usr/local/named

使用mkdir命令创建--prefix选项指定的目录:

[root@serverA bind-9.3.1]# mkdir /usr/local/named

执行make; make install命令编译并安装该软件:

[root@serverA bind-9.3.1]# make; make install

我们从源代码中构建的软件将安装名称服务器后台进程(named)和其他一些有用的工具到/usr/local/named/sbin/目录下。客户端程序(dig、host、nsupdate等)将安装在/usr/local/named/bin/目录下。

安装的内容

在前面的安装中,伴随着主要的bind包和bind-utils包还安装了很多程序,其中我们感兴趣的四个工具如下:

工具                                    描述

/usr/sbin/named                   DNS服务器程序本身

/usr/sbin/rndc                      bind名称服务器的控制工具

/usr/bin/host                        在一个名称服务器上执行一个简单的查询

/usr/bin/dig                          在一个名称服务器上执行一个复杂的查询

本章中其他部分将讨论这里列出的这些程序/工具,包括它们的配置和用法。

1.1理解BIND配置文件

BIND的主要的配置文件是named.conf,基于该文件中指定的内容,BIND决定它自己的行为,如果指定有其他的配置文件的话,BIND还将阅读附加的配置文件。

本章中这一节将学习设置一个通用功能的DNS服务器所需的知识,我们可以在BIND的文档目录中找到html格式的新配置文件完全指南。

文件named.conf的一般格式如下:

statement {

options; // comments

};

关键字statement(宣告)告诉BIND我们正在描述其操作的一个方面,是应用到statement的特定的命令,使用大括号来告诉BIND哪些option和哪个statement相关联,在每个option后面都用分号将其隔开,最后的大括号后面也有一个分号。

下面是一个例子:

options {

directory "/var/named"; // put config files in /var/named

};

上面的这个bind宣告是一个可选的宣告。这里特定的选项是指定bind工作目录的指令,例如,在本地文件系统中保存名称服务器配置数据的目录。

1.2细节

这一节我们将学习在named.conf文件中最常见的宣告。学习这部分内容的最好的途径是将将其大体的看一遍,然后把剩下的各节作为其参考指南。如果某些指令看起来比较怪异或者在我们第一次使用时感觉不那么容易,不用担心。一旦我们在后面的节中学习了它们的使用,为什么使用它们以及如何使用它们就会一目了然。

1.注释

下列格式之一的文本都将是注释:

格式                            简要说明

//                                 C++风格的注释

/*…*/                          C风格的注释

#                                 Perl和UNIX shell脚本风格的注释

在第一种和最后一种风格(C++和Perl/UNIX shell)的注释的情况下,一旦注释符出现,该行中剩下的内容都将是注释;而在特定的C风格的注释中,必须使用终止符*/来指示注释的结束。然而,在通常情况下,我们可以使用任何我们所喜欢的注释风格。没有哪一种风格比其他的更好,就看我们的喜好了。

2.宣告的关键字

我们可以使用如下所示的宣告的关键字:

关键字

描述

acl

访问控制列表——决定别人访问我们的DNS服务器的访问类型。

include

允许我们包含其他的文件并将该文件视为正常的named.conf文件的一部分来对待。

logging

指定哪些信息被记录、哪些信息被忽略。对于需要记录的信息,我们还可以指定其记录的位置。

options

处理全局性的服务器配置问题。

controls

允许我们声明rndc工具使用的控制渠道。

server

设置特定服务器配置选项。

zone

定义一个DNS区域。

3. include宣告

如果我们发现我们的配置文件开始变得笨拙起来,我们可能要考虑将该文件分割成较小的部分,每个这些较小的文件然后都将被包含在主要的named.conf文件中。注意,我们不能在其他的宣告中使用include宣告。

下面是一个include宣告的例子:

include "/path/to/filename_to_be_included";

注意:对于我们的所有的C和C++程序:不管我们的直觉告诉我们什么,都要确保不要使用井字符(#)开始一个include行!因为在named.conf文件中的井字符(#)表示一个注释的开始。

4. logging宣告

logging宣告用来指定我们想要记录的信息以及信息记录的位置。当这个宣告和syslog工具联合使用时,我们就可以得到一个强大的可配置的日志记录系统。记录的条目是大量的有关named后台进程的统计报表。默认情况下,记录文件为/var/log/messages文件,在该文件最简单的格式下,不同类型的记录被按照预定义的分类进行分组。例如,有security(安全)关联记录、general(通用)类、default(默认)类、resolver(解析)类、queries(查询)类等等。

不幸的是,logging宣告的的可配置性将会带来额外的复杂性,但是named后台进程设置的默认的logging设置已经足够大多数情况下使用了。下面是一个简单的logging指令的例子:

1      logging {

2      category default { default_syslog; };

3      category queries { default_syslog; };

4

5       };

注意:上面的各行的行号是为了便于阅读而添加的。

例子中的logging指令表示所有default默认类的记录都将被发送至系统的syslog(默认类定义的记录选项没有作任何的指定配置的定义)。

第三行的内容指出所有的查询都应该被记录,在这种情况下,所有的查询都应该被记录到系统的syslog中。

5. server宣告

server宣告告诉BIND可能要和其进行交往的其他的名称服务器的有关信息。server宣告的格式如下所示:

1      server ip-address {

2             bogus yes/no;

3      keys { string ; [ string ; [...]] } ; ]

4             transfer-format one-answer/many-answers;

5             ...<other options>...

6      };

这里第一行的ip-address是查询的远程服务器的IP地址。

第二行中的bogus选项告诉服务器远程的服务器是否在发送有害的信息,在我们和其他站点的混杂的服务器打交道时,如果该服务器向我们发送一些有害的信息的时候这一点是很有用的。第三行中的keys字句通过关键字声明指定定义的key_id,它可以用来和远程的服务器进行安全会话。这个key用来产生一个请求签名追加到和远程名称服务器交换的消息后面。在第四行中的条目transfer-format告诉BIND远程服务器是否在一个查询响应中可以接受多个回答。

下面是一个server项的例子:

server 192.168.1.12 {

bogus no;

transfer-format many-answers;

};

6. zone宣告

zone宣告允许我们定义一个DNS区域——这个定义经常会把人搞混,这里我们澄清一下:DNS区域和DNS域不是一回事,它们的区别很微妙,但是很重要。

我们来回顾一下:域是安组织边界指定的,一个单独的组织可以被分成更小的管理子域,每个子域都有它们自己的区域,所有的区域共同组成整个域。

例如,.example.org是一个域,在该域内部有以下子域:.engr.example.org、marketing.example.org、sales.example.org和.admin.example.org,这四个子域中的每个子域都有它们自己的区域,同时,.example.org中还有一些主机,它们不属于任何子域,因而.example.org也有它自己的区域。因此,实际上.example.org域由总共5个区域组成。

在最简单的模型中,一个简单的域没有任何的子域,区域和域的术语在有关主机、配置等信息上的定义都是相同的。

在named.conf文件中设置区域的过程我们将在下一节中讨论。

相关阅读 更多 +
排行榜 更多 +
超级冒险王安卓版

超级冒险王安卓版

休闲益智 下载
玩具小镇手机版

玩具小镇手机版

休闲益智 下载
这一关特上头手机版

这一关特上头手机版

休闲益智 下载