Total Pageviews

Thursday, 8 November 2012

在linux VPS上用Bind搭建权威DNS解析服务器

搭建自己的DNS非常简单,在Linux下只需按照Bind9并做简单设置即可,本文将介绍如何在境外linux VPS上用Bind9来搭建DNS服务器。

一、安装Bind9

    # apt-get install bind9

二、配置Bind9作为主DNS服务器

1.添加一个域名:
    # nano /etc/bind/named.conf.local

zone "luckypoem.asia" {
        type master;
        file "/etc/bind/luckypoem.asia.db";
};

2.新建zone文件
# cd /etc/bind/
# nano luckypoem.asia.db

复制如下内容到luckypoem.asia.db中:
$TTL    3600
@       IN      SOA     @ admin (
                              2         ; Serial
                           3600         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          3600 )        ; Negative Cache TTL
;
@       IN      NS      ns1.luckypoem.asia.
@       IN      NS      ns2.luckypoem.asia.
ns1      IN      A       178.17.41.220
ns2      IN      A       178.17.41.220
@       IN      A       ur-virtual-host-ip
www     IN   A       ur-virtual-host-ip
mail    IN    A    178.17.41.220
@       IN      MX      10      mail.luckypoem.asia.

三、保存文件,测试无误后重启Bind服务

    # named-checkzone luckypoem.asia /etc/bind/luckypoem.asia.db

如果有“OK”字样显示,则表示配置无误。

    # /etc/init.d/bind9 restart

访问http://www.intodns.com/luckypoem.asia,如果Domain NS records栏显示的内容为
ns2.luckypoem.asia. ['178.17.41.220']
ns1.luckypoem.asia. ['178.17.41.220']
则表明解析生效了。
按照luckypoem.asia.db文件的内容,可以继续添加其他的A记录,CNAME记录和NS记录。
(我按此文操作成功).

 你还可以把ns1.luckypoem.asia和ns2.luckypoem.asia作为你的其他域名的dns server.举例配置如下:
