Linux系统下的DNS服务器配置(BIND)

2012-5-27 17:01:57 来源:网络转载 浏览:280
本文主要介绍DNS(BIND)的PRIMARY服务器入门级配置,仅供新手学习参考,如果你要配置公网使用的DNS服务器,可能要根据需要加更多的配置参数。开始之前,我们假设我们要追加的域名是mydns.com。

本文主要介绍DNS(BIND)的PRIMARY服务器入门级配置,仅供新手学习参考,如果你要配置公网使用的DNS服务器,可能要根据需要加更多的配置参数。开始之前,我们假设我们要追加的域名是mydns.com。

 

第一步,安装bind和bind-chroot

 
1
[root@rhel5 ~]# yum -y install bind bind-chroot

*我们的dns服务器bind将运行在chroot环境下,这样有助于提高系统的安全性。而bind的chroot目录默认是/var/named/chroot,也就是说对于bind这个程序来说/var/named/chroot就是它的根目录。

第二步,配置主配置文件,文件位置/var/named/chroot/etc/named.conf。虽然安装完bind之后在/usr/share/doc/bind-*/sample/etc/目录下有一些实例配置文件,你可以参照。在这里,我将直接创建所有需要的文件。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@rhel5 ~]# vi /var/named/chroot/etc/named.conf
options {
   version         "unknown";
    directory       "/";
    allow-query     { any; };
    recursion      yes;
};
  
zone "." {
    type hint;
    file "root.ca";
}; 
  
zone "mydns.com" {
    type master;
    file "master/mydns.com.zone";
    allow-transfer { none;};
};
  
zone "0.168.192.in-addr.arpa" {
    type master;
    file "master/0.168.192.in-addr.arpa.zone";
    allow-transfer { none;};
};

特别注意:
第六行的设置参数recursion,这个非常重要,这个参数决定了是否使用递归式DNS服务器,默认为yes。
recursion yes 使用递归,简单的说,就是当客户端的询问是非本DNS服务器管理之外的域名信息时,也会应答。
recursion no 不递归,意思就是无论来自哪儿的DNS询问,除了本机管理的域名外,都不回答。

第三步,创建root zone,即Internet里根dns服务器的地址信息

 
1
[root@rhel5 ~]# dig . ns @198.41.0.4 > /var/named/chroot/root.ca

第三步,让bind只在ipv4上监听,防止日志里出现类似error (network unreachable) resolving这样的错误。

 
1
[root@rhel5 ~]# echo OPTIONS="-4" >> /etc/sysconfig/named

第四步,创建mydns.com的zone文件(正向解析)。我喜欢放在/var/named/chroot/master下。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@rhel5 ~]# mkdir /var/named/chroot/master
[root@rhel5 ~]# vi /var/named/chroot/master/mydns.com.zone
$TTL    86400
@       IN      SOA     ns.mydns.com.  root.mydns.com.(
                                      2011052601 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN  NS    ns.mydns.com.
        IN  MX 10 mx01
        IN  MX 20 mx02
@       IN  A     192.168.0.5
ns      IN  A     192.168.0.5
mx01    IN  A     192.168.0.6
mx02    IN  A     192.168.0.7
www     IN  A     192.168.0.8
web     IN  CNAME www

然后保存退出,如果你第一次配置,一定注意下面的事项!
* 每次修改zone文件,一定要记得更新Serial编号
* 在各种A CNAME MX等记录的最后一项,在指定全主机名的情况,末尾一定要加点. 比如:

 
1
2
    IN MX 20 mx02.mydns.com.
web IN CNAME www.mydns.com.

第五步,我们创建反向解析的zone。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@rhel5 ~]# vi /var/named/chroot/master/0.168.192.in-addr.arpa.zone
$TTL    86400
@       IN      SOA     ns.mydns.com.  root.mydns.com.(
                                      2011052601 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS    ns.mydns.com.
5       IN      PTR   mydns.com.
6       IN      PTR   mx01.mydns.com.
7       IN      PTR   mx02.mydns.com.
8       IN      PTR   www.mydns.com.

*这里的数字对应的就是ip的最后一位。

第六步,我们配置到此为止已经成功了,接下来启动dns服务器,并添加到自动启动。

 
1
2
3
[root@rhel5 ~]# /etc/init.d/named start
启动 named:                                              [确定]
[root@rhel5 ~]# chkconfig named on

如果你启动失败了,会有出错信息,或者/var/log/messages里也会有信息,根据信息找出错误所在。由于时间关系,上面的设置我都没有进行详细的解释,改天补上。

第7步,测试,我就在linux里测试了,首先把解析服务器设置成我们自己的dns服务器。

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[root@rhel5 ~]# echo "nameserver 127.0.0.1" > /etc/resolv.conf
[root@rhel5 ~]# nslookup
> mydns.com
Server:         127.0.0.1
Address:        127.0.0.1#53
  
Name:   mydns.com
Address: 192.168.0.5
> www.mydns.com
Server:         127.0.0.1
Address:        127.0.0.1#53
  
Name:   www.mydns.com
Address: 192.168.0.8
> web.mydns.com
Server:         127.0.0.1
Address:        127.0.0.1#53
  
web.mydns.com   canonical name = www.mydns.com.
Name:   www.mydns.com
Address: 192.168.0.8
> set type=MX
> mydns.com
Server:         127.0.0.1
Address:        127.0.0.1#53
  
mydns.com       mail exchanger = 10 mx01.mydns.com.
mydns.com       mail exchanger = 20 mx02.mydns.com.
> set type=PTR
> 192.168.0.5
Server:         127.0.0.1
Address:        127.0.0.1#53
  
5.0.168.192.in-addr.arpa        name = mydns.com.
> 192.168.0.6
Server:         127.0.0.1
Address:        127.0.0.1#53
  
6.0.168.192.in-addr.arpa        name = mx01.mydns.com.
> 192.168.0.7
Server:         127.0.0.1
Address:        127.0.0.1#53
  
7.0.168.192.in-addr.arpa        name = mx02.mydns.com.
> exit

好了,测试说明我们的dns服务器已经正常运行了。

(0)
(0)