BIND域名服务器配置

BIND域名服务器配置

在 “动态域名更新(DDNS+DHCPD)”的这个

http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=13288

帖子里,我大概地写了 bind 的配置,这里详细地写一个。



本 人 申 明 :
我这里的例子均是本人在实际环境里面使用过的,只是改变了yourdomaon.com、1.2.3 等。
所以您可以完全拷贝我的。
然后将 “yourdomaon.com” 改成你的“域名”;
将“1.2.3”、“3.2.1” 改成您的(比如)“192.168.0”、“0.168.192”(私网和公网均可) 即可!


所用到的文件 :
[code:1]
3.2.1                        29-Jan-2002 17:04  745   
127.0.0                      29-Jan-2002 17:00  278   
localdomain                  29-Jan-2002 17:00  296   
named.ca                     04-Jul-2001 04:56  2.7K  
named.conf                   20-Dec-2002 13:21  3.2K  
named.root                   04-Jul-2001 04:56  2.7K  
yourdomain.com               29-Jan-2002 17:04  953    [/code:1]


named.cond 文件内容:

[code:1]#
# file:    /etc/named.conf
#
# It's ONLY for reference. ------------- gugong
#


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


include "/etc/rndc.key";


logging {
        channel gugong_update_debug {
                file "/var/named/update-debug.log";        #您须手工 touch 此文件,然后改为 named 用户所有,下同。
                severity  debug 3 ;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        channel gugong_security_info    {
                file "/var/named/named-auth.log";
                severity  info;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        channel gugong_queries_info        {
                file "/var/named/queries.log";
                severity  info;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        channel gugong_default_info        {
                file "/var/named/named-default.log";
                severity  info;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        category update {
                gugong_default_info;
                gugong_update_debug;
                default_syslog;
                default_stderr;
        };

        category security {
                gugong_security_info;
                default_debug;
                default_syslog;
        };

        category queries {
                gugong_queries_info;
#                default_syslog;
                default_debug;
        };

        category lame-servers {
                gugong_queries_info;
                default_syslog;
        };

        category default {
                gugong_default_info;
                default_syslog;
                default_debug;
                default_stderr;
        };
#        不同的 bind 版本,可能上面的有些不能用,注释掉不能用的即可。

};

# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

options {
        directory        "/etc/named";

        #        指定域名解析文件的存放目录为 "/etc/named"。
        /*
         * 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;

        auth-nxdomain yes;
#        check-names master fail;
#        check-names slave warn;
#        check-names response ignore;

#
#                可以指定在哪个地址监听。
#                listen-on port 53 { 127.0.0.1; 192.168.0.251; };
#                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


# ========================================================================

#                提供 “域名解析转发”。
#                这在若你没有直接连接到互联网时会特别管用。
#                当然您也可以指定这里,来减少您服务器的 DNS 解析的网络流量。
#
#                forward first;
#                forwarders { 192.168.0.1; 192.168.0.2; };
#

#
#                rfc2308-type1 yes;                        #  no

};

#

acl local_host_name {
        192.168.0.0/24;
#        !192.168.1.239;
};

#


zone "yourdomain.com" in {
        type master;
        file "master/yourdomain";
#        allow-update { local_host_name; };
#        check-names warn;
                        #         ( warn | fail | ignore );
};


# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

zone "3.2.1.in-addr.arpa" {
        type master;
        notify no;
        file "master/3.2.1";
#        allow-update { local_host_name; };
#        check-names warn;
                #         ( warn | fail | ignore );
};


# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
#
# hint file (formerly known as cache file)

zone "." {
        type hint;
        file "named.ca";
#        check-names warn;
                #        ( warn | fail | ignore );
};
#



/* localhost */
zone "0.0.127.in-addr.arpa" {
        type master;
        notify no;
        file "master/127.0.0";
};
#

/* localhost.localdomain */
zone "localdomain" {
        type master;
        notify no;
        file "master/localdomain";
};
# ------------------------ END ------------------------
[/code:1]
yourdomain.com 文件(正向)内容:

[code:1]
;
; file:    yourdomain.com
;
; It's ONLY for reference. ------------- gugong
;
;
;$INCLUDE <FileName> <opt_domain>
$ORIGIN                yourdomaon.com.       
$TTL                144000

@                IN        SOA                yourdomaon.com. hostmaster.yourdomaon.com. (
                                        2002010828 ; Serial
                                        3H      ; Refresh
                                        2H      ; Retry
                                        4W      ; Expire
                                        3D )    ; Minimum

                IN        NS        ns1.yourdomaon.com.
                IN        NS        ns2.yourdomaon.com.

                IN        MX         10 mail.yourdomaon.com.
                        TXT        "Your Corporation"

yourdomaon.com.                IN        A        1.2.3.4
                        IN        MX         10 mail.yourdomaon.com.

www.yourdomaon.com.        IN        A        1.2.3.5
                        IN        MX         10 mail.yourdomaon.com.

ns1.yourdomaon.com.        IN        A        1.2.3.6
                        IN        MX         10 mail.yourdomain.com.

ns2.fruitron.com.cn.        IN        A        1.2.3.7
                        IN      MX      10 mail.yourdomaon.com.
                               
mail.yourdomaon.com.        IN        A        1.2.3.4
                        IN        MX         10 mail.yourdomaon.com.

;
;
;pop                IN        CNAME        mail.yourdomaon.com.
;pop3                IN        CNAME        mail.yourdomaon.com.
;imap                IN        CNAME        mail.yourdomaon.com.
;
; ================ END ================

[/code:1]
3.2.1 文件(反向)内容:

[code:1]
;
; file:        3.2.1
;
; It's ONLY for reference.  --------- gugong
;
;
;$INCLUDE <FileName> <opt_domain>
$ORIGIN                3.2.1.in-addr.arpa.
$TTL                144000


@               IN      SOA     yourdomain.com. hostmaster.yourdomain.com. (
                                        2002010838        ; Serial
                                        28800                ; Refresh
                                        14400                ; Retry
                                        3600000                ; Expire
                                        86400 )                ; Minimum

                IN        NS        ns1.yourdomain.com.
                IN        NS        ns2.yourdomain.com.
               
                IN        MX         10 mail.yourdomain.com.


4        IN        PTR        yourdomain.com.
        IN        MX        10 mail.yourdomain.com.

5        IN        PTR        www.yourdomain.com.
        IN        MX        10 mail.yourdomain.com.

6        IN        PTR        ns1.yourdomain.com.
        IN        MX        10 mail.yourdomain.com.

7        IN        PTR        ns2.yourdomaon.com.
        IN        MX        10 mail.yourdomain.com.

4        IN        PTR        mail.10 mail.yourdomain.com.
        IN        MX        10 mail.yourdomain.com.
;
;
[/code:1]
localdomain 文件内容:

[code:1]
;
; file:    localdomain
;
; It's ONLY for reference. ------------- gugong
;
$TTL        86400
$ORIGIN localdomain.
@        IN        SOA        localhost. root.localhost. (
                                        2002010748        ; serial
                                        3H                ; refresh
                                        15M                ; retry
                                        1W                ; expiry
                                        1D )                ; minimum

                        IN        NS        localhost.

localhost                IN        A        127.0.0.1

[/code:1]
127.0.0  文件内容:

[code:1]
;
; file:    127.0.0
;
; It's ONLY for reference. ------------- gugong
;
$TTL        86400
@        IN        SOA        localhost. root.localhost.  (
                                        2002010698        ; Serial
                                        28800                ; Refresh
                                        14400                ; Retry
                                        3600000                ; Expire
                                        86400 )                ; Minimum
                IN        NS        localhost.

1                IN        PTR        localhost.

[/code:1]
named.ca(或者  named.root)的内容,我就不帖了。
新 BIND 版本支持 view 项。

可以让某个 zone 只为某些指定的用户服务。意味着:

您可以在自己公司的服务器上建一个你私人的虚拟主机,而局域网不可以访问,公网的用户却可以访问(在 dns 、网关为您控制的情况下,我原来就是这么做的哟)。


named.conf 文件内容:

[code:1]
// generated by named-bootconf.pl

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


include "/etc/rndc.key";


logging {
        channel gugong_update_debug {
                file "/var/named/update-debug.log";        #您须手工 touch 此文件,然后改为 named 用户所有,下同。
                severity  debug 3 ;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        channel gugong_security_info    {
                file "/var/named/named-auth.log";
                severity  info;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        channel gugong_queries_info        {
                file "/var/named/queries.log";
                severity  info;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        channel gugong_default_info        {
                file "/var/named/named-default.log";
                severity  info;
                print-category yes;
                print-severity yes;
                print-time     yes;
        };

        category update {
                gugong_default_info;
                gugong_update_debug;
                default_syslog;
                default_stderr;
        };

        category security {
                gugong_security_info;
                default_debug;
                default_syslog;
        };

        category queries {
                gugong_queries_info;
#                default_syslog;
                default_debug;
        };

        category lame-servers {
                gugong_queries_info;
                default_syslog;
        };

        category default {
                gugong_default_info;
                default_syslog;
                default_debug;
                default_stderr;
        };
#        不同的 bind 版本,可能上面的有些不能用,注释掉不能用的即可。

};

# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

options {
        directory        "/etc/named/named.fruitron";

        #        指定域名解析文件的存放目录为 "/etc/named"。
        /*
         * 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;

        auth-nxdomain yes;
#        check-names master fail;
#        check-names slave warn;
#        check-names response ignore;

#        listen-on port 53 { 127.0.0.1; 192.168.10.8; 192.168.20.8; 211.148.130.133; };
#        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

# ========================================================================

#                forward first;                        # 缺省值

#                forwarders { 202.96.128.143; 202.96.134.133; 202.96.128.68; 202.66.145.179; };

#                rfc2308-type1 yes;                # 缺省值 no

};

#

acl local_host_name {
        192.168.20.0/24;
#        !192.168.1.239;
};




# when using 'view' statements, all zones must be in views.

#
view "internal" {

        // This should match our internal networks.
        match-clients { 192.168.10/24; 192.168.20/24; 192.168.30/24; };

        // Provide recursive service to internal clients only.
        recursion yes;

        # hint file (formerly known as cache file)

        zone "." {
                type hint;
                file "named.ca";
        #        check-names warn;
                #        ( warn | fail | ignore );
        };
        #

        /* localhost */
        zone "0.0.127.in-addr.arpa" {
                type master;
                notify yes;
                file "master/127.0.0";
        };
#

        /* localhost.localdomain */
        zone "localdomain" {
                type master;
                notify yes;
                file "master/localdomain";
        };

        zone "fruitron.com.cn" in {
                type master;
                notify yes;
                file "master/fruitron.com.cn.internal";
                allow-update { local_host_name; };
               #        check-names warn;
                #        ( warn | fail | ignore );
        };

        zone "20.168.192.in-addr.arpa" {
                type master;
                notify yes;
                file "master/192.168.20";
                allow-update { local_host_name; };
        #        check-names warn;
                #        ( warn | fail | ignore );
        };

};



#
view "external" {

        match-clients { any; };
        // Refuse recursive service to external clients.
        recursion no;

        zone "fruitron.com.cn" in {
                type master;
                notify yes;
                file "master/fruitron.com.cn.external";
        #        allow-update { local_host_name; };
        #        check-names warn;
                        #         ( warn | fail | ignore );
        };

        #zone "511888.com" in {
        #        type master;
        #        file "master/511888.com";
        #        notify yes;
        #        allow-update { local_host_name;
        #        check-names warn;
        #};


        # ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

        zone "130.148.211.in-addr.arpa" {
                type master;
                notify yes;
                file "master/211.148.130";
        #        allow-update { local_host_name; };
        #        check-names warn;
                #         ( warn | fail | ignore );
        };
};

[/code:1]

别的文件我就不帖了,可以参考:
http://shcore.com.cn/gugong/gugong/linux/config/named.NEW/named.fruitron/

或者:
http://www.ehuilong.com/gugong/gugong/linux/config/named.NEW/named.fruitron/
[code:1];
; file:        3.2.1
;
; It's ONLY for reference.  --------- gugong
;
;
;$INCLUDE <FileName> <opt_domain>
$ORIGIN      3.2.1.in-addr.arpa.
$TTL      144000


@          IN      SOA     [b]yourdomain.com. [/b]hostmaster.yourdomain.com. (
               2002010838   ; Serial
               28800      ; Refresh
               14400      ; Retry
               3600000      ; Expire
               86400 )      ; Minimum [/code:1]

SOA 后面不是应该是主机吗?
看了很久没有看懂1!!

我会仔细看得!
不太明白这些是什么意思?

logging {
   channel gugong_update_debug {
      file "/var/named/update-debug.log";   #您须手工 touch 此文件,然后改为 named 用户所有,下同。
      severity  debug 3 ;
      print-category yes;
      print-severity yes;
      print-time     yes;
   };

   channel gugong_security_info    {
      file "/var/named/named-auth.log";
      severity  info;
      print-category yes;
      print-severity yes;
      print-time     yes;