(从上面的第二步开始:
二、配置Bind9作为主DNS服务器

1.添加一个域名:
    # nano /etc/bind/named.conf.local

zone "luckypoe.me" {
        type master;
        file "/etc/bind/luckypoe.me.db";
};

2.新建zone文件
# cd /etc/bind/
# nano luckypoe.me.db

复制如下内容到luckypoe.me.db中:
$TTL    3600
@       IN      SOA     @ admin (
                              2         ; Serial
                           3600         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                          3600 )        ; Negative Cache TTL
;
@       IN      NS      ns1.luckypoem.asia.
@       IN      NS      ns2.luckypoem.asia.
@       IN      A       ur-virtual-host-ip
www     IN   A       ur-virtual-host-ip

三、保存文件,测试无误后重启Bind服务
    # named-checkzone luckypoe.me /etc/bind/luckypoe.me.db

如果有“OK”字样显示,则表示配置无误。

    # /etc/init.d/bind9 restart
--------------------------------

在centos os下搭建DNS服务器

大同小异。

搭建自己的DNS非常简单,在Linux下只需按照Bind9并做简单设置即可,本文将介绍如何在VPS上用Bind来搭建DNS服务器。

一、安装Bind

    # yum install bind

二、配置Bind作为主DNS服务器

编辑/etc/named.conf文件
# nano /etc/named.conf

修改listen-on port 54 { 127.0.0.1; };

listen-on port 54 { any; };
修改
allow-query     { localhost; };

allow-query     { any; };

然后在
zone "." IN {
  type hint;
  file "named.ca";
};
之前或之后添加以下内容:
zone "luckypoem.net" IN {
        type master;
        file "/var/named/luckypoem.net.zone";
};

2.新建zone文件

# cd /var/named/

# nano luckypoem.net.zone

复制如下内容到luckypoem.net.zone中:

$TTL    3600

@       IN      SOA     @ admin (

                              2         ; Serial

                           3600         ; Refresh

                          86400         ; Retry

                        2419200         ; Expire

                          3600 )        ; Minimum
;

@       IN      NS      ns1.luckypoem.net.

@       IN      NS      ns2.luckypoem.net.

ns1      IN      A     198.27.109.145

ns2      IN      A    198.27.109.145

@       IN      A       ur-virtual-host-ip

www     IN   A        ur-virtual-host-ip

mail    IN    A    ur-virtual-host-ip

@       IN      MX      10      mail.luckypoem.net.

三、保存文件,测试无误后重启Bind服务

    # named-checkzone luckypoem.net /var/named/luckypoem.net.zone

如果有“OK”字样显示,则表示配置无误。然后,
systemctl restart named
systemctl enable named

The BIND server will run as the named user, which is created during installation, and listens on TCP and UDP port 54, as can be seen by running the following command:
netstat -tulpn|grep named

Usually, DNS queries are sent to the UDP port 54. The TCP port 54 is for responses size larger than 512 bytes.
The BIND daemon is called named. (A daemon is a piece of software that runs in the background.) The named binary is installed by the bind package and there’s another important binary: rndc, the remote name daemon controller. The rndc binary is used to reload/stop and control other aspects of the BIND daemon. Communication is done over TCP port 953.
For example, we can check the status of the BIND name server:
rndc status

访问http://www.intodns.com/luckypoem.net,如果Domain NS records栏显示的内容为
ns2.luckypoem.net. ['198.27.109.145']
ns1.luckypoem.net. ['198.27.109.145']
则表明解析生效了。

按照luckypoem.net.zone文件的内容,可以继续添加其他的A记录,CNAME记录和NS记录。(我按此文操作成功)
----------------------------

 centos vps下,BIND DNS服务器的安装与主从DNS的配置(不建议按此文操作。太复杂)

bind是一种开源的DNS(Domain Name System)协议的实现,包含对域名的查询和响应所需的所有软件。它是互联网上最广泛使用的一种DNS服务器,对于类UNIX系统来说,已经成为事实上 的标准。下面我们主要学习利用BIND来实现主从dns,高速缓存DNS下次学习。

BIND安装

软件下载地址:http://www.isc.org/software/bind,目前最新版本是BIND 9.8.1-P1。
安装依赖:
  1. yum -y install gcc openssl-devel
开始安装bind.
  1. wget ftp://ftp.isc.org/isc/bind9/9.8.1-P1/bind-9.8.1-P1.tar.gz
  2. tar xzf bind-9.8.1-P1.tar.gz
  3. cd bind-9.8.1-P1
  4. ./configure --prefix=/usr/local/bind
  5. make && make install
执行完成后,bind已经安装到了/usr/local/bind目录。

配置主dns服务器

配置bind主要是两种文件,一是主配置文件named.conf,二是区域文件zone(包括正解析,反解析)。
在下面的配置中,我们的主dns服务器是ns1.qbtop.com 23.19.81.191,从dns服务器是ns2.qbtop.com 23.19.81.194(这两个dns都已经在godaddy注册好了)。
下面操作仅在主dns服务器23.19.81.191执行。

主配置文件named.conf

首先执行rndc-confgen -a生成/etc/rndc.key密钥文件。
  1. /usr/local/bind/sbin/rndc-confgen -a
  1. vi /usr/local/bind/etc/named.conf
写入如下内容:
  1. include "/usr/local/bind/etc/rndc.key";
  2. controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndckey"; }; };
  3. logging {
  4. channel default_syslog { syslog local2; severity notice; };
  5. channel audit_log { file "/var/log/bind.log"; severity notice; print-time yes; };
  6. category default { default_syslog; };
  7. category general { default_syslog; };
  8. category security { audit_log; default_syslog; };
  9. category config { default_syslog; };
  10. category resolver { audit_log; };
  11. category xfer-in { audit_log; };
  12. category xfer-out { audit_log; };
  13. category notify { audit_log; };
  14. category client { audit_log; };
  15. category network { audit_log; };
  16. category update { audit_log; };
  17. category queries { audit_log; };
  18. category lame-servers { audit_log; };
  19. };
  20. options {
  21.     directory "/usr/local/bind/etc";
  22. pid-file "/usr/local/bind/var/run/bind.pid";
  23. transfer-format many-answers;
  24. interface-interval 0;
  25. allow-query { any; };
  26. };
  27. zone "qbtop.com" {
  28. type master;
  29. file "qbtop.com.zone";
  30. allow-transfer { 23.19.81.194; };
  31. };
  32. zone "81.19.23.in-addr.arpa" {
  33. type master;
  34. file "81.19.23.in-addr.arpa";
  35. allow-transfer { 23.19.81.194; };
  36. };
named.conf文件说明:
上面的named.conf文件包括三部分:key,controls,logging,options,zone。
logging:设置日志服务器和日志信息的发送地。
options:控制服务器的全局配置选项和为其它语句设置默认值
zone:定义一个域,比如正解析域和反解析域。
logging是定义日志的,不需要深究,主要是options和zone。
在options中:
directory “/usr/local/bind/etc”:定义bind的工作目录为/usr/local/bind/etc,配置文件中所有使用的相对路径,指的都是在这里配置的目录下。
pid-file “/usr/local/bind/var/run/bind.pid”:把bind程序运行的pid写入文件bind.pid。
transfer-format many-answers:使用更加有效的域传输格式many-answers。
allow-query { any; }:允许所有用户查询dns。
在zone中:
这里定义了两个zone,一个是正解析zone qbtop.com,一个是反解析zone 81.19.23.in-addr.arpa。
他们的参数基本相同:
type master:定义dns服务器为主dns。
file “qbtop.com.zone”:定义此zone的文件名。
allow-transfer { 23.19.81.194; }:允许向从dns 23.19.81.194传输dns数据。
唯一不同的是zone名称的定义,正解析zone名称的定义是受权的域名,可以是顶级域名,也可以是二级域名,或多级。反解析zone名称定义规定前部分ip倒着写。如ip 192.168.1.2,名称定义为1.168.192.in-addr.arpa。

正解析qbtop.com.zone

  1. vi /usr/local/bind/etc/qbtop.com.zone
写入如下内容:
  1. $TTL 3600
  2. @ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (
  3. 2012022301  ; Serial
  4. 3600 ; Refresh
  5. 900 ; Retry
  6. 3600000 ; Expire
  7. 3600 ) ; Minimum
  8. @ IN NS ns1.qbtop.com.
  9. @ IN NS ns2.qbtop.com.
  10. ns1 IN A 23.19.81.191
  11. ns2 IN A 23.19.81.194
  12. aaa IN A 23.19.81.191
  13. bbb IN A 23.19.81.191
文件说明:
$TTL 3600:指示为每个没有特殊TTL设置的RR给出了一个默认的TTL。
@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (
2012022301 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
定义SOA记录,包括Zone的名字,一个技术联系人和各种不同的超时值。
@ IN NS ns1.qbtop.com.
@ IN NS ns2.qbtop.com.
设置两个ns记录ns1.qbtop.com和ns2.qbtop.com。
ns1 IN A 23.19.81.191
ns2 IN A 23.19.81.194
aaa IN A 23.19.81.191
bbb IN A 23.19.81.191
设置主机为ns1,ns2,aaa和bbb的A记录。

反解析文件81.19.23.in-addr.arpa

反解析zone可以不设置。
  1. vi /usr/local/bind/etc/81.19.23.in-addr.arpa
写入如下内容:
  1. $TTL 3600
  2. @ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (
  3. 2012022301  ; Serial
  4. 3600 ; Refresh
  5. 900 ; Retry
  6. 3600000 ; Expire
  7. 3600 ) ; Minimum
  8. @       IN      NS      ns1.qbtop.com.
  9. @       IN      NS      ns2.qbtop.com.
  10. 191 IN PTR ns1.qbtop.com.
  11. 194 IN PTR ns2.qbtop.com.
说明:
上部分是定义SOA记录,下部分是设置IP反解析。
如设置IP 23.19.81.191反解析成ns1.qbtop.com,23.19.81.194反解析成ns2.qbtop.com。

配置从DNS服务器

下面我们来配置从DNS服务器。配置从DNS服务器只需要配置主配置文件named.conf,zone文件不需配置,因为这是从主DNS服务器获取的。
首先建立目录slaves用来存放从主dns获取的zone文件。
  1. mkdir /usr/local/bind/etc/slaves
写入如下内容:
  1. logging {
  2. channel default_syslog { syslog local2; severity notice; };
  3. channel audit_log { file "/var/log/bind.log"; severity notice; print-time yes; };
  4. category default { default_syslog; };
  5. category general { default_syslog; };
  6. category security { audit_log; default_syslog; };
  7. category config { default_syslog; };
  8. category resolver { audit_log; };
  9. category xfer-in { audit_log; };
  10. category xfer-out { audit_log; };
  11. category notify { audit_log; };
  12. category client { audit_log; };
  13. category network { audit_log; };
  14. category update { audit_log; };
  15. category queries { audit_log; };
  16. category lame-servers { audit_log; };
  17. };
  18. options {
  19.     directory "/usr/local/bind/etc";
  20. pid-file "/usr/local/bind/var/run/bind.pid";
  21. transfer-format many-answers;
  22. interface-interval 0;
  23. allow-query { any; };
  24. };
  25. zone "qbtop.com" {
  26. type slave;
  27. file "slaves/qbtop.com.zone";
  28. masters { 23.19.81.191; };
  29. };
  30. zone "81.19.23.in-addr.arpa" {
  31. type slave;
  32. file "slaves/81.19.23.in-addr.arpa";
  33. masters { 23.19.81.191; };
  34. };
文件说明:
从dns跟主dns主要的区别是zone的定义,type slave定义此dns服务器为从dns,masters { 23.19.81.191; }定义主dns的IP。

启动BIND

1、在启动BIND之前,我们需要执行/usr/local/bind/sbin/named-checkconf检查named.conf配置文 件,和执行/usr/local/bind/sbin/named-checkzone zone名称 zone文件名,如/usr/local/bind/sbin/named-checkzone qbtop.com /usr/local/bind/etc/qbtop.com.zone。
然后调试模式启动bind,/usr/local/bind/sbin/named -g,g参数的意思是前台执行bind,这会输出启动的信息,发现没有严重的错误后,再把g参数删除重新以/usr/local/bind/sbin/named方式后台启动bind。
2、设置开机启动,在/etc/rc.d/rc.local中加入/usr/local/bind/sbin/named。

手动添加记录

1、直接添加删除或修改zone文件里的记录
2、执行rndc reload zone名称重载,如rndc reload qbtop.com

注意

1、主从同步的两台机器要在同一个时区,时间相差不要太大。
2、主的dns服务器在修改了正向解析文件跟反向分解析文件时,要修改相应的 serial(通常是加数值,这个值必须主的要大于从的,要不同步不了)
配置文件参考:http://www.bind.com/?path=dns
----------------------------------------------------------
 Centos下,安装配置Bind9.7

第一步、安装bind-9.7.2-P3

更新yum源:

rm -rf /etc/yum.repos.d/*.repo

wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo

yum安装openssl-devel :

yum -y install openssl-devel

进入临时安装目录:

cd /opt

获取bind版本:

wget http://ftp.isc.org/isc/bind9/9.7.2-P3/bind-9.7.2-P3.tar.gz

安装bind-9.7.2-P3

tar -zxvf bind-9.7.2-P3.tar.gz

cd bind-9.7.2-P3

./configure --enable-largefile --enable-threads --prefix=/usr/local/named
make

make install

生成密钥:

cd /usr/local/named/etc
/usr/local/named/sbin/rndc-confgen > /usr/local/named/etc/rndc.conf

tail -n10 rndc.conf |head -n9 |sed -e s/#\//g > named.conf

mkdir -p /usr/local/named/data

下载named.root

cd /usr/local/named/

wget ftp://ftp.rs.internic.net/domain/named.root

安装过程可由脚本完成,脚本内容如下,保存为install_bind.sh:

#!/bin/bash
rm -rf /etc/yum.repos.d/*.repo
wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo
yum -y install openssl-devel
cd /opt
wget http://ftp.isc.org/isc/bind9/9.7.2-P3/bind-9.7.2-P3.tar.gz
tar -zxvf bind-9.7.2-P3.tar.gz
cd bind-9.7.2-P3
./configure --enable-largefile --enable-threads --prefix=/usr/local/named
make
make install
cd /usr/local/named/etc
/usr/local/named/sbin/rndc-confgen > /usr/local/named/etc/rndc.conf
tail -n10 rndc.conf |head -n9 |sed -e s/#\//g > named.conf
mkdir -p /usr/local/named/data
cd /usr/local/named/
wget ftp://ftp.rs.internic.net/domain/named.root
exit 1

执行sh脚本;

第二步、修改配置文件

named.conf、rndc.conf这两个配置文件位置为:/usr/local/named/etc

域名相关的配置文件位置为:/usr/local/named

2-1、修改named.conf

修改后内容如下:


options {
        directory "/usr/local/named";
        pid-file "named.pid";
        listen-on port 53 {any;};
        allow-query {any;};
        dump-file "/usr/local/named/data/cache_dump.db";
        statistics-file "/usr/local/named/data/named_stats.txt";
        forward only;               //增加转发功能
        forwarders {
                202.106.0.20;       //北京网通DNS服务器地址
                139.175.10.20;
        };

};

key "rndc-key" {
        algorithm hmac-md5;
        secret "jhdbq+u4cE6KJdrJ6m6yAA==";  //注意“”号中的内容需要和rndc.conf中生成的key值一样;
};

controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
};

zone "."  IN {
        type hint;
        file "named.root";
};

zone "localhost" IN {
         type master;
         file "localhost.zone";
         allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
         type master;
         file "localhost.rev";
         allow-update { none; };
};

zone "fuying.com" IN {
         type  master;
         file "fuying.com.zone";
         allow-update { none; };
};

zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.zone";
        allow-update { none; };
};

2-2、生成域名的配置文件

cd /usr/local/named

修改localhost.zone文件:

vi localhost.zone

内容如下:

$TTL 3600
@    IN SOA  @    root (
                  20100923       ;serial (d. adams)
                  3H             ;refresh
                  15M            ;retry
                  1W             ;expiry
                  3600)          ;minimum
     IN NS   @
     IN A    127.0.0.1

修改localhost.rev文件:

vi localhost.rev

内容如下:

$TTL 3600
@   IN SOA   localhost.   root.localhost. (
             20100923      ; serial
             3600          ; refresh every hour
             900           ; retry every 15 minutes
             3600000       ; expire 1000 hours
             3600)         ; minimun 1 hour
     IN NS  localhost.
1    IN PTR localhost.

修改fuying.com.zone域名解析文件:

vi fuying.com.zone

内容如下:

$TTL    86400
@               IN SOA dns.fuying.com.  root.fuying.com. (
                                        420000          ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
                      IN NS           dns.fuying.com.
dns                 IN  A           192.168.1.107
www              IN  A           192.168.1.107
fuying.com.    IN  MX      5    mail.fuying.com.
bbs                IN  CNAME        www
mail               IN  A           192.168.1.6

修改反向解析文件192.168.1.zone

vi 192.168.1.zone

内容如下:

$TTL    86400
@               IN SOA dns.fuying.com. root.fuying.com. (
                                        1997022700      ; serial (d. adams)
                                        28800           ; refresh
                                        14400           ; retry
                                        3600000         ; expiry
                                        86400)         ; minimum
                IN NS                   dns.fuying.com.
107             IN PTR                  dns.fuying.com.
107             IN PTR                  www.fuying.com.
6               IN PTR                  mail.fuying.com.

第三步 测试

启动bind

/usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf &

nslookup方式测试

正向查询
#nslookup
>www.fuying.com
Server:               192.168.1.107 
Address: 192.168.1.107#53    

Name:      www.fuying.com 
Address: 192.168.64.128 

反向查询
>192.168.1.107
Server:               192.168.1.107 
Address: 192.168.1.107#53    
107.1.168.192.in-addr.arpa name = www.fuying.com.  

别名查询
> set type=CNAME
>bbs.fuying.com
Server:               192.168.1.107 
Address: 192.168.1.107#53    
bbs.fuying.com      canonical name = www.fuying.com.  

查询SOA
>set type=SOA
>fuying.com
Server:               192.168.1.107 
Address: 192.168.1.107#53    
fuying.com          
    origin = dns.fuying.com          
    mail addr = root.fuying.com          
    serial = 420000          r
    efresh = 10800         
    retry = 900         
    expire = 604800         
    minimum = 86400 

查询NS
>set type=NS
>fuying.com
Server:               192.168.1.107 
Address: 192.168.1.107#53    
fuying.com     mail exchanger = 5 mail.fuying.com. 
> set type=NS    
> fuying.com  
Server:               192.168.1.107 
Address: 192.168.1.107#53    
fuying.com     nameserver = dns.fuying.com. 

查询MX
>set type=MX
>fuying.com

Server:               192.168.1.107 
Address: 192.168.1.107#53    
fuying.com     nameserver = dns.fuying.com. 
> set type=MX      
> fuying.com 
Server:               192.168.1.107 
Address: 192.168.1.107#53       
fuying.com     mail exchanger = 5 mail.fuying.com.
------------------------------------------------------------

Centos5下,安装bind9.6(供参考)


下载 bind9.6到/root/,先进至目录里,然后wget ftp://ftp.isc.org/isc/bind9/9.6.0-P1/bind-9.6.0-P1.tar.gz

解压bind-9.6.0-P1.tar.gz
# tar zxvf bind-9.6.0-P1.tar.gz

进入 bind-9.6.0-P1文件夹
# cd bind-9.6.0-P1

创建安装目录,我是安装在 /usr/local/named
# mkdir /usr/local/named

编译,指定安装目录,开启多线程支持
# ./configure --prefix=/usr/local/named
--enable-threads

# make

# make install

没有报错,就表示安装成功了。

开始配置bind,接下来的过程是让rndc来管理bind9.6

创建 rndc.conf文件,用bind自带程序生成:
进入/usr/local/named/etc,将rndc.conf及named.conf生成:
# cd /usr/local/named/etc
# /usr/local/named/sbin/rndc-confgen > /usr/local/named/etc/rndc.conf

把rndc.conf 中的key信息输出到 named.conf 中:
# tail -n10 rndc.conf | head -n9 | sed -e s/#\//g > named.conf

这里强调一下,rndc.conf与named.conf的key值必须完全一样,而且并不需要生成rndc.key,这个问题纠缠了我大约3个小时

# vim named.conf
options {    

Directory "/usr/local/named";    

Pid-file "named.pid";    

listen-on port 53 {any;};    

Allow-query {any;};    

Dump-file "/usr/local/named/data/cache_dump.db";    

Statistics-file "/usr/local/named/data/named_stats.txt";    

};

zone "." in {    

Type hint;    

File "named.root";    

};

zone "localhost" in {    

Type master;    

File "localhost.zone";    

};

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

Type master;    

File "localhost.rev";    

};

zone "test.com" in {    

Type slave;    

masters { 192.168.1.254; }    

File "slaves/test.com.zone";    

};

zone "1.168.192.in-addr.arpa" in {    

Type slave;    

masters { 192.168.1.254; };   

File "slaves/192.168.1.zone";     

};

key "rndc-key" {   

algorithm hmac-md5;    

secret "OXV+irEfzfPRzteVYTqqCA==";

};

controls {    

inet 127.0.0.1 port 953        

allow { 127.0.0.1; } keys { "rndc-key"; };

};

顺便贴下我的从DNS的/usr/local/named/etc/named.conf文件

options {    

Directory "/usr/local/named";

Pid-file "named.pid";

listen-on port 53 {any;};

Allow-query {any;};

Dump-file "/usr/local/named/data/cache_dump.db";

Statistics-file "/usr/local/named/data/named_stats.txt";    

};

zone "." in {    

Type hint;    

File "named.root";    

};

zone "localhost" in {    

Type master;    

File "localhost.zone";

};

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

Type master;    

File "localhost.rev"; 

};

zone "test.com" in {    

Type slave;    

masters { 192.168.1.254; };

File "slaves/test.com.zone"; 

};

zone "1.168.192.in-addr.arpa" in {

Type slave;    

masters { 192.168.1.254; };

File "slaves/192.168.1.zone";     

};

key "rndc-key" {

algorithm hmac-md5;

secret "OXV+irEfzfPRzteVYTqqCA==";

};

controls {

inet 127.0.0.1 port 953 

allow { 127.0.0.1; } keys { "rndc-key"; };

};

顺便贴下我的从DNS的/usr/local/named/etc/named.conf文件

写入以下内容

# vi localhost.zone

写入以下内容:

$TTL 3600

$ORIGIN 127.0.0.1.

@   IN SOA localhost. root.localhost. (         

42   

;         

3H   

;         

15M    

;         

1W   

;         

3600);  

IN NS 

127.0.0.1  

IN A 127.0.0.1

创建并编辑 localhost.rev 文件

# vi localhost.rev

写入以下内容:

$TTL 3600

@  IN SOA  localhost.  root.localhost. (      

1; serial      

3600; refresh every hour      

900;  retry every 15 minutes      

3600000; expire 1000 hours      

3600); minimun 1 hour

IN NS localhost.

1  IN PTR localhost.

下载一个named.root  cd /usr/local/named, 这个是named的工作目录

wget ftp://ftp.rs.internic.net/domain/named.root到/usr/local/named/下,

特别注意:bind的配置文档是区分大小写的。

下面就可以启动bind来测试安装是否成功了

# /usr/local/named/sbin/named –gc

/usr/local/named/etc/named.conf &

加 –gc 参数,可以显示出启动日志,以便出错排查。

如果运行结果最后一行显示

表明安装并启动成功。

测试rndc命令 /usr/local/named/sbin/rndc status,正确的话应该有状态提示,我一般是直接编辑vim /root/.bashrc加进一个alias

rndc9='/usr/local/named/sbin/rndc'

把named 添加到启动项,随操作系统一起启动。

在最后添加以下内容

/usr/local/named/sbin/named –gc

/usr/local/named/etc/named.conf &

退出保存。

可以尝试重启服务器,然后用命令nslookup及dig测试,或用pa axu | grep named,结束此服务用命令killall named,主从DNS也简单,适合更改下也可搞定.
----------------------------------------------------------------------------------------
 Windows server下,架设DNS服务器

BIND的 windows版本- ntbind

下载:
http://ftp.isc.org/isc/bind8/contrib/
http://ftp7.freebsd.org/sites/ftp.isc.org/isc/bind8/contrib/
http://postgresql.mirrorservice. ... /isc/bind8/contrib/
http://212.219.56.139/sites/ftp.isc.org/isc/bind8/contrib/


解压之后运行默认安装到C:\Windows\system32\dns下

配置之前建议先将 C:\Windows\system32\dns\bin 添加到 PATH 环境变量中, 这样配置时就可以用 dig工具来代替的 nslookup。然后再将自己机器的DNS地址改为 127.0.0.1

打开 C:\Windows\system32\dns\etc 目录,建立配置文件 named.conf,内容如下:
named.conf:
  1. options {
  2.     // zone文件的位置
  3.     directory "C:\Windows\system32\dns\etc";

  4.     // 无法解析的域名就去查询ISP提供的DNS
  5.     // 在下面的IP地址位置上填写ISP的DNS地址
  6.     forwarders {
  7.         1.2.3.4;
  8.         1.2.3.5;
  9.     };

  10.     // 仅允许本机和子网内的机器查询
  11.     allow-query {
  12.         127.0.0.1;
  13.         192.168.0.0/24;
  14.     };
  15. };

  16. // 根DNS
  17. zone "." {
  18.     type hint;
  19.     file "named.root";
  20. };

  21. // localhost
  22. zone "localhost" IN {
  23.     type master;
  24.     file "localhost.zone";
  25.     allow-update { none; };
  26. };

  27. // localhost的反向解析
  28. zone "0.0.127.in-addr.arpa" {
  29.     type master;
  30.     file "localhost.rev";
  31. };

  32. // example.com
  33. zone "example.com" IN {
  34.     type master;
  35.     file "example.com.zone";
  36. };

  37. # End of named.conf
然后逐个建立named.conf中提到的几个文件,都放在 C:\Windows\system32\dns\etc 下

named.root:可以从ftp.rs.internic.net(匿名F)上下载

localhost.zone:针对localhost的正向解析
  1. $TTL 1D

  2. @       IN      SOA     localhost.      root.localhost. (
  3.         2007091701          ; Serial
  4.         30800               ; Refresh
  5.         7200                ; Retry
  6.         604800              ; Expire
  7.         300 )               ; Minimum

  8.         IN      NS      localhost.

  9. localhost.        IN      A       127.0.0.1
复制代码
localhost.rev:针对127.0.0.1的反向解析
  1. $TTL    1D

  2. @       IN      SOA    localhost.    root.localhost. (
  3.         2007091701          ; Serial
  4.         30800               ; Refresh
  5.         7200                ; Retry
  6.         604800              ; Expire
  7.         300 )               ; Minimum

  8.             IN      NS      localhost.
  9. 1           IN      PTR     localhost.
复制代码
example.com.zone:是我们为自己的域的正向解析配置
  1. example.com.    IN  SOA   ns1.example.com.  root.example.com. (
  2.         2007091701         ; Serial
  3.         30800              ; Refresh
  4.         7200               ; Retry
  5.         604800             ; Expire
  6.         300 )              ; Minimum

  7.         IN    NS        ns1.example.com.

  8. *       IN    A         192.168.0.2    ; 将所有域名都泛解析到192.168.0.2上
复制代码
这几个配置文件写好之后,启动命令行,输入以下命令:
  1. C:\> named -f -g -d 1
复制代码
即可在控制台启动named。如果不能启动请仔细观察输入结果并自行查找错误

你可以用dig命令来测试返回结果是否正确
  1. C:\> dig www.google.com
  2. C:\> dig www.sina.com.cn
复制代码
你可以打开浏览器,看看能否正常上网。因为我们配置了 example.com 的域, 所以 abc.example.com 应该能访问你架设在 192.168.0.2 上的 Web 服务器

一切正常访问之后,配置使用 rndc 命令来控制bind。 执行以下命令:
  1. C:\> cd C:\Windows\system32\dns\etc
  2. C:\Windows\system32\dns\etc> rndc-confgen > rndc.conf
复制代码
即可在 C:\Windows\system32\dns\etc 下生成 rndc.conf 文件。编辑这个文件, 并将该文件的后半部分剪切到 named.conf 末尾,配置即完成


重启 named,然后在命令行输入 rndc reload,应该能在named的控制台看到 重新加载配置文件的信息,说明配置成功

最后一步,利用srvany将named安装为服务,即大功告成。(srvany需要安装Windows 2003 Server Resource Kit)
  1. instsrv ntbind C:\Windows\system32\dns\bin\named.exe
--------------------------------------------------------------------
智能DNS服务器-bind配置详解

对于配置智能DNS,主要用途为:1、解决网通与电信问题 2、实现区域规划(不同区域访问各自最近的服务器),下面以解决网通与电信连接问题的配置。至于实现2的功能,只需稍加更改即可。 


一、DNS服务器安装......................................................................................... 1 
二、named.conf的配置....................................................................................... 2 
三、更新根区文件:.......................................................................................... 3 
四、建立启动脚本:.......................................................................................... 4 
五、添加一个NS............................................................................................... 5 
六、添加一个域名.............................................................................................. 5 
附:获取IP地址范围方法:................................................................................. 7 


一、DNS服务器安装 

1、 软件列表 
BIND 9.3.2 
ftp://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz 
ftp://ftp.isc.org/isc/bind9/9.4.0a6/bind-9.4.0a6.tar.gz 
2、 安装BIND 9 
安装BIND9: 
# tar zxvf bind-9.3.2.tar.gz 
# cd bind-9.3.2 
# ./configure --prefix=/usr/local/named --disable-ipv6 
# make && make install 
建立BIND用户: 
# groupadd bind 
# useradd -g bind -d /usr/local/named -s /sbin/nologin bind 
创建配置文件目录: 
# mkdir –p /usr/local/named/etc 
# chown bind:bind /usr/local/named/etc 
# chmod 700 /usr/local/named/etc 

二、named.conf的配置 

创建主要的配置文件: 
# vi /usr/local/named/etc/named.conf 
===========================named.conf======================= 
acl "trust-lan" { 127.0.0.1/8; 192.168.0.0/16;}; 
options { 
directory "/usr/local/named/etc/"; 
pid-file "/var/run/named/named.pid"; 
version "0.0.0"; 
datasize 40M; 
allow-transfer { 
"trust-lan";}; 
recursion yes; 
allow-notify { 
"trust-lan"; 
}; 
allow-recursion { 
"trust-lan"; 
}; 
auth-nxdomain no; 
forwarders { 
211.162.106.9; 
211.162.106.254;}; 
}; 
logging { 
channel warning 
{ file "/var/log/named/dns_warnings" versions 3 size 1240k; 
severity warning; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
channel general_dns 
{ file "/var/log/named/dns_logs" versions 3 size 1240k; 
severity info; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
category default { warning; }; 
category queries { general_dns; }; 
}; 
zone "." { 
type hint; 
file "named.root"; 
}; 
acl "CNC" { 
58.16.0.0/16; 
58.17.0.0/17; 
58.17.128.0/17; 
58.18.0.0/16; 
58.19.0.0/16; 
58.20.0.0/16; 
58.21.0.0/16; 
注:这些根据情况输入IP地址段 
}; 
view "view_cnc" { 
match-clients { CNC; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/cnc.def"; 
}; 
view "view_any" { 
match-clients { any; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/telecom.def"; 
}; 
添加完成后,保存。 

三、更新根区文件: 

# cd /usr/local/named/etc/ 
# wget ftp://ftp.internic.org/domain/named.root 
创建PID和日志文件: 
# mkdir /var/run/named/ 
# chmod 777 /var/run/named/ 
# chown bind:bind /var/run/named/ 
# mkdir /var/log/named/ 
# touch /var/log/named/dns_warnings 
# touch /var/log/named/dns_logs 
# chown bind:bind /var/log/named/* 
# mkdir master 
# touch master/cnc.def 
# touch master/telecom.def 
生成rndc-key: 
# cd /usr/local/named/etc/ 
# ../sbin/rndc-confgen > rndc.conf 
把rndc.conf中: 
# Use with the following in named.conf, adjusting the allow list as needed: 
后面以的部分加到/usr/local/named/etc/named.conf中并去掉注释 
运行测试: 
# /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf & 
状态检查: 
# /usr/local/named/sbin/rndc status 


四、建立启动脚本: 

# vi /etc/init.d/named 
============================== named.sh============================ 
#!/bin/bash 
# named    a network name service. 
# chkconfig: 545 35 75 
# description: a name server 
if [ `id -u` -ne 0 ] 
then 
echo "ERROR:For bind to port 53,must run as root." 
exit 1 
fi 
case "" in 
start) 
if [ -x /usr/local/named/sbin/named ]; then 
/usr/local/named/sbin/named -u bind -c /usr/local/named/etc/named.conf && echo . && echo 'BIND9 server started.' 
fi 
;; 
stop) 
kill `cat /var/run/named/pid` && echo . && echo 'BIND9 server stopped.' 
;; 
restart) 
echo . 
echo "Restart BIND9 server" 
注:对于配置智能DNS,主要用途为:1、解决网通与电信问题 2、实现区域规划(不同区域访问各自最近的服务器),下面以解决网通与电信连接问题的配置。至于实现2的功能,只需稍加更改即可。 


一、DNS服务器安装......................................................................................... 1 
二、named.conf的配置....................................................................................... 2 
三、更新根区文件:.......................................................................................... 3 
四、建立启动脚本:.......................................................................................... 4 
五、添加一个NS............................................................................................... 5 
六、添加一个域名.............................................................................................. 5 
附:获取IP地址范围方法:................................................................................. 7 


一、DNS服务器安装 

1、 软件列表 
BIND 9.3.2 
ftp://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz 
ftp://ftp.isc.org/isc/bind9/9.4.0a6/bind-9.4.0a6.tar.gz 
2、 安装BIND 9 
安装BIND9: 
# tar zxvf bind-9.3.2.tar.gz 
# cd bind-9.3.2 
# ./configure --prefix=/usr/local/named --disable-ipv6 
# make && make install 
建立BIND用户: 
# groupadd bind 
# useradd -g bind -d /usr/local/named -s /sbin/nologin bind 
创建配置文件目录: 
# mkdir –p /usr/local/named/etc 
# chown bind:bind /usr/local/named/etc 
# chmod 700 /usr/local/named/etc 

二、named.conf的配置 

创建主要的配置文件: 
# vi /usr/local/named/etc/named.conf 
===========================named.conf======================= 
acl "trust-lan" { 127.0.0.1/8; 192.168.0.0/16;}; 
options { 
directory "/usr/local/named/etc/"; 
pid-file "/var/run/named/named.pid"; 
version "0.0.0"; 
datasize 40M; 
allow-transfer { 
"trust-lan";}; 
recursion yes; 
allow-notify { 
"trust-lan"; 
}; 
allow-recursion { 
"trust-lan"; 
}; 
auth-nxdomain no; 
forwarders { 
211.162.106.9; 
211.162.106.254;}; 
}; 
logging { 
channel warning 
{ file "/var/log/named/dns_warnings" versions 3 size 1240k; 
severity warning; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
channel general_dns 
{ file "/var/log/named/dns_logs" versions 3 size 1240k; 
severity info; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
category default { warning; }; 
category queries { general_dns; }; 
}; 
zone "." { 
type hint; 
file "named.root"; 
}; 
acl "CNC" { 
58.16.0.0/16; 
58.17.0.0/17; 
58.17.128.0/17; 
58.18.0.0/16; 
58.19.0.0/16; 
58.20.0.0/16; 
58.21.0.0/16; 
注:这些根据情况输入IP地址段 
}; 
view "view_cnc" { 
match-clients { CNC; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/cnc.def"; 
}; 
view "view_any" { 
match-clients { any; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/telecom.def"; 
}; 
添加完成后,保存。 

三、更新根区文件: 

# cd /usr/local/named/etc/ 
# wget ftp://ftp.internic.org/domain/named.root 
创建PID和日志文件: 
# mkdir /var/run/named/ 
# chmod 777 /var/run/named/ 
# chown bind:bind /var/run/named/ 
# mkdir /var/log/named/ 
# touch /var/log/named/dns_warnings 
# touch /var/log/named/dns_logs 
# chown bind:bind /var/log/named/* 
# mkdir master 
# touch master/cnc.def 
# touch master/telecom.def 
生成rndc-key: 
# cd /usr/local/named/etc/ 
# ../sbin/rndc-confgen > rndc.conf 
把rndc.conf中: 
# Use with the following in named.conf, adjusting the allow list as needed: 
后面以的部分加到/usr/local/named/etc/named.conf中并去掉注释 
运行测试: 
# /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf & 
状态检查: 
# /usr/local/named/sbin/rndc status 


四、建立启动脚本: 

# vi /etc/init.d/named 
============================== named.sh============================ 
#!/bin/bash 
# named    a network name service. 
# chkconfig: 545 35 75 
# description: a name server 
if [ `id -u` -ne 0 ] 
then 
echo "ERROR:For bind to port 53,must run as root." 
exit 1 
fi 
case "" in 
start) 
if [ -x /usr/local/named/sbin/named ]; then 
/usr/local/named/sbin/named -u bind -c /usr/local/named/etc/named.conf && echo . && echo 'BIND9 server started.' 
fi 
;; 
stop) 
kill `cat /var/run/named/pid` && echo . && echo 'BIND9 server stopped.' 
;; 
restart) 
echo . 
echo "Restart BIND9 server" 
stop 
sleep 10 
start 
;; 
*) 
echo " start | stop | restart" 
;; 
esac 
===============================named.sh============================ 
# chmod 755 /etc/init.d/named 
# chown root:root /etc/init.d/named 
# chkconfig --add named 
# chkconfig named on 


五、添加一个NS 

    在域名的管理网站上,设定NS服务器为你安装的DNS 


六、添加一个域名 

# cd /usr/local/named/etc/master 
# mkdir cnc 
# mkdir telecom 
# vi cnc.def 
添加 
zone "724cn.com" { 
type master; 
file "master/cnc/724cn.com"; 
}; 
# vi telecom.def 
添加 
zone "724cn.com" { 
type master; 
file "master/telecom/724cn.com"; 
}; 
添加网通的解析,解析到的IP为61.45.55.78 
#vi cnc/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.9 
www IN A 211.162.106.9 
;end 
添加电信的解析,解析到的IP为210.75.1.178 
#vi telecom/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.254 
www IN A 211.162.106.254 
;end 
#/usr/local/named/sbin/rndc reload 
OK,到此你的DNS服务器就算是跑起来了。试一下分别用网通和电信的线路ping一下吧. 


附:获取IP地址范围方法: 
1、 利用shell程序获取IP地址段 

#!/bin/sh 
FILE=/root/study/apnic/ip_apnic 
rm -f $FILE 
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE 
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt 
do 
    echo $ip:$cnt 
    mask=$(cat << EOF | bc | tail -1 
pow=32; 
define log2(x) { 
if (x<=1) return (pow); 
pow--; 
return(log2(x/2)); 
log2($cnt) 
EOF) 
     echo $ip/$mask>> cn.net 
    NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:   \(.*\)//g' | sed -e 's/-.*//g'` 
    case $NETNAME in 
    CNC) 
       echo $ip/$mask >> CNCGROUP 
    ;; 
    CHINANET|CNCGROUP) 
       echo $ip/$mask >> $NETNAME 
    ;; 
    CHINATELECOM) 
       echo $ip/$mask >> CHINANET 
    ;; 
    *) 
       echo $ip/$mask >> OTHER 
    ;; 
    esac 
