Debian下配置DNS(Bind9)服务器详解

发布时间:2019-08-22编辑:脚本学堂
本文详细介绍了bind9的安装与配置,内容包括主域名服务器、纯缓存域名服务器、辅域名服务器等的配置,内容翔实,可操作性强。

    本文详细介绍了bind9的安装与配置,内容包括主域名服务器、纯缓存域名服务器、辅域名服务器等的配置,内容翔实,可操作性强。
    本文是一篇非常不错的有关bind9 dns配置的文章,希望对大家有所帮助。

1. 配置环境
   环境:GNU/linux Debian/testing Linux 2.6.8-2-386
   版本:bind9  9.3.2-2
   测试域名:mydebian.org
   测试ip: 192.168.102.47  主域名服务器 
   192.168.102.48  纯缓存域名服务器
   192.168.102.49  辅助域名服务器
   192.168.102.49  测试客户机

2. 配置文件说明
安装bind9的命令:
  ~# aptitude update
  ~# aptitude install bind9 bind9-host dnsutils

配置文件族:
  # ls /etc/bind/ -l
  total 44
  -rw-r--r-- 1 root root  237 Jan 16  2006 db.0
  -rw-r--r-- 1 root root  271 Jan 16  2006 db.127
  -rw-r--r-- 1 root root  237 Jan 16  2006 db.255
  -rw-r--r-- 1 root root  353 Jan 16  2006 db.empty
  -rw-r--r-- 1 root root  256 Jan 16  2006 db.local
  -rw-r--r-- 1 root root 1507 Jan 16  2006 db.root
  -rw-r--r-- 1 root bind 1611 Jan 16  2006 named.conf
  -rw-r--r-- 1 root bind  165 Jan 16  2006 named.conf.local
  -rw-r--r-- 1 root bind  672 Jan 16  2006 named.conf.options
  -rw-r----- 1 bind bind   77 Aug  4 08:41 rndc.key
  -rw-r--r-- 1 root root 1317 Jan 16  2006 zones.rfc1918

配置文件说明:
  named.conf
  设置一般的named参数,指向该服务器使用的域数据库的信息源

  named.conf.options
  全局选项

  db.root
  根服务器指向文件, 由Internet NIC创建和维护, 无需修改, 但是需要定期更新

  db.local
  localhost正向区文件,用于将名字localhost转换为本地回送IP地址 (127.0.0.1)

  db.127
  localhost反向区文件,用于将本地回送IP地址(127.0.0.1)转换为名字localhost

其中,主配置文件/etc/named.conf的配置语句
     命令  用法
     acl   定义IP地址的访问控制清单
     control       定义ndc使用的控制通道
     include       把其他文件包含到配置文件中
     key   定义授权的安全密钥
     logging       定义日志写什么,写到哪
      opitons       定义全局配置选项和缺省值 
     server定义远程服务器的特征
     trunsted-keys 为服务器定义DNSSEC加密密钥
     zone  定义一个区

默认情况下, 内容如下:
 

复制代码 代码如下:

include "/etc/bind/named.conf.options";

    zone "." {
    type hint;
    file "/etc/bind/db.root";
    };

    zone "localhost" {
    type master;
    file "/etc/bind/db.local";
    };

    zone "127.in-addr.arpa" {
    type master;
    file "/etc/bind/db.127";
    };

    zone "0.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0";
    };

    zone "255.in-addr.arpa" {
    type master;
    file "/etc/bind/db.255";
    };

    include "/etc/bind/named.conf.local";

其中type项的值:
master:表示定义的是主域名服务器
slave :表示定义的是辅助域名服务器
hint:表示是互联网中根域名服务器

在Debian环境中,options语句的配置内容,被移至named.conf.options文件中:
 

复制代码 代码如下:

   options {
    directory "/var/cache/bind";

    // 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 and later use an unprivileged
    // port by default.

    // query-source address * port 53;

    // If your ISP provided one or more IP addresses for stable
    // nameservers, you probably want to use them as forwarders.
    // Uncomment the following block, and insert the addresses replacing
    // the all-0's placeholder.

    // forwarders {
    //      0.0.0.0;
    // };

    auth-nxdomain no;    # conform to RFC1035

    };

3. 创建主域名服务器

a. 首先, 在在192.168.102.47机器上安全bind9
b. 使用编辑器,比如vi, 编辑配置文件/etc/bind/named.conf 加入如下内容:
 

复制代码 代码如下:

   zone "mydebian.org" {
    type master;    //定义此区为主服务器
    file "/etc/bind/db.mydebian";   指定区资源文件的位置
    };

    zone "102.168.192.in-addr.arpa" {
    type master;    //定义此区为主服务器
    file "/etc/bind/db.192";//指定区资源文件的位置
    };

c. 创建区资源文件:
创建区资源文件/etc/bind/db.mydebian内容如下:
 

