①简介
DNS就是Domain Name System,它能够把形如www.21php.com这样的域名转换为211.152.50.35这样的IP地址;没有DNS,浏览21php.com这个网站时,就必须用211.152.50.35这么难记的数字来访问。提供DNS服务的就是DNS服务器。DNS服务器可以分为三种,高速缓存服务器(Cache-only server)、主服务器(Primary Name server)、辅助服务器(Second Name Server)。
1、“hosts”文件,定义了主机名和ip地址的对应,其中也有将要运行dns这台电脑的ip地址和主机名。内容:
127.0.0.1 localhost.localdomain localhost
2、 “host.conf”文件[Boban注:原来误写成hosts.conf],"order hosts bind"语句,指定了对主机名的解析顺序是先到hosts中查找,然后到dns服务器的记录里查找。“multi on”则是允许一个主机名对应多个ip地址。内容:
order hosts, bind
multi on
nospoof on
3、 “resolv.conf”文件,“nameserver 10.0.0.211”指定了dns服务器的地址。注意,这个文件对普通非dns服务器的电脑(非windows的系统;Windows系统是在“网络属性”中设置这项的)来说,是必不可少的。你如果没有设置本机为dns服务器,你又要能够解析域名,就必须指定一个dns服务器的地址。你可以最多写上三个地址,作为前一个失败时的候选dns服务器。“domain zrs.com”指定默认的域。文件内容:
domain 21php.com
nameserver 11.0.0.1
4、“named.boot”文件是早期版本的bind软件使用的配置文件,现在新版本中已经让位于“named.conf”。named.conf是dns server配置的核心文件。下面我们一段一段的来解说。
# named.conf - configuration for bind
#
# Generated automatically by bindconf, alchemist et al.
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
include "/etc/rndc.key";options {
directory "/var/named/";
};
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
};
zone "localhost" {
type master;
file "localhost.zone";
};
zone "21php.com" {
type master;
notify yes;
file "21php.com";
};
zone "." {
type hint;
file "named.ca";
};
指定named从 named.ca 文件中获得Internet的顶层“根”服务器地址 。
zone "0.0.127.in-addr.arpa" {
type master;
file "0.0.127.in-addr.arpa.zone";
};
指定named作为127.0.0网段地址转换主服务器,named.local文件中包含了127.0.0.*形式的地址到域名的转换数据(127.0.0网段地址是局域网接口的内部 loopback地址);
zone "localhost" {
type master;
file "localhost.zone";
};
指定包含localhost的DNS文件数据存放在/var/named/localhost.zone中;
zone "21php.com" {
type master;
notify yes;
file "21php.com.zone";
};
以上语句表明域21php.com的DNS数据存放在/var/named/目录下的21php.com.zone中;
我们可以用文本编辑器打开/var/named/21php.com.zone,其内容如下:
$TTL 86400 @ IN SOA @ root.localhost (
2 ; serial
28800 ; refresh
7200 ; retry
604800 ; expire
86400 ; ttl
)
@ IN NS localhost
www IN A 11.0.0.233
www2 IN A 11.0.0.23
forum IN A 11.0.0.10
@ IN MX 5 mail.21php.com.
该文件的前部分是相应的参数设置,此部分不需要改动,后面的部分就是具体的DNS数据;
例如:
www IN A 11.0.0.233
将www.21php.com 解析到地址11.0.0.233;
www2 IN A 11.0.0.23
将www2.21php.com 解析到地址11.0.0.23;
club IN A 11.0.0.10
将club.21php.com 解析到地址11.0.0.10;
③配置辅助DNS服务器
配置服务器11.0.0.2为21php.com辅助dns服务器
辅助DNS服务器,可从主服务器中转移一整套域信息。区文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。在辅助服务器中有域信息的完整拷贝,所以也可以可以回答对该域的查询。这部分的配置内容如下:
zone "21php.com" IN {
type slave;
file "21php.com.zone";
masters { 11.0.0.1; };
};
@ IN SOA linux.my.com. root.linux.my.com. (
199511301 ; serial, todays date + todays serial #
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 记录,定义了域名服务器本身的域名和 username@my.com 形式邮
件地址所对应的邮件服务器名字。
在此以下是各种域名/地址转换数据,其中 A 记录是 DNS 域名到 IP 地址的记录,是必须有的,以
hp712.my.com 为例,在 A 记录中域 my.com 被省略,只写成 hp712,named 在处理时会根据 named.boot
中的定义自动加上 my.com,而其对应 IP 地址为 192.22.33.160。
如果企业网络不与外界 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 Server )和一台后备 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 serial #
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 域的服务器,而且可以既作某些域的主服务器,同时又是另一些域的后备服
务器。