done 

2、 可以利用网上的资料,下面是最新的信息,然后利awk行成地址段即可。 

wget http://218.66.103.230/vpn_route/cnc.new 新的网通路由表 
wget http://218.66.103.230/vpn_route/chinanet.new 新的电信路由表 
stop 
sleep 10 
注:对于配置智能DNS,主要用途为:1、解决网通与电信问题 2、实现区域规划(不同区域访问各自最近的服务器),下面以解决网通与电信连接问题的配置。至于实现2的功能,只需稍加更改即可。 


一、DNS服务器安装......................................................................................... 1 
二、named.conf的配置....................................................................................... 2 
三、更新根区文件:.......................................................................................... 3 
四、建立启动脚本:.......................................................................................... 4 
五、添加一个NS............................................................................................... 5 
六、添加一个域名.............................................................................................. 5 
附:获取IP地址范围方法:................................................................................. 7 


一、DNS服务器安装 

1、 软件列表 
BIND 9.3.2 
ftp://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz 
ftp://ftp.isc.org/isc/bind9/9.4.0a6/bind-9.4.0a6.tar.gz 
2、 安装BIND 9 
安装BIND9: 
# tar zxvf bind-9.3.2.tar.gz 
# cd bind-9.3.2 
# ./configure --prefix=/usr/local/named --disable-ipv6 
# make && make install 
建立BIND用户: 
# groupadd bind 
# useradd -g bind -d /usr/local/named -s /sbin/nologin bind 
创建配置文件目录: 
# mkdir –p /usr/local/named/etc 
# chown bind:bind /usr/local/named/etc 
# chmod 700 /usr/local/named/etc 

