Windows下用bind架设自己的DNS服务器
相信有很多人都想架设自己的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