11/08/2010

【转载】Windows下架设DNS服务 -- 基于Bind

版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2007/09/17/build-dns-server-on-win32/以及本声明。


相信有很多人都想架设自己的DNS服务器。我们知道世界上最好用的DNS服务器软件就是BIND; 但是我辈使用Windows操作系统的人就无福享用这Unix下的顶级软件了。

或者可以用Windows Server自带的DNS服务器试试? 需要安装Server版的Windows不说,麻烦的配置和令人迷惑的图形界面就够受的了。

难道就没有一个解决方案了吗?

柳暗花明又一村,突然发现BIND居然有Windows版,这这这………… 赶快下载下来试一下,居然成功地配好了DNS。

BIND的Windows版叫做ntbind,在isc的ftp上有下载。 我下载的是ntbind-9.2.5版。解压之后运行安装程序,默认安装到C:Windowssystem32dns下。

装好之后就是配置工作了,不过在这之前建议先将 C:Windowssystem32dnsbin 添加到 PATH 环境变量中, 这样配置时就可以用 dig工具来代替难用的 nslookup了。然后再将自己机器的DNS地址改为 127.0.0.1。 注意修改DNS时别忘记ISP提供的DNS地址,过一会儿要用到。

打开 C:Windowssystem32dnsetc 目录,建立配置文件 named.conf,内容如下:

named.conf

options {    // zone文件的位置    directory "C:Windowssystem32dnsetc";    // 无法解析的域名就去查询ISP提供的DNS    // 在下面的IP地址位置上填写ISP的DNS地址    forwarders {        1.2.3.4;        1.2.3.5;    };    // 仅允许本机和子网内的机器查询    allow-query {        127.0.0.1;        192.168.0.0/24;    };};// 根DNSzone "." {    type hint;    file "named.root";};// localhostzone "localhost" IN {    type master;    file "localhost.zone";    allow-update { none; };};// localhost的反向解析zone "0.0.127.in-addr.arpa" {    type master;    file "localhost.rev";};// example.comzone "example.com" IN {    type master;    file "example.com.zone";};# End of named.conf

然后逐个建立named.conf中提到的几个文件,都放在 C:Windowssystem32dnsetc 下。

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

localhost.zone:针对localhost的正向解析。

$TTL 1D@       IN      SOA     localhost.      root.localhost. (        2007091701          ; Serial        30800               ; Refresh        7200                ; Retry        604800              ; Expire        300 )               ; Minimum        IN      NS      localhost.localhost.        IN      A       127.0.0.1

localhost.rev:针对127.0.0.1的反向解析。

$TTL    1D@       IN      SOA    localhost.    root.localhost. (        2007091701          ; Serial        30800               ; Refresh        7200                ; Retry        604800              ; Expire        300 )               ; Minimum            IN      NS      localhost.1           IN      PTR     localhost.

example.com.zone:是我们为自己的域的正向解析配置。

example.com.    IN  SOA   ns1.example.com.  root.example.com. (        2007091701         ; Serial        30800              ; Refresh        7200               ; Retry        604800             ; Expire        300 )              ; Minimum        IN    NS        ns1.example.com.*       IN    A         192.168.0.2    ; 将所有域名都泛解析到192.168.0.2上

OK,这几个配置文件写好之后,启动命令行,输入以下命令:
C:> named -f -g -d 1

即可在控制台启动named。如果不能启动请仔细观察输入结果并自行查找错误。

然后你可以用dig命令来测试返回结果是否正确。

C:> dig www.google.comC:> dig www.sina.com.cn

你也可以打开浏览器,看看能否正常上网。另外因为我们配置了 example.com 的域, 所以 abc.example.com 应该能访问你架设在 192.168.0.2 上的 Web 服务器。

一切正常访问之后,我们还有一件事情要做:配置使用 rndc 命令来控制bind。 请执行以下命令:

C:> cd C:Windowssystem32dnsetcC:Windowssystem32dnsetc> rndc-confgen > rndc.conf

即可在 C:Windowssystem32dnsetc 下生成 rndc.conf 文件。编辑这个文件, 并将该文件的后半部分剪切到 named.conf 末尾,配置即完成。

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

最后一步,利用srvany将named安装为服务,即大功告成。(srvany需要安装Windows 2003 Server Resource Kit)

instsrv ntbind C:Windowssystem32dnsbinnamed.exe
参考文献


---------------------------------------------------------------------------------------------------------------------------
没有排版,凑合着看吧,要不直接去原文看。

有一点要补充的,在设置子域名的时候要像这样,而且对应的.zone文件中开头的网址一定要改好。
还有一点是域名后边要加上“.”!
---------------------------------------------------------------------------------------------------------------------------
x.com.    IN  SOA   ns1.x.com.  root.x.com. (
        2007091704         ; Serial
        30800              ; Refresh
        7200               ; Retry
        604800             ; Expire
        300 )              ; Minimum

        IN    NS        ns1.x.com.

123.x.com. IN A    10.0.0.55        ;子域名
abc.x.com. IN A    10.1.10.253    ;子域名
*       IN    A         10.1.0.144    ;将所有域名都泛解析到10.1.0.144上