二、named.conf的配置 

创建主要的配置文件: 
# vi /usr/local/named/etc/named.conf 
===========================named.conf======================= 
acl "trust-lan" { 127.0.0.1/8; 192.168.0.0/16;}; 
options { 
directory "/usr/local/named/etc/"; 
pid-file "/var/run/named/named.pid"; 
version "0.0.0"; 
datasize 40M; 
allow-transfer { 
"trust-lan";}; 
recursion yes; 
allow-notify { 
"trust-lan"; 
}; 
allow-recursion { 
"trust-lan"; 
}; 
auth-nxdomain no; 
forwarders { 
211.162.106.9; 
211.162.106.254;}; 
}; 
logging { 
channel warning 
{ file "/var/log/named/dns_warnings" versions 3 size 1240k; 
severity warning; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
channel general_dns 
{ file "/var/log/named/dns_logs" versions 3 size 1240k; 
severity info; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
category default { warning; }; 
category queries { general_dns; }; 
}; 
zone "." { 
type hint; 
file "named.root"; 
}; 
acl "CNC" { 
58.16.0.0/16; 
58.17.0.0/17; 
58.17.128.0/17; 
58.18.0.0/16; 
58.19.0.0/16; 
58.20.0.0/16; 
58.21.0.0/16; 
注:这些根据情况输入IP地址段 
}; 
view "view_cnc" { 
match-clients { CNC; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/cnc.def"; 
}; 
view "view_any" { 
match-clients { any; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/telecom.def"; 
}; 
添加完成后,保存。 

三、更新根区文件: 

# cd /usr/local/named/etc/ 
# wget ftp://ftp.internic.org/domain/named.root 
创建PID和日志文件: 
# mkdir /var/run/named/ 
# chmod 777 /var/run/named/ 
# chown bind:bind /var/run/named/ 
# mkdir /var/log/named/ 
# touch /var/log/named/dns_warnings 
# touch /var/log/named/dns_logs 
# chown bind:bind /var/log/named/* 
# mkdir master 
# touch master/cnc.def 
# touch master/telecom.def 
生成rndc-key: 
# cd /usr/local/named/etc/ 
# ../sbin/rndc-confgen > rndc.conf 
把rndc.conf中: 
# Use with the following in named.conf, adjusting the allow list as needed: 
后面以的部分加到/usr/local/named/etc/named.conf中并去掉注释 
运行测试: 
# /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf & 
状态检查: 
# /usr/local/named/sbin/rndc status 


四、建立启动脚本: 

# vi /etc/init.d/named 
============================== named.sh============================ 
#!/bin/bash 
# named    a network name service. 
# chkconfig: 545 35 75 
# description: a name server 
if [ `id -u` -ne 0 ] 
then 
echo "ERROR:For bind to port 53,must run as root." 
exit 1 
fi 
case "" in 
start) 
if [ -x /usr/local/named/sbin/named ]; then 
/usr/local/named/sbin/named -u bind -c /usr/local/named/etc/named.conf && echo . && echo 'BIND9 server started.' 
fi 
;; 
stop) 
kill `cat /var/run/named/pid` && echo . && echo 'BIND9 server stopped.' 
;; 
restart) 
echo . 
echo "Restart BIND9 server" 
stop 
sleep 10 
start 
;; 
*) 
echo " start | stop | restart" 
;; 
esac 
===============================named.sh============================ 
# chmod 755 /etc/init.d/named 
# chown root:root /etc/init.d/named 
# chkconfig --add named 
# chkconfig named on 


