Windows下安装BIND作为DNS缓存服务器

以前写过一篇文章,也是关于windows下面的dns 缓存服务器的,叫《Acrylic:让你在win一分钟建立DNS缓存服务器》 , Acrylic的确够小巧的,这次要介绍的是大名鼎鼎的bind啦。

由于我以前在LINUX下架设过bind9,因此这次在WINDOW下的配置也基本上按照LINUX下的来。

说明:我的window 7安装在E盘。 安装bind主要目的是方便自己和寝室的兄弟们上网,加速解析网站域名的速度。
本文所讲匀在windows 7 专业版下测试通过。

1、下载BIND
http://www.isc.org/downloads/current

目前最新版本为:BIND9.7.0-P1.zip

本文相关文件下载

2、安装
下载回来是zip的压缩包,解压以后直接双击BINDInstall.exe安装,默认安装路径是C:\WINDOWS\system32\dns。 bind在win32下将自己注册成服务,服务名叫ISC BIND,程序名为named.exe,启动服务需要用一专有帐户,默认名称为named,密码自己弄一个吧。
这里我为了方便操作,就把它安装在 E:\dns 了。点击install以后,程序便安装在 E:\dns下,如果这里通过命令net start named 或者运行services.msc打开服务管理启动named服务,会报代号1067的错:应用程序意外终止。必须先经过配置才行,如果配置后还报这个错误,很可能是配置文件有错误。比如我这次由于一个include 指令没有加分号,也会报这个错误。

3、配置
先运行命令行cmd,cd 至 C:\dns\bin下,运行

1
rndc-confgen.exe -a

,会自动在C:\dns\etc\下生成rndc.key。此rndc.key是在是bind 9.x版本的新功能,是有关DNS更新以及更新时加密处理的,跟我们个人用户无太大关系,不过基于兼容性,还是照做。接下来,在C:\dns\etc\下建立named.conf,即bind的配置文件。
named.conf内容如下:

1
2
3
include "e:/dns/etc/named.conf.options";
include "e:/dns/etc/named.conf.local";
include "e:/dns/etc/named.conf.default-zones";
1
mkdir e:/tmp/bind

注意,这里我指定了三个DNS服务器,前两个是铁通的,第三个是电信的,这里你要根据你的实际情况修改成自己的),
e:/dns/etc/named.conf.options内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
options {
    directory "e:/tmp/bind";

    forwarders {
    61.234.254.6;
    61.234.254.5;
    59.51.78.211;
    };

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

named.conf.local包含了rndc.key,另外还有我自己配置的一些DNS解析,如果只是要作缓存服务器可以不要那两个zone(这里我定义了两个zone,一个是正解区域,另一个是反解区域),
named.conf.local内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//
// Do any local configuration here
//

include "e:/dns/etc/rndc.key" ;

zone "test.domain" {
    type master;
    file "e:/dns/etc/db.test.domain";
};

zone "30.172.in-addr.arpa"  {
    type master;
    file "e:/dns/etc/db.172.30";
};

named.conf.default-zones 定义了根节点的文件和其它一些保留地址的文件,named.root里面定义了全球的根DNS服务器,下载地址是http://www.internic.net/zones/named.root,需要定期更新。可以从 http://www.internic.net/或者 ftp.internic.net下载named.root文件,并重命名为db.root放在 e:\dns\ect\下面。

named.conf.default-zones内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// prime the server with knowledge of the root servers
zone "." {
    type hint;
    file "e:/dns/etc/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
    type master;
    file "e:/dns/etc/db.local";
};

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

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

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

4、启动ISC BIND服务
在cmd 中:

1
net start named

或者直接运行 services.msc 打开”服务“,启动ISC BIND服务。
如果bind安装目录所在的磁盘是NTFS格式的且启动服务时还是报1067的错的话,还要记得修改权限,使得启动bind的named用户对e:\dns\etc这个目录有完全控制权。

5、测试

把网络上的任意一台机器的DNS设置到安装了BIND的机器IP。Ping一下www.google.com 如果通了,OK,well done!
或者直接在装BIND的机器上,

1
2
3
cd e:\dns\bin
dig google.com
#或者nslookup google.com

相关文件下载:


有图为证:

喜欢这篇文章吗?

请订阅本站 RSS feed填写您的邮件地址,订阅我们的精彩内容:

相关日志

回复 (11)

  1. wqxcx  / 回复

    还有 这个缓存越来越多 会不会占用太多的资源 如何限制大小或者清空?

  2. wqxcx  / 回复

    弱弱问一句 如果test.com 在前面定义的三个DNS服务器中有解析 那么test.com最后的解析结果究竟是来自那三个DNS服务器呢 还是来自自己定义的zone 也就是优先级的问题

    • 荒野无灯  / 回复

      如果上网的机子把主DN设置为此服务器,那么查到的肯定是此服务器的记录,也就是说,本服务器的优先级是大一些的。

      • wqxcx  / 回复

        那么如何将DNS的缓存保存成文件写入硬盘而不是只在内存中呢 我搜索了很长时间没有结果
        虽然每条缓存都有TTL 但是因为我不是服务器 不是24小时连续开机 经常要重启 关机 每次重启 内存中的缓存就没了 需要再向上级DNS提交查询 无形中浪费了一部分时间

  3. yesureadmin  / 回复

    这么好的文章 收藏了!

  4. 白银时代  / 回复

    这东西原理是什么?
    为什么可以加速域名解析?
    难道域名解析到你自己电脑上了?
    不懂

    • 荒野无灯  / 回复

      @白银时代, 嗯 ,本机相当于dns cache服务器。在TCP/IP设置里将DNS设置为127.0.0.1 即可实现加速了

      • 白银时代  / 回复

        @荒野无灯, 这样做对其他访客岂不是无意义?

        • 荒野无灯  / 回复

          @白银时代, 首先是加速本机访问时的解析速度,但是,其它计算机与你在同一个小局域网(比如连接同一个交换机)中,那么他们把首选DNS设置为你的IP也能相应地加速解析。

  5. 叶子  / 回复

    有点难度,先留个记号,以后回来慢慢吃透,呵呵

  6. 无名博客  / 回复

    这个…太专业了 不懂

发表评论 修改评论取消编辑

允许使用的标签 - 您可以在评论中使用如下的 HTML 标签以及属性。

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 :wink:  :-|  :-x  :twisted:  :)  8-O  :(  :roll:  :-P  :oops:  :-o  :mrgreen:  :lol:  :idea:  :-D  :evil:  :cry:  8)  :arrow:  :-?  :?:  :!:

引用通告 (0)

› 尚无引用通告。

开灯