Windows下架设自己的DNS服务器

红薯 发布于 2010/04/11 21:59
阅读 18K+
收藏 32

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

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

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

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

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

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

打开 C:\Windows\system32\dns\etc 目录,建立配置文件 named.conf,内容如下:

named.conf

options {
// zone文件的位置
directory "C:\Windows\system32\dns\etc";

// 无法解析的域名就去查询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;
};
};

// 根DNS
zone "." {
type hint;
file "named.root";
};

// localhost
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};

// localhost的反向解析
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
};

// example.com
zone "example.com" IN {
type master;
file "example.com.zone";
};

# End of named.conf

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

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.com
C:\> dig www.sina.com.cn

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

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

C:\> cd C:\Windows\system32\dns\etc
C:\Windows\system32\dns\etc> rndc-confgen > rndc.conf

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

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

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

instsrv ntbind C:\Windows\system32\dns\bin\named.exe

参考文献

原作者charlee
原始链接http://tech.idv2.com/2007/09/17/build-dns-server-on-win32/

加载中
0
火红莲
火红莲

红薯,,你很强啊....

0
l
liujf191

你好,红薯大哥。帮帮我吧!我是菜鸟。我按照你的方法将 // 在下面的IP地址位置上填写ISP的DNS地址
forwarders {
 8.8.8.8;
  202.102.192.68;
};

// 仅允许本机和子网内的机器查询
allow-query {
127.0.0.1;
 192.168.1.0/24;
};
};
到以下测试出现了错误信息。

D:\WINDOWS\system32\dns\bin>named -f -g -d 1
01-五月-2010 6:58:21.625 starting BIND 9.7.0-P1 -f -g -d 1
01-五月-2010 6:58:21.625 built with default
01-五月-2010 6:58:21.625 found 2 CPUs, using 2 worker threads
01-五月-2010 6:58:21.640 loading configuration from 'D:\WINDOWS\system32

\dns\etc
\named.conf'
01-五月-2010 6:58:21.640 D:\WINDOWS\system32\dns\etc\named.conf:3: change

direct
ory to 'C:\Windows\system32\dns\etc' failed: file not found
01-五月-2010 6:58:21.640 D:\WINDOWS\system32\dns\etc\named.conf:3: parsing

faile
d
01-五月-2010 6:58:21.640 load_configuration: file not found
01-五月-2010 6:58:21.640 loading configuration: file not found
01-五月-2010 6:58:21.640 exiting (due to fatal error)

D:\WINDOWS\system32\dns\bin>dig www.google.com

; <<>> DiG 9.7.0-P1 <<>> www.google.com
;; global options: +cmd
;; connection timed out; no servers could be reached
我系统XP SP3,tcpip192.168.1.114,255.255.255.0,网关192.168.1.1,dns8.8.8.8,202.102.192.68

 另外请教一个问题srvany,怎么在XP上用,需要下载什么安装文件。麻烦红薯大哥告诉我,详细点

感谢了

0
l
liujf191

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

大哥再求助一下,是剪切还是复制,剪切了rndc.conf少了这个部分,named.conf多了这个.

复制的话是rndc.conf不变,named.conf多了.

我是菜鸟,希望大哥帮帮我,谢谢你的无私奉献.

0
l
liujf191

// 根DNS
zone "." {
type hint;
file "named.root";
};

这个是不是这样的,少了IN 。

zone "." IN {
type hint;
file "named.root";
};

0
郭大侠
郭大侠

因无法抵挡诱惑,决定下载source code试试。

0
f
formater

引用来自“liujf191”的帖子

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

大哥再求助一下,是剪切还是复制,剪切了rndc.conf少了这个部分,named.conf多了这个.

复制的话是rndc.conf不变,named.conf多了.

我是菜鸟,希望大哥帮帮我,谢谢你的无私奉献.

 复制和剪切是一回事,因为在那个文件里面都被注释掉了

0
m
moe271828

行之有效,比文档好懂多了

0
G.
G.

在 windows 下, 也只能是玩玩 一下而已,

有谁又会真的用 windows 来架这种基础的服务.

0
刘文豪
刘文豪
家里架设来缓存DNS,加快访问!酷
0
烂泥行天下
烂泥行天下
过来 看看 学习一下……
返回顶部
顶部