五、添加一个NS 

    在域名的管理网站上,设定NS服务器为你安装的DNS 


六、添加一个域名 

# cd /usr/local/named/etc/master 
# mkdir cnc 
# mkdir telecom 
# vi cnc.def 
添加 
zone "724cn.com" { 
type master; 
file "master/cnc/724cn.com"; 
}; 
# vi telecom.def 
添加 
zone "724cn.com" { 
type master; 
file "master/telecom/724cn.com"; 
}; 
添加网通的解析,解析到的IP为61.45.55.78 
#vi cnc/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.9 
www IN A 211.162.106.9 
;end 
添加电信的解析,解析到的IP为210.75.1.178 
#vi telecom/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.254 
www IN A 211.162.106.254 
;end 
#/usr/local/named/sbin/rndc reload 
OK,到此你的DNS服务器就算是跑起来了。试一下分别用网通和电信的线路ping一下吧. 


附:获取IP地址范围方法: 
1、 利用shell程序获取IP地址段 

#!/bin/sh 
FILE=/root/study/apnic/ip_apnic 
rm -f $FILE 
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE 
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt 
do 
    echo $ip:$cnt 
    mask=$(cat << EOF | bc | tail -1 
pow=32; 
define log2(x) { 
if (x<=1) return (pow); 
pow--; 
return(log2(x/2)); 
log2($cnt) 
EOF) 
     echo $ip/$mask>> cn.net 
    NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:   \(.*\)//g' | sed -e 's/-.*//g'` 
    case $NETNAME in 
    CNC) 
       echo $ip/$mask >> CNCGROUP 
    ;; 
    CHINANET|CNCGROUP) 
       echo $ip/$mask >> $NETNAME 
    ;; 
    CHINATELECOM) 
       echo $ip/$mask >> CHINANET 
    ;; 
    *) 
       echo $ip/$mask >> OTHER 
    ;; 
    esac 
