在RHFC3下配置DNS Master 服务器

* 本文的目的是配置一个DNS master服务器,以供自己学习研究使用

* 硬件环境:两台PCRH FC3,一个router

* 192.168.1.21 DNS服务器,hostname atslxt001

* 192.168.1.22 DNS客户端,hostname atslxt002

* 时间:200577日星期四

* 作者:kilvon

* 版本:1.0

 

1. 从安装光盘或者ISO里找到3个相关的RPM包,我用的是RH FC3kernel的版本是:2.6.9-1.667,相应的RPM是:

bind-9.2.4-2.i386.rpm

bind-utils-9.2.4-2.i386.rpm

caching-nameserver-7.3-3.noarch.rpm

 2.安装

#rpm –Uvh bind-9.2.4-2.i386.rpm

#rpm –Uvh bind-utils-9.2.4-2.i386.rpm

#rpm –Uvh caching-nameserver-7.3-3.noarch.rpm

 

3. DNS的客户端会去查找这个文件:/etc/resolv.conf,以下是实际的输出:

search tcs.com.

nameserver 192.168.1.21

nameserver 127.0.0.1

说明:tcs.com这个域名是我用在本地局域网里面测试学习使用的,不是注册的(真的是有这个域名的,希望不会引起误会)

由于192.168.1.21是本机的地址,所以上面第34行的作用是一样的,如果在其他的机器上就要写成:

search tcs.com.

nameserver 192.168.1.21

那么在查找域名时就会去找192.168.1.22这个地址上的DNS server

这里最多列3name server,系统按顺序查找

search tcs.com中的tcs.com的作用是当只使用atslxt001时,系统先把tcs.com附在该名字后变成atslxt001.tcs.com,然后再去询问DNS服务器。

 

4. 好了,客户端的配置就完成了,该配服务器端了;服务器可以配置为3种模式:master, slave, caching only,可以针对不同的域名配置不同的模式。

 

5. 先来配置一个最简单的master DNS

Master DNS包含某个domain的数据库(zone)。需要修改/etc/named.conf文件:

[root@atslxt001 named]# more /etc/named.conf

//

// named.conf for Red Hat master DNS

//

 

options {

        directory "/var/named";

        dump-file "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        /*

         * If there is a firewall between you and nameservers you want

         * to talk to, you might need to uncomment the query-source

         * directive below.  Previous versions of BIND always asked

         * questions using port 53, but BIND 8.1 uses an unprivileged

         * port by default.

         */

         // query-source address * port 53;

};

 

//

// a caching only nameserver config

//

controls {

        inet 127.0.0.1 allow { localhost; } keys { rndckey; };

};

 

zone "." IN {

        type hint;

        file "named.ca";

};

 

 

zone "localhost" IN {

        type master;

        file "localhost.zone";

        allow-update { none; };

};

 

zone "0.0.127.in-addr.arpa" IN {

        type master;

        file "named.local";

        allow-update { none; };

};

 

zone "tcs.com" IN {

        type master;

        file "named.tcs.com";

        allow-update { none; };

};

 

include "/etc/rndc.key";

 

//

//end of named.conf [Kilvon]

//

 

这句命令指明了zone文件存放的地址:

directory "/var/named";

所以要创建这个文件/var/named/named.tcs.com

 

[root@atslxt001 named]# more /var/named/named.tcs.com

$TTL    86400

