网站首页 - 关于我们 - 团队成员 - 联系我们

 rss
♀ 您现在的位置在:首页 -> CNFUG期刊 -> 正文(阅读
Bind 8 Server HOWTO

绝对蓝屏 [ihweb](黄华栋) <ihweb@cnfug.org>

本文在FreeBSD 4.7及FreeBSD 5.0 release中测试通过。测试的bind的版本为8.3.4-REL。此版本为FreeBSD内置的DNS服务器。

一、简介
DNS(Domain Name System域名系统)
负责将ip和域名之间的转换。例如www.kingisme.com --> 61.145.114.167。目的就是为了避免大家上网的时候老要输入IP地址,多难记啊。 在
http://turtle.ee.ncku.edu.tw/~tung/dns/dnsintro.html
有一篇文章,大家可以从中了解DNS,本文就不再做详述了。
在freebsd的HandBook:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/dns.html
中也非常细致的讲述了bind在FreeBSD中的使用。
本文档的目标为配置一个dns服务器,用于解析kingisme.com域名。而解析kingisme.com的DNS服务器为ns.kingisme.com。ns.kingisme.com的IP地址为61.145.114.1,本地网段为61.145.114.0/24。[以上均为假设]

二、 配置bind8
刚安装完毕的FreeBSD是不会打开named daemon的;它的开关在/etc/rc.conf里面的这项设置:
named_enable="YES"
bind所使用的程序存在/usr/sbin/下。主要使用的程序有:

/usr/sbin/named :bind服务器。bind使用它来监听53端口的DNS查询请求。
/usr/sbin/ndc      :bind服务器控制工具。bind使用ndc来启动、停止、重载配置文件和获得服务器状态信息。一般的情况下,我们不会直接使用named,而都是通过ndc来使用bind。
而bind8的配置文件则存在/etc/namedb/下。系统初装时默认的配置文件有:
/etc/namedb/named.conf  :bind主配置文件。所有其它的配置文件都是由它来引用的。
/etc/named/named.root     :根域名服务器配置列表。
同时在/etc/namedb/下还提供一个实用工具make-localhost来自动生成本地反向解析文件。

配置一个DNS服务器的通常过程分为:
2.1、初始化配置:配置本地主机和本地网络反向解析。
2.2、初始化区域配置文件:配置区域文件 。
2.3、日常维护。
做为一个管理员,建议养成一个好的习惯,而做为一个BSD系统的了解者,你更应该有一个严谨的命名、管理习惯。以下有命名和路径参考,做为一个好的管理员,你也应该有这样的一个协定,如果管理的区域很多时就会感觉到它的好处。
系统路径标准:

/etc/namedb/             :存储DNS基础配置文件
/etc/namedb/rev/      :存储所有的反向解析配置文件(localhost的反向解析文件存于/etc/namedb下)
/etc/namedb/hosts/   :存储所有正向解析的区域文件
配置文件命名标准:
  • 正向解析区域文件:域名为前娺,后娺为hosts。如果为ipv6的解析配置文件则在域名后加-v6标识。例如:kingisme.com.hosts、kingisme.com-v6.hosts。
  • 反向解析文件:以子网IP地址为前娺,后娺名为rev。同样,如果为ipv6的反向解析配置文件则在域名后加-v6标识。例如:61.145.114.rev、61.145.114-v6.rev。


  • 以下我们以上面的三个配置步骤以kingisme.com为例子,配置一个FreeBSD下的bind8服务器。

    三、初始化配置
    配置本地主机和本地网络反向解析。
    无论你要做一个什么样的DNS服务器,这一步的工作都是一样的。也是非常简单的一步。
  • 生成本地主机反向解析文
  • 生成本地网络反向解析文件。


  • 首先我们需要配置本地主机的反向解析。这个配置文件可以使用/etc/namedb/make-localhost实用脚本来生成。
    #sh /etc/namedb/make-localhost
    执行完make-localhost,会在/etc/namedb目录中生成localhost.rev和localhost-v6.rev文件。以后我们所有的解析配置文件都可以使用这两个配置文件做为模板来改动一下就可以使用了。

    再下一步就是初始化本地网络反向解析。先是要建立反向解析目录,并确定需要反向解析的网络地址段,最后建立反向解析文件建立并在named.conf中添加引用。在本文最开始说明了本地网段为61.145.114,以下是具体操作 。
    在/etc/namedb/named.conf中加入反向解析网段引用:
    zone "114.145.61.in-addr.arpa" {
    type master;
    file "/etc/namedb/rev/61.145.114.rev";
    };
    在file指定中定义了114.145.61.in-addr.arpa的所有解析都在/etc/namedb/rev/61.145.114.rev中定义

    下面我们生成/etc/namedb/rev/61.145.114.rev文件。
    #makedir /etc/namedb/rev
    #cp /etc/namedb/localhost.rev /etc/namedb/rev/61.145.114.rev
    将61.145.114.rev的最后一行删除,变为
    1         IN        PTR ns.kingisme.com.
    上面要注意的是:注意那几个kingisme.com.后面的句点号,它的作用是不让bind为它自动增加后娺。而1没有加句点,bind在运行时则会自动将其变为1.114.145.61。

    四、 初始化区域配置文件--配置区域文件
    做完基本的初始化工作后就开始将需要解析的域一个个的加入到bind的配置中来。一般的操作如下:
  • 在/etc/namedb/named.conf中设置区域引用
  • 增加区域配置文件
  • 在区域配置文件中增加主机信息
  • 如果需要,在反向解析中增加ip反解信息
  • 重载配置文件


  • 下面一步步的来讲解操作方法。
    首先是在named.conf中增加一个区域的解析引用。
    增加的内容如下:
    zone "kingisme.com" {
    type master;
    file "/etc/namedb/hosts/kingisme.com.hosts";
    };
    它说明了本机会解析kingisme.com的所有主机信息,主机配置信息存在于
    /etc/namedb/hosts/kingisme.com.hosts文件中。
    接下来我们产生/etc/namedb/hosts/kingisme.com.hosts这个文件,大家还记得我们的localhost.rev文件吗?对了,这里我们可以利用它,它的头部信息我们就省的写了。
    #cp /etc/namedb/localhost.rev /etc/namedb/hosts/kingisme.com.hosts
    之后我们需要将kingisme.com.hosts的最后一行PTR记录删除,因为PTR是只能在反向解析中出现的记录。接下来加入我们需要解析的主机信息。如:
    ns IN A 61.145.114.1
    www IN A 61.145.114.167
    mail IN A 61.145.114.188
    ftp IN A 202.202.202.202 ; 不一定是自己的IP
    webmail IN CNAME www.kingisme.com. ; 这是CNAME的设置
    a IN A 61.145.114.10
    b IN A 61.145.114.11
    c IN A 61.145.114.12
    d IN A 61.145.114.13
    * IN A 61.145.114.111 ; 这个就是很多网站说的泛解
    完成主机解析后,如果我们想让一个ip可以反向解析成一个域名,哪么还需要在反解文件中加入相关信息。如我们希望61.145.114.167反解成www.kingisme.com。哪么就是需要在/etc/namedb/rev/61.145.114.rev中加入以下信息:
    167 IN PTR www.kingisme.com.
    所有的配置做完成,bind还是不能立即对你所做的变更生效的,你还需要重载bind的配置文件:
    #ndc reload
    五、 日常维护
    日常维护经常要做的事主要有:
  • 查询配置信息是否生效。
  • 更新根服务器配置文件。
  • 控制服务器的运行状态。

  • 查询是否成效,在bind8中最为有效的方法是使用nslookup命令工具。以下是使用nslookup查询的方法:
    #nslookup
    > server 61.145.114.1
    Default Server: [ns.kingisme.com]
    Address: 61.145.114.1

    > www.kingisme.com
    Server: ns.kingisme.com
    Address: 61.145.114.1
    Non-authoritative answer:
    Name: www.kingisme.com
    Address: 61.145.114.167

    > 61.145.114.167
    Server: ns.kingisme.com
    Address: 61.145.114.1
    Name: www.kingisme.com
    Address: 61.145.114.167
    > exit
    由于根服务器会不定期的变更,所以在三个月到半年的周期里需要对根服务器配置文件进行更新。
    # cd /etc/namedb
    # fetch ftp://ftp.rs.internic.net/domain/named.root
    最后就是使用ndc来进行日常的服务器控制的工作了。先是启动服务器:
    #ndc start
    new pid is 823
    DNS已经成功启动。
    我们查看进程:
    #ps -ax | grep named
    823 ?? Ss 0:00.04 /usr/sbin/named
    停止服务器:
    #ndc stop
    重启服务器:
    #ndc restart
    new pid is 1223
    重载配置文件:
    #ndc reload
    有人就会问,重载配置文件和重启服务器其实是一样的呀。对,看起来作用是一样的,但是在配置文件很大的情况下,重载的速度要远高于重启。
    六、配置文件范例
    /etc/namedb/named.conf
    options {
    directory "/etc/namedb";
    forward only;
    };
    zone "." {
    type hint;
    file "named.root";
    };
    zone "0.0.127.in-addr.arpa" {
    type master;
    file "localhost.rev";
    };
    // 这些是负责172.0.0.1解释到localhost的。
    zone "kingisme.com" {
    type master;
    file "/etc/namedb/hosts/kingisme.com.hosts";
    };
    // 这些负责kingisme.com的解释;我把所有的域解析都放在/etc/namedb/hosts下,好管理
    zone "114.145.61.in-addr.arpa" {
    type master;/etc/namedb/hosts
    file "/etc/namedb/hosts/61.145.114.rev";
    };
    /etc/namedb/localhost.rev
    ; From: @(#)localhost.rev 5.1 (Berkeley) 6/30/90
    ; $FreeBSD: src/etc/namedb/PROTO.localhost.rev,v 1.6 2000/01/10 15:31:40 peter Exp $
    ;
    ; This file is automatically edited by the `make-localhost' script in
    ; the /etc/namedb directory.
    ;
    $TTL 3600
    @ IN SOA ns.kigisme.com. root.ns.kingisme.com. (
    20030428 ; Serial
    3600 ; Refresh
    900 ; Retry
    3600000 ; Expire
    3600 ) ; Minimum
    IN NS ns.kigisme.com.
    1 IN PTR localhost.kingisme.gov.
    /etc/namedb/hosts/kingisme.com.hosts
    $TTL 14400
    @ IN SOA ns.kingisme.com. webmaster.kingisme.com. ( ;webmaster.kingisme.com. 是表示管理者的EMAIL
    20030105; Serial ;Serial号码,每此更新DNS的时候就要把这个数字改大一点,我们通常用日期来表示。
    3600 ; Refresh ;DNS的刷新时间
    900 ; Retry ;重试间隔时间
    3600000 ; Expire;到期时间
    3600 ) ; Minimum
    IN NS ns.kingisme.com. ; 注意这点不要忘记了
    IN MX 10 mail ;;把kingisme.com的邮件都转交mail.kingisme.com处理
    ns IN A 61.145.114.1
    www IN A 61.145.114.167
    mail IN A 61.145.114.188
    ftp IN A 202.202.202.202 ;不一定是自己的IP
    webmail IN CNAME www.kingisme.com. ;这是CNAME的设置
    a IN A 61.145.114.10
    b IN A 61.145.114.11
    c IN A 61.145.114.12
    d IN A 61.145.114.13
    * IN A 61.145.114.111 ;这个就是很多网站说的泛解

    /etc/namedb/rev/61.145.114.rev

    $TTL 14400
    @ IN SOA ns.kingisme.com. webmaster.kingisme.com. (
    20030105; Serial
    3600 ; Refresh
    900 ; Retry
    3600000 ; Expire
    3600 ) ; Minimum
    IN NS ns.kingisme.com.
    1 IN PTR ns.kingisme.com.
    167 IN PTR www.kingisme.com.
    188 IN PTR mail.kingisme.com.
    10 IN PTR a.kingisme.com.
    11 IN PTR b.kingisme.com.
    12 IN PTR c.kingisme.com.
    13 IN PTR d.kingisme.com.
    七、DNS的安全性
    我们可以通过chroot 来令到bind 8 service 更加安全,请看我的另外一篇文章《建立安全的DNS服务

    八、结尾说明
    此文章较早前在 技术天空 (www.huangdong.com) 那里发表过,并得到 hd 的帮助,修正了此文中多处错误。在此感谢 hd 。
    2003年4月30日 于 HD<hdcola@bj1860.net>
    我对整个文档结构做了大的调整。希望能把自己的经验也放进来,告诉大家日常的工作(特别是我的一些习惯和工作方法)。并且将所有的设置在FreeBSD 5.0上测试通过。
    真心的希望能再加入的内容:
    bind配置文件中所有主机类型的说明
    named.conf中所有options中的配置项的说明
    这里主要讲master的域做法,加入辅DNS的做法
    如果你有相关的经验,希望你也能共享出来,可以联系我HD<hdcola@bj1860.net>。谢谢大家的支持。

    网友评论  以下本论与CNFUG(China FreeBSD User Group)立场无关
    我也说几句




    推荐给好友

      


    文章下载

    本功能正在开发中,目前不能使用,敬请原谅。

    √ 期刊在线投稿: /journal/contribute.html

    √ 本文打印于《CNFUG期刊》,欢迎访问 http://www.cnfug.net 获取更多技术文章。