done 

2、 可以利用网上的资料,下面是最新的信息,然后利awk行成地址段即可。 

wget http://218.66.103.230/vpn_route/cnc.new 新的网通路由表 
wget http://218.66.103.230/vpn_route/chinanet.new 新的电信路由表 
start 
;; 
*) 
echo "注:对于配置智能DNS,主要用途为:1、解决网通与电信问题 2、实现区域规划(不同区域访问各自最近的服务器),下面以解决网通与电信连接问题的配置。至于实现2的功能,只需稍加更改即可。 


一、DNS服务器安装......................................................................................... 1 
二、named.conf的配置....................................................................................... 2 
三、更新根区文件:.......................................................................................... 3 
四、建立启动脚本:.......................................................................................... 4 
五、添加一个NS............................................................................................... 5 
六、添加一个域名.............................................................................................. 5 
附:获取IP地址范围方法:................................................................................. 7 


一、DNS服务器安装 

1、 软件列表 
BIND 9.3.2 
ftp://ftp.isc.org/isc/bind9/9.3.2/bind-9.3.2.tar.gz 
ftp://ftp.isc.org/isc/bind9/9.4.0a6/bind-9.4.0a6.tar.gz 
2、 安装BIND 9 
安装BIND9: 
# tar zxvf bind-9.3.2.tar.gz 
# cd bind-9.3.2 
# ./configure --prefix=/usr/local/named --disable-ipv6 
# make && make install 
建立BIND用户: 
# groupadd bind 
# useradd -g bind -d /usr/local/named -s /sbin/nologin bind 
创建配置文件目录: 
# mkdir –p /usr/local/named/etc 
# chown bind:bind /usr/local/named/etc 
# chmod 700 /usr/local/named/etc 

二、named.conf的配置 