@       IN      SOA     atslxt001.tcs.com. root.tcs.com.  (

                                      2005070800 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

 

tcs.com.                IN      NS      atslxt001.tcs.com.

 

atslxt001.tcs.com.      IN      A       192.168.1.21

ftp                     IN      CNAME   atslxt001

 

atslxt001               IN      A       192.168.1.21

atslxt002               IN      A       192.168.1.22

atslxt003               IN      A       192.168.1.23

atslxt004               IN      A       192.168.1.24

atslxt005               IN      A       192.168.1.25

atslxt006               IN      A       192.168.1.26

 

注意上面第一列没有以 .结尾的都将自动被加上域名tcs.com.

 

其中各个关键字的含义是:

SOA : Start Of Authority 该字段放在zone file最开始的地方,描述本zone相关的各种name server数据;它前面的@符号代表了named.conf中的zone”tcs.com”

NS : name server,定义了tcs.com这个domain是由atslxt001.tcs.com这个name server负责解析;

A : address,定义主机对应的ip地址

PTR : pointer,定义ip对应的主机名

CNAME : canonical name,定义主机的别名,比如我定义ftp就是atslxt001

[root@atslxt001 named]# host ftp

ftp.tcs.com is an alias for atslxt001.tcs.com.

atslxt001.tcs.com has address 192.168.1.21

MX : mail exchanger

 

然后就配置好了,用以下命令激活新设置的参数并校验是否可以使用DNS服务了

[root@atslxt001 named]# service named reload

Reloading named:                                           [  OK  ]

[root@atslxt001 named]# host atslxt002

atslxt002.tcs.com has address 192.168.1.22

 

如果有规则的主机名,可以使用这个方法:

$GENERATE 1-6      atslxt00$         A         192.168.1.2$

其中atslxt00$即表示atslxt001-6,并且注意Class位不可写入IN

 

6. 上面的配置中没有包含反解域,现在加入反解域的数据。

[root@atslxt001 named]# more /etc/named.conf

//

// named.conf for Red Hat caching-nameserver

//

 

options {

        directory "/var/named";

        dump-file "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        /*

         * If there is a firewall between you and nameservers you want

         * to talk to, you might need to uncomment the query-source

         * directive below.  Previous versions of BIND always asked

         * questions using port 53, but BIND 8.1 uses an unprivileged

         * port by default.

         */

         // query-source address * port 53;

};

 

//

// a caching only nameserver config

//

controls {

        inet 127.0.0.1 allow { localhost; } keys { rndckey; };

};

 

zone "." IN {

        type hint;

        file "named.ca";

};

 

 

zone "localhost" IN {

        type master;

        file "localhost.zone";

        allow-update { none; };

};

 

zone "0.0.127.in-addr.arpa" IN {

        type master;

        file "named.local";

        allow-update { none; };

};

 

zone "tcs.com" IN {

        type master;

        file "named.tcs.com";

        allow-update { none; };

};

 

//以下数据是为反解域而设

 

zone "1.168.192.in-addr.arpa" {

        type master;

        file "named.192.168.1";

};

 

include "/etc/rndc.key";

 

//

//end of named.conf [Kilvon]

//

 

然后编辑文件named.192.168.1

[root@atslxt001 named]# more /var/named/named.192.168.1

$TTL 86400

@       IN      SOA     atslxt001.tcs.com. root.atslxt001.tcs.com. (

                                                2005071901    ;serial number

                                                10800              ;refresh

                                                3600                ;retry

                                                604800            ;expire

                                                0)                     ;TTL for negative answer

                                                IN        NS       atslxt001.tcs.com.

21.1.168.192.in-addr.arpa.      IN        PTR     atslxt001.tcs.com.

$GENERATE       2-6     2$               PTR     atslxt00$.tcs.com.

 

当然也可以这样写,

21                                            IN        PTR     atslxt001.tcs.com.

22                                            IN        PTR     atslxt002.tcs.com.

 

 

 

 

 

 

同样的,第一列没有以 .结尾的话会自动被加上1.168.192.in-addr.arpa.

 

最后测试一下:

[root@atslxt001 named]# service named reload

Reloading named:                                           [  OK  ]

[root@atslxt001 named]# host 192.168.1.25

25.1.168.192.in-addr.arpa domain name pointer atslxt005.tcs.com.

[root@atslxt001 named]# host 192.168.1.21

21.1.168.192.in-addr.arpa domain name pointer atslxt001.tcs.com.

 

附录:

1. 主机名存放在/etc/sysconfig/network文档中:

[root@atslxt001 ~]# more /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=atslxt001.tcs.com

2.设置静态地址在/etc/sysconfig/networking/devices/ifcfg-eth0

[root@atslxt001 ~]# more /etc/sysconfig/networking/devices/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

TYPE=Ethernet

BOOTPROTO=none

IPADDR=192.168.1.21

USERCTL=no

PEERDNS=yes

IPV6INIT=no

NETMASK=255.255.255.0

GATEWAY=192.168.1.1

3.至于系统先查询/etc/hosts还是DNS取决于这个文件/etc/nsswitch.conf,中间有一行是这么写的:

hosts:   files dns

4. DNS服务器上的防火墙设置(系统设置=>安全级别)一定要允许telnet访问,否则会出现只有DNS服务器本机可以使用DNS服务的情况;

5. BIND语法检查工具

[root@atslxt001 named]# named-checkconf

[root@atslxt001 named]# named-checkzone tcs.com named.tcs.com

zone tcs.com/IN: loaded serial 2005070800

OK

[root@atslxt001 named]# named-checkzone 1.168.192.in-addr.arpa named.192.168.1

zone 1.168.192.in-addr.arpa/IN: loaded serial 2005071901

OK


 

你可能感兴趣的:(linux,caching,服务器,file,domain,server,soa)