复制代码 代码如下:

   ;
    ; BIND data file for local loopback interface
    ;
    $TTL    604800
    $ORIGIN mydebian.org.
    @       IN      SOA     mydebian.org. root.mydebian.org. (
    2006080401      ; Serial
     604800 ; Refresh
      86400 ; Retry
    2419200 ; Expire
     604800 )       ; Negative Cache TTL
    ;

    IN      NS      ns
    IN      MX      0       mail.mydebian.org.
    @       IN      A       192.168.102.47
    ns      IN      A       192.168.102.47
    www     IN      A       192.168.102.47
    webserver       IN      CNAME   www
    mail    IN      A       192.168.102.47
    ftp     IN      A       192.168.102.48
    ns2     IN      A       192.168.102.48
    ns3     IN      A       192.168.102.49

第一行是TTL设定,生存时间记录字段。它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。这里定义为604800秒,也就是1周。

第二行是$ORIGIN设定,说明下面的记录出自何处.请您加倍留意最后的一个小小数点"."。
然后,第三行,是一个 SOA 记录的设定,在这里我们看到一个特殊字符 @ ,它就是 ORIGIN 的意思,也就是刚刚所定义的$ ORIGIN mydebian.org. 的内容,您可以写成 mydebian.org. 也可以用 @ 来代替。

假如这个文件前面没有定义 $ ORIGIN 的话, 那這个 @ 的值就以 named.conf 里的 zone 。

接着 SOA 后面,指定了这个区域的授权主机和管理者的信箱,这里分别是"mydebian.org." 和"root.mydebian.org."。我们平时使用的信箱通常是“user@host”这样的格式,但因为@在 DNS 记录中是个保留字符,所以在 SOA 中就用“.”来代替了@。目前这个信箱是 "root@mydebian.org."。

接下来的 SOA 设置,是被括在“( )”之间的 5 组数字,主要作为和 slave 服务器同步 DNS 资料所使用的资料:

Serial:其格式通常会是“年月日+修改次序”(但也不一定如此,您自己能够记得就行)。当 slave 要进行资料同步的时候,会比较这个号码。如果发现在这里的号码比它那边的数值“大”,就进行更新,否则忽略。不过设 serial 有一个地方您要留意:不能超过 10 位数字!

Refresh:这里是是告诉 slave 要隔多久要进行资料同步(是否同步要看 Serial 的比较结果)。

Retry:如果 slave 在进行更新失败后,要隔多久再进行重试。

Expire:这是记录逾期时间:当 slave 一直未能成功与 master 取得联系,那到这里就放弃 retry,同时这里的资料也将标识为过期(expired )。

Minimum:这是最小默认 TTL 值,如果您在前面没有用“$TTL”来定义,就会以此值为准。

请注意:SOA 记录中这对 “ ( ) ”符号之第一个 “ (”括号一定要和 SOA 写在同一行,而不能用 Enter 断行到下一行去,而且其左边最好有一个空格键或 tab 建。而最后一个 “ )”括号也不能写在注解符号 “ ;”的右边。 置 DNS 的 RR 记录档,其格式要求非常严格,我们丝毫不能掉以轻心。比方说:如果句子不是以空格键、Tab 键、 或注解符号 ( ; )开头,也不在 SOA 的 “ ( ) ”之内, 则表示要定义一个“新记录项 (Entry) ”;如果句子是以空格键或 tab 键开始的话,其设置被视为上一个“记录项”的内容。所以,如果您要为“同一个记录项”定义多个记录设置,而不想重复打字,您倒可以偷懒:在接着它的后面几行用空白或 Tab 来缩排就可以了。

NS表明负责mydebian.org.这个域的Name Server是mydebian.org这台主机。
MX记录标明发往mydebian.org域的邮件由mail.mydebian.org这台服务器接收。
A记录标明了IP地址和域名之间的对应关系。

接下来创建该区的反向映射资源文件
/etc/bind/db.192内容如下:
 