创建主要的配置文件: 
# vi /usr/local/named/etc/named.conf 
===========================named.conf======================= 
acl "trust-lan" { 127.0.0.1/8; 192.168.0.0/16;}; 
options { 
directory "/usr/local/named/etc/"; 
pid-file "/var/run/named/named.pid"; 
version "0.0.0"; 
datasize 40M; 
allow-transfer { 
"trust-lan";}; 
recursion yes; 
allow-notify { 
"trust-lan"; 
}; 
allow-recursion { 
"trust-lan"; 
}; 
auth-nxdomain no; 
forwarders { 
211.162.106.9; 
211.162.106.254;}; 
}; 
logging { 
channel warning 
{ file "/var/log/named/dns_warnings" versions 3 size 1240k; 
severity warning; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
channel general_dns 
{ file "/var/log/named/dns_logs" versions 3 size 1240k; 
severity info; 
print-category yes; 
print-severity yes; 
print-time yes; 
}; 
category default { warning; }; 
category queries { general_dns; }; 
}; 
zone "." { 
type hint; 
file "named.root"; 
}; 
acl "CNC" { 
58.16.0.0/16; 
58.17.0.0/17; 
58.17.128.0/17; 
58.18.0.0/16; 
58.19.0.0/16; 
58.20.0.0/16; 
58.21.0.0/16; 
注:这些根据情况输入IP地址段 
}; 
view "view_cnc" { 
match-clients { CNC; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/cnc.def"; 
}; 
view "view_any" { 
match-clients { any; }; 
zone "." { 
type hint; 
file "named.root"; 
}; 
zone "0.0.127.IN-ADDR.ARPA" { 
type master; 
file "localhost.rev"; 
}; 
include "master/telecom.def"; 
}; 
添加完成后,保存。 

三、更新根区文件: 

# cd /usr/local/named/etc/ 
# wget ftp://ftp.internic.org/domain/named.root 
创建PID和日志文件: 
# mkdir /var/run/named/ 
# chmod 777 /var/run/named/ 
# chown bind:bind /var/run/named/ 
# mkdir /var/log/named/ 
# touch /var/log/named/dns_warnings 
# touch /var/log/named/dns_logs 
# chown bind:bind /var/log/named/* 
# mkdir master 
# touch master/cnc.def 
# touch master/telecom.def 
生成rndc-key: 
# cd /usr/local/named/etc/ 
# ../sbin/rndc-confgen > rndc.conf 
把rndc.conf中: 
# Use with the following in named.conf, adjusting the allow list as needed: 
后面以的部分加到/usr/local/named/etc/named.conf中并去掉注释 
运行测试: 
# /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf & 
状态检查: 
# /usr/local/named/sbin/rndc status 


四、建立启动脚本: 

# vi /etc/init.d/named 
============================== named.sh============================ 
#!/bin/bash 
# named    a network name service. 
# chkconfig: 545 35 75 
# description: a name server 
if [ `id -u` -ne 0 ] 
then 
echo "ERROR:For bind to port 53,must run as root." 
exit 1 
fi 
case "" in 
start) 
if [ -x /usr/local/named/sbin/named ]; then 
/usr/local/named/sbin/named -u bind -c /usr/local/named/etc/named.conf && echo . && echo 'BIND9 server started.' 
fi 
;; 
stop) 
kill `cat /var/run/named/pid` && echo . && echo 'BIND9 server stopped.' 
;; 
restart) 
echo . 
echo "Restart BIND9 server" 
stop 
sleep 10 
start 
;; 
*) 
echo " start | stop | restart" 
;; 
esac 
===============================named.sh============================ 
# chmod 755 /etc/init.d/named 
# chown root:root /etc/init.d/named 
# chkconfig --add named 
# chkconfig named on 


五、添加一个NS 

    在域名的管理网站上,设定NS服务器为你安装的DNS 


六、添加一个域名 

# cd /usr/local/named/etc/master 
# mkdir cnc 
# mkdir telecom 
# vi cnc.def 
添加 
zone "724cn.com" { 
type master; 
file "master/cnc/724cn.com"; 
}; 
# vi telecom.def 
添加 
zone "724cn.com" { 
type master; 
file "master/telecom/724cn.com"; 
}; 
添加网通的解析,解析到的IP为61.45.55.78 
#vi cnc/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.9 
www IN A 211.162.106.9 
;end 
添加电信的解析,解析到的IP为210.75.1.178 
#vi telecom/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.254 
www IN A 211.162.106.254 
;end 
#/usr/local/named/sbin/rndc reload 
OK,到此你的DNS服务器就算是跑起来了。试一下分别用网通和电信的线路ping一下吧. 


附:获取IP地址范围方法: 
1、 利用shell程序获取IP地址段 

#!/bin/sh 
FILE=/root/study/apnic/ip_apnic 
rm -f $FILE 
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE 
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt 
do 
    echo $ip:$cnt 
    mask=$(cat << EOF | bc | tail -1 
pow=32; 
define log2(x) { 
if (x<=1) return (pow); 
pow--; 
return(log2(x/2)); 
log2($cnt) 
EOF) 
     echo $ip/$mask>> cn.net 
    NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:   \(.*\)//g' | sed -e 's/-.*//g'` 
    case $NETNAME in 
    CNC) 
       echo $ip/$mask >> CNCGROUP 
    ;; 
    CHINANET|CNCGROUP) 
       echo $ip/$mask >> $NETNAME 
    ;; 
    CHINATELECOM) 
       echo $ip/$mask >> CHINANET 
    ;; 
    *) 
       echo $ip/$mask >> OTHER 
    ;; 
    esac 
done 

2、 可以利用网上的资料,下面是最新的信息,然后利awk行成地址段即可。 

wget http://218.66.103.230/vpn_route/cnc.new 新的网通路由表 
wget http://218.66.103.230/vpn_route/chinanet.new 新的电信路由表 
start | stop | restart" 
;; 
esac 
===============================named.sh============================ 
# chmod 755 /etc/init.d/named 
# chown root:root /etc/init.d/named 
# chkconfig --add named 
# chkconfig named on 


五、添加一个NS 

    在域名的管理网站上,设定NS服务器为你安装的DNS 


六、添加一个域名 

# cd /usr/local/named/etc/master 
# mkdir cnc 
# mkdir telecom 
# vi cnc.def 
添加 
zone "724cn.com" { 
type master; 
file "master/cnc/724cn.com"; 
}; 
# vi telecom.def 
添加 
zone "724cn.com" { 
type master; 
file "master/telecom/724cn.com"; 
}; 
添加网通的解析,解析到的IP为61.45.55.78 
#vi cnc/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.9 
www IN A 211.162.106.9 
;end 
添加电信的解析,解析到的IP为210.75.1.178 
#vi telecom/724cn.com 
添加 
$TTL 3600 
$ORIGIN 724cn.com. 
@ IN SOA ns.724cn.com. root.ns.724cn.com.( 
2005121013 ;Serial 
3600 ; Refresh ( seconds ) 
900 ; Retry ( seconds ) 
68400 ; Expire ( seconds ) 
15 );Minimum TTL for Zone ( seconds ) 
@ IN NS ns.724cn.com. 
@ IN A 211.162.106.254 
www IN A 211.162.106.254 
;end 
#/usr/local/named/sbin/rndc reload 
OK,到此你的DNS服务器就算是跑起来了。试一下分别用网通和电信的线路ping一下吧. 


附:获取IP地址范围方法: 
1、 利用shell程序获取IP地址段 

#!/bin/sh 
FILE=/root/study/apnic/ip_apnic 
rm -f $FILE 
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE 
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt 
do 
    echo $ip:$cnt 
    mask=$(cat << EOF | bc | tail -1 
pow=32; 
define log2(x) { 
if (x<=1) return (pow); 
pow--; 
return(log2(x/2)); 
log2($cnt) 
EOF) 
     echo $ip/$mask>> cn.net 
    NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:   \(.*\)//g' | sed -e 's/-.*//g'` 
    case $NETNAME in 
    CNC) 
       echo $ip/$mask >> CNCGROUP 
    ;; 
    CHINANET|CNCGROUP) 
       echo $ip/$mask >> $NETNAME 
    ;; 
    CHINATELECOM) 
       echo $ip/$mask >> CHINANET 
    ;; 
    *) 
       echo $ip/$mask >> OTHER 
    ;; 
    esac 
done 

2、 可以利用网上的资料,下面是最新的信息,然后利awk行成地址段即可。 

wget http://218.66.103.230/vpn_route/cnc.new 新的网通路由表 
wget http://218.66.103.230/vpn_route/chinanet.new 新的电信路由表
-------------------------

搭建dns服务器


首先提出一些问题

  1. 什么是 DNS 的授权模式﹖是怎样进行的?
  2. zone 和 domain 的差别?
  3. 什么是 DNS 正解和反解?
  4. 什么是 DNS 的查询模式?
  5. 查询过程是怎样进行的?
  6. DNS cache 的作用和它对查询流程的影响?

BIND服务

在 Linux 上面﹐提供 DNS 服务的套件是叫 bind,
但执行服务程序名称则是 named。
请您确定系统上装有 bind﹑bind-utils﹑以及 caching-nameserver 这几个套件。

配置文件

/etc/named.conf
如果安装的是bind-chroot,则文件在
/var/named/chroot/etc/named.conf

