1.所用系统及配置文件
这里使用的服务器版本是 Red Hat Enterprise Linux 5.0。为了确保公司域名服务器能够不间断运行,我们同时架设两台DNS服务器(Master和Slave)。这里将着重介绍建立在Linux 系统上的 Master主DNS 服务器系统。
Berkeley Internert Name Domain (BIND)是一个熟知的域名软件。它具有广泛的使用基础,互联网上的绝大多数DNS服务器都是基于该软件。BIND 目前由ISC (Internet Software Consortium)负责维护,具体开发由 Nominum 公司完成。
从BIND 官方网站http://www.isc.org/bind可以下载它的最新版本。安装完成后,在/etc 目录中会有 hosts 、hosts.conf、resolv.conf、named.boot和named.conf等配置文件。
■hosts 文件定义了主机名与IP地址的对应,其中包括将要运行DNS 的这台服务器的IP 地址和主机名。
◆resolv.conf 文件内容如下:
- search linux.com
- nameserver IP
“nameserver IP”指定DNS服务器的地址。注意,该文件对普通非Windows 系统的DNS服务器(Windows系统在“网络属性”中设置该项)来说必不可少。如果没有设置本机为DNS服务器,又要求能够解析域名,就必须指定一个DNS服务器地址。最多可以写入三个地址,作为前一个失败时的候选DNS服务器。
■named.boot文件是早期版本BIND 4所用的配置文件,新版本中已经让位于named.conf.
■named.conf是DNS服务器配置的核心文件。
以上只是简单说明设置DNS服务器时涉及的配置文件,后文将主要介绍named.conf 中的具体设置选项。DNS的具体配置过程及BIND的详细安装步骤可以参阅其他资料。
2.View语法介绍
View功能很容易理解,就是将不同IP地址段发来的查询响应到不同的DNS解析。例如需要对三个不同IP地址段进行配置,就需要明确这些IP地址段,这样View功能才会有效。对于初学者,简单了解它的语法非常必要。如果要有一个更清楚的认识,则可以到BIND官方网站查阅文档。
3.View的简单实例
下面给出View的一个简单实例,参照上面的解释可以进一步地了解View 的用法。
- acl “example”{
- 192.168.1.123;
- 192.168.1.124;
- ……};//定义一个IP访问控制列表
- View “internal”{
- //表示这是一个内部网络
- Match-clients{IP地址段};
- //由于前面已经定义acl,所以这里可以用实际IP地址段,也可以改用acl名字“example”
- Clients only;
- Recursion yes;
- //表示查询方式允许递归查询Zone
- //表示包含的区文件
- Zone “linux.com”{
- Type master;
- File “linux.com”;
- };
- };
- View “external”}
- Match-clients{any;};
- //表示除了上面acl列表所定义的IP地址以外的所有地址
- Recursion no;
- //表示子网以外的网张不应该请求该DNS服务器的递归查询
- Zone
- //建立“external”相对应的区文件
- Zone “linux.com”{
- Type master;
- File “linux.com.db”
- };
- };
三、方案实施步聚
1.基本设置
下面结合实际搭建过程和namd.conf的具体设置,详细说明应该注意的方面。在本例中,选用linux.com做为本地域名,nsl为本地主机名,IP地址为61.56.123.5(这是一个虚拟的电信IP地址)。为了让网通和电信的用户都能快速访问本网站,网站另外还有一个网通IP地址。
本例把网通命名为cnc,电信命名为tel,定义了两个域名来同时使用一台DNS服务器,并且在/var/named/下建立相应的目录结构和域名文件。
◆对应区文件的建立
在/var/named下分别建立相应的cnc和tel目录,在目录下分别建立相应的区文件 linux.com、db.linux.com和idg.linux.com等。例如,网通即cnc目录中建立的linux.com
文件的内容如下:
- $TTL 900
- @ IN SOA
- nsl.linux.com.
- root.linux.com.(
- 20050615;Serial
- 28800; Refresh
- 14400; Retry
- 3600000;Expire
- 86400);Minimum
- linxu.com. INnsl.linux.com
- nsl IN A 61.56.123.5
- aaa IN A 221.12.160.93 bbb IN A 221.12.160.93
- linux.com. IN 221.12.160.92
- mail2 IN A 61.157.39.100
上述内容只是一个列子,各公司或企业可以根据不同要求具体给出区文件的内容。Tel 目录中的文件内容与些类似,修改相应IP地址即可。
◆主配置文件的设定
这里将根据网通和电信的IP地址,让DNS对不同网段返回不同的地址解析。
- options{
- directory“/var/named”;
- //配置文件所在目录
- Pid-file “/var/run/named.pid”;
- //进程守护文件
- Statistics-file “/var/run/named.stats”;
- //状态输出文件,在rndc中用到
- //query-source address *port 53;
- allow-recursion {ournets;};
- };
- //a caching only nameserver config
- Controls {
- inet 127.0.0.1 allow { localhost ;}keys {rndckey } ;
- };
- //acl 定义网通IP地址池,即如下IP地址访问网站时将指引到网通相应的区文件中。
- acl “subnet” {
- 61.207.0.0/16;
- 168.160.224.0/19;
- ……
- };
- view “baoku” {
- match-clients {“subnet”;
- //注意,在使用View功能 时,一定要把整个named.conf的设置语句都包括在view里面,否则最后会出现错误。
如上设置完成后,当网通用户和电信用户访问该网站时,DNS的View功能会根据他们不同的地址段指向分别相对应的区文件。
2.问题分析
在系统设置的过程中“named-g”起到很大作用,发现了很多DNS的问题,包括named权限问题,以及区文件里的语法错误等。通过具体实践,读者会有更深切的体会。如上设置完成后是否就可以顺利地看到结果了呢?不然。这还需要根据DNS服务提供的具体情况。由于笔者公司是由DNS服务提供商来提供网站解析服务,所以需要面对一个如何让所配置DNS服务合法起作用的问题,即如何使用户在访问该网站自己的DNS服务器解析。通过与服务提供商协调,一家DNS服务提供商允许我们修改其区文件,在其中添加一条A记录指向网站自己的DNS服务器,从而解决了这一问题。当建立了Slave辅助服务器后,最好不要采取这一方式,以避免引起混淆。这种情况下可以直接注册一个自己的DNS服务。
3.加强安全
本文只是介绍了使用BIND View功能架设DNS简单过程,其中还有很多东西值得深究,比如网络加强安全问题等。本例中,笔者通过关闭该DNS服务器上的所有无关端口,并建立相应iptables防火墙规则来保证网络安全。还可以使用最新BIND 9版本来设置一个在chroot环境下运行的BIND的安全性。将BIND chroot到/chnamed目录运行,则named在运行时将认为/chnamed是实际的根目录,即使named有某种安全漏洞被人攻破,也只能存取到该目录为止。BIND 9还新增了很多关于安全性的设定项,读者可以根据需要自行具体设定。限于篇幅下次再给大家介绍BIND 9安全设置。