复制代码 代码如下:
   ;
    ; BIND reverse data file for local loopback interface
    ;
    $TTL    604800
    @       IN      SOA     mydebian.org. root.mydebian.org. (
    2006080401      ; Serial
     604800 ; Refresh
      86400 ; Retry
    2419200 ; Expire
     604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      mydebian.org.
    47      IN      PTR     mail.mydebian.org.
    47      IN      PTR     www.mydebian.org.
    47      IN      PTR     ns.mydebian.org.
    48      IN      PTR     ftp.mydebian.org.
    48      IN      PTR     ns2.mydebian.org.
    49      IN      PTR     ns3.mydebian.org.

其中PTR记录用来解析IP地址对应的域名

d. 重启DNS服务
    /etc/init.d/bind9 restart

此时查看系统日志,可了解BIND的启动情况,比如如下输出,则说明引导正常
    tonybox:~# tail /var/log/syslog
    Aug 14 08:36:45 localhost named[2792]: zone 127.in-addr.arpa/IN: loaded serial 1
    Aug 14 08:36:45 localhost named[2792]: zone 102.168.192.in-addr.arpa/IN: loaded serial 2006080801
    Aug 14 08:36:45 localhost named[2792]: zone 255.in-addr.arpa/IN: loaded serial 1
    Aug 14 08:36:45 localhost named[2792]: zone localhost/IN: loaded serial 1
    Aug 14 08:36:45 localhost named[2792]: zone mydebian.org/IN: loaded serial 2006080801
    Aug 14 08:36:45 localhost named[2792]: running
    Aug 14 08:36:45 localhost named[2792]: zone mydebian.org/IN: sending notifies (serial 2006080801)
    Aug 14 08:36:45 localhost named[2792]: zone 102.168.192.in-addr.arpa/IN: sending notifies (serial 2006080801)
    Aug 14 08:36:45 localhost named[2792]: client 192.168.102.47#1030: received notify for zone 'mydebian.org'
    Aug 14 08:36:45 localhost named[2792]: client 192.168.102.47#1030: received notify for zone '102.168.192.in-addr.arpa'

e. 在客户机上的设置
 

复制代码 代码如下:
    # cat /etc/resolv.conf
    search mydebian.org
    nameserver 192.168.102.47

f. 测试:
使用nslookup 测试
    tonybox2:~# nslookup
    > set type=any
    > mydebian.org
    Server: 192.168.102.47
    Address:192.168.102.47#53

    mydebian.org
    origin = mydebian.org
    mail addr = root.mydebian.org
    serial = 2006080801
    refresh = 604800
    retry = 86400
    expire = 2419200
    minimum = 604800
    mydebian.org    nameserver = ns.mydebian.org.
    mydebian.org    mail exchanger = 0 mail.mydebian.org.
    Name:   mydebian.org
    Address: 192.168.102.47

使用dig测试
    tonybox2:~# dig @192.168.102.47 mydebian.org

    ; <<>> DiG 9.3.2 <<>> @192.168.102.47 mydebian.org
    ; (1 server found)
    ;; global options:  printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41793
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

    ;; QUESTION SECTION:
    ;mydebian.org.  IN      A

    ;; ANSWER SECTION:
    mydebian.org.   604800  IN      A       192.168.102.47

    ;; AUTHORITY SECTION:
    mydebian.org.   604800  IN      NS      ns.mydebian.org.

    ;; ADDITIONAL SECTION:
    ns.mydebian.org.604800  IN      A       192.168.102.47

    ;; Query time: 31 msec
    ;; SERVER: 192.168.102.47#53(192.168.102.47)
    ;; WHEN: Mon Aug 14 09:16:27 2006
    ;; MSG SIZE  rcvd: 79


    tonybox2:~# dig @192.168.102.47 ftp.mydebian.org

    ; <<>> DiG 9.3.2 <<>> @192.168.102.47 ftp.mydebian.org
    ; (1 server found)
    ;; global options:  printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63890
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

    ;; QUESTION SECTION:
    ;ftp.mydebian.org.      IN      A

    ;; ANSWER SECTION:
    ftp.mydebian.org.       604800  IN      A       192.168.102.48

    ;; AUTHORITY SECTION:
    mydebian.org.   604800  IN      NS      ns.mydebian.org.

    ;; ADDITIONAL SECTION:
    ns.mydebian.org.604800  IN      A       192.168.102.47

    ;; Query time: 22 msec
    ;; SERVER: 192.168.102.47#53(192.168.102.47)
    ;; WHEN: Mon Aug 14 09:16:41 2006
    ;; MSG SIZE  rcvd: 83

反向查询
    tonybox2:~# dig @192.168.102.47 -x 192.168.102.47

    ; <<>> DiG 9.3.2 <<>> @192.168.102.47 -x 192.168.102.47
    ; (1 server found)
    ;; global options:  printcmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21885
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1

    ;; QUESTION SECTION:
    ;47.102.168.192.in-addr.arpa.   IN      PTR

    ;; ANSWER SECTION:
    47.102.168.192.in-addr.arpa. 604800 IN  PTR     www.mydebian.org.
    47.102.168.192.in-addr.arpa. 604800 IN  PTR     mail.mydebian.org.
    47.102.168.192.in-addr.arpa. 604800 IN  PTR     mydebian.org.

    ;; AUTHORITY SECTION:
    102.168.192.in-addr.arpa. 604800 IN     NS      mydebian.org.

    ;; ADDITIONAL SECTION:
    mydebian.org.   604800  IN      A       192.168.102.47

    ;; Query time: 33 msec
    ;; SERVER: 192.168.102.47#53(192.168.102.47)
    ;; WHEN: Mon Aug 14 09:17:00 2006
    ;; MSG SIZE  rcvd: 138