/var/named/chroot/etc/named.caching-nameserver.conf
这个是主要配置文件的模板配置文件(区域模板配置文件

首先生成主要配置文件,复制出一份模板配置文件到此目录下,并更改名字为named.conf 

cd  /var/named/chroot/etc    
cp  named.caching-nameserver.conf  named.conf
默认会有三个配置:

zone "." IN {
  type hint;
  file "named.ca";
};
根区域“ . ”(root zone) 的设定﹐同时它是一个 internet ( IN ) 的区域类别( class )。这里还指定了root zone 的服务器种类( type ) 为“hint”(也只有这个 zone 会使用这样的种类)。最后﹐用 file 指定这个区域记录文件为﹕“named.ca”﹐也就是“/var/named/named.ca”档案。

在 root zone 后面﹐您应该还会看到如下这两段,一个是localhost的正向解析,一个是反向解析。不允许自行更新DNS记录。

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; };
}; 
首先来看root zone,named.ca
里边的记录类似如下:

. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 198.32.64.12
以‘ . ’开头的﹐那就是所谓的 root zone 了﹗
第二栏都是‘ 3600000 ’﹐这是 TTL (Time To Live) 设定﹐也就是在 cache 中保留的时间,
其后的‘ NS ’是“Name Server”的意思﹐是 DNS 记录名称之一﹐也就是负责这个记录的 name server 是哪一台主机。
‘ A ’记录﹐也就是 Address 的意思﹐解释 [A-M].ROOT-SERVER.NET. 这些主机各自的 IP 地址所在。

如果您了解 DNS 的查询模式﹐您会知道 DNS 服务器在查询非自己管辖的 zone 的时候﹐首先会向 root 查询下一级的 zone 在哪里﹐然后逐级查询下去。但问题是﹕当 named 刚启动的时候﹐在 cache 里面一片空白﹐它怎么知道 root zone 的 servers 在哪里呢﹖这不是一个矛盾吗﹖所以﹐就必须靠这个档案告诉 named 关于 root zone 的 servers 有哪些﹖以及在哪里﹖
locaohost.zone

参考

http://wenku.baidu.com/view/4d88c6bf960590c69ec376a2.html
------------------

DNS服务器-bind安装小记


BIND是DNS服务程序,既可以做面向用户的DNS服务器,也可以做面向域名的DNS服务器,或者两者混合的DNS服务器。我要做的是面向域名的那种,为域名进行解析。
下载编译安装是以下指令:
cd bind-9.8.0-P4
./configure --with-dlz-mysql --enable-largefile --enable-threads --with-openssl --prefix=/usr/local/bind 
make
make install
然后在/usr/local/bind/etc/named.conf输入以下内容:
key "rndc-key" {
algorithm hmac-md5;
secret "gOszdwp5stjsnfI7MybyIg==";
}; 
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
}; 
options{
directory "/usr/local/bind/etc";
#forwarders {8.8.8.8;};
pid-file "/usr/local/bind/etc/named.pid";
statistics-file "/usr/local/bind/etc/named.stats";
recursion no;
allow-query {any;};
allow-transfer {none;};
}; 
logging {
channel bind_info {
file "/var/www/logs/bind.log" versions 20 size 20m;
print-category yes;
print-time yes;
severity notice;
}; 
category default {
bind_info;
};
}; 
include "/usr/local/bind/etc/view_crekebind.conf";
接着,从ftp://ftp.rs.internic.net/domain/named.root下载ROOT SERVER地址列表到/usr/local/bind/etc/。并在/usr/local/bind/etc/view_crekebind.conf输入以下内容:
#any-view
view "any_view" {
match-clients { ANY; };
allow-query-cache { ANY; };
#allow-recursion { ANY; };
#allow-transfer { ANY; }; 
dlz "Mysql zone" {
   database "mysql
    {host=localhost dbname=crekebind user=root pass=123456 ssl=false}
        {SELECT 'TRUE' FROM canonical WHERE content = '$zone$' limit 1}
    {SELECT ttl, type, priority, CASE WHEN lower(type)='txt' THEN concat('\"', data, '\"') ELSE data END AS data FROM record, canonical WHERE content = '$zone$' and host = '$record$' AND zone = domain}
    {}
        {SELECT ttl, type, host, priority, case when lower(type)='txt' then concat('\"', data, '\"') else data end AS data FROM record, canonical WHERE zone = domain
        AND content = '$zone$'}
        {SELECT 'TRUE' FROM xfr, canonical WHERE zone = domain AND content = '$zone$'
        AND client = '$client$'}";
}; 
zone "." IN {
type hint;
file "named.root";
}; 
};
上面的dlz配置对应myantdns,这是一个开源的PHP+MYSQL的DNS管理前端。
根据官方文档,这里解释一下“dlz "Mysql zone"”一节的相关内容。如果用的是其他前端,则相关配置可能如下所示:
    1. dlz "Mysql zone" { 
    2.    database "mysql 
    3.    {host=localhost dbname=dns_data ssl=tRue} 
    4.    {select zone from dns_records where zone = '$zone$'} 
    5.    {select ttl, type, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"') 
    6.         else data end AS data from dns_records where zone = '$zone$' and host = '$record$' 
    7.         and not (type = 'SOA' or type = 'NS')} 
    8.    {select ttl, type, mx_priority, data, resp_person, serial, refresh, retry, expire, minimum 
    9.         from dns_records where zone = '%zone%' and (type = 'SOA' or type='NS')} 
    10.    {select ttl, type, host, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"') 
    11.         else data end AS data, resp_person, serial, refresh, retry, expire, 
    12.         minimum from dns_records where zone = '$zone$' and not (type = 'SOA' or type = 'NS')} 
    13.    {select zone from xfr_table where zone = '$zone$' and client = '$client$'} 
    14.    {update data_count set count = count + 1 where zone ='$zone$'}"; 
    15. }; 
第一行声明使用DLZ驱动,第二节声明使用MYSQL。这些一般都是规定不变的。
第三行声明MYSQL的链接信息,这一行可以用到的参数还有dbname、port、host、user、pass、socket、compress、ssl、space。
第四行是查询DNS服务器中是否存在被请求域名$zone$,如果返回一行或以上结果,则被判断为存在,否则返回不存在改域名的应答。
第五行至第七行是返回域名记录,如果在下面紧接着的定义中定义了查询SOA和NS记录的语句,则本行必须过滤掉相应的SOA和NS记录,如本例子所示;如果下面没定义,则本行必须返回相应的SOA和NS记录,如上面的例子所示。
第八行则是刚刚说的用于返回SOA和NS记录的语句,如果上面的没有返回,则如例子所示设置;如果已经返回,则设为“{}”,注意其中不能用空格及其他字符。
第十至十二行是返回AXFR时所有的域名记录,如果这是包括SOA和NS记录,则第八行须设为空,否则须在第八行返回SOA和NS记录。
第十三行是查询当前请求AXFR的请求者$client$是否符合请求$zone$的授权,只要返回一行或以上记录就算符合。
第十四行是访问$zone$时的为相应的记录加一。
其中从第八行值第十四行的记录均为可选项。
说实话,配置bind dlz并不算麻烦,麻烦的是,现在找不到像模像样的PHP管理前端,webmin的开发得挺好,但是它不仅仅是bind管理,所以比较庞大,安装比较麻烦。这次我没装,有空会好好研究一下.
----------------------------------------------------------------
DNS服务器软件Bind

Bind一款全球使用最为广泛的开源 DNS (Domain Name System)服务器软件,  由美国加州大学 Berkeley 分校开发和维护,全名为 Berkeley Internet Name Domain 。支持Linux,Unix和windows平台。基于C语言实现,代码量巨大,其设计实现几乎涵盖了服务器编程的所有细节。Bind 从 9.11.0 版本起,开源协议更改为 MPL 2.0。

BIND软件包包括三个部分:DNS服务器: 它根据DNS协议标准的规定,响应收到的查询。DNS解析库(resolver library):通过发送请求到合适的服务器并且对服务器的响应做出合适的回应,来解析对一个域名的查询。一个解析库是程序组件的集合,可以在开发其它程序时使用,为这些程序提供域名解析的功能。还有测试服务器的软件工具。

BIND发展过程中经历了三个主要的版本,BIND 4,BIND 8和BIND 9,每个版本在架构上都有着显著的变化。BIND 9的开发是一项商业和军事合同结合的结果。BIND 9的大多数功能是由UNIX经销商支持的,目的是保证BIND能够保持与Microsoft的DNS程序的竞争力;DNSSEC功能是由美国军方出于对DNS安全性的关注而赞助开发的。
-------------------------------------------

相关帖子:http://briteming.blogspot.com/2012/10/centosdns-bind.html