级别:初级
文章索引:
--前言
--系统环境
--使用软件
--具体步骤
----bind 软件的下载与安装
----bind 的配置与运行
----使用自建 dns 服务器
----错误分析
--后记
--相关链接
文章固定链接:http://anyhack.cn/?p=16前言:
为什么写这篇文章?
笔者就职于一家公司,平时的上网都是通过公司局域网内部的dhcp服务器获取动态 ip 以及 dns。而公司内部为了限制员工对某些娱乐网站的访问,启用了dns屏蔽的功能,也就是对某些特定的娱乐网站(如开心农场、在线网页游戏)的域名进行不正确的转向。于是就导致了在公司内部无法访问一些特定网站。
对于以上问题,网友可能有解决办法就是将本机 dns 更改成其他可以正常解析的 dns 服务器。但是根据笔者测试,公司已经对一些常用的可以正常解析的 dns 服务器进行了屏蔽,比如谷歌的 dns 服务器 8.8.4.4 以及 opendns 的服务器 208.67.222.222 208.67.220.220 。所以使用其他dns服务器进行正常解析的方法行不通。经过一番探查发现,公司并没有屏蔽世界上的13个根域名服务器,所以我们就可以采用在本机架设 dns 服务器的方法来逃过公司内部的 dns 劫持。于是就有了这篇文章。
系统环境:Windows Xp Sp3
使用软件:BIND 9.6.1-P2 for Windows XP/2003/2008
具体步骤:1.1,首先访问 ISC BIND 主页获取 BIND 安装包。ISC BIND 主页(点击此链接),直接的下载地址(点击此链接)。如果上述地址无法下载,请到 此地址(点击此链接)自行选择版本进行下载。
1.2,将你所下载的BIND9.6.1-P2.zip解压。运行其中的BINDInstall.exe,我们将可以看到BIND 9 Installer的窗体。其中Target Directory选项指的是程序安装目录,你可以设置成你喜欢的目录。由于BIND默认情况下是以Windows系统服务的方式实现开机启动,所以需要在下面的Service Account相关信息中填入启动此服务的帐号和密码,BIND会帮你在系统中创建相应的帐号并设置密码。如果你不想创建新的用户,也可以在那里填写本机已有帐号。
1.3,点击Install按钮。如果你在前面设置了已有帐号启动BIND服务,或许会弹出对话框“Choosen account has too many privileges ......”,这时你只要选择“否”,即可进行安装。等待弹出“BIND installation completed successfully”,此时表明BIND 安装完毕。然后点击“Exit”按钮退出安装程序。
2.1,打开安装时所选择的Target Directory,默认为“C:\WINDOWS\system32\dns”。你可以看到2个文件夹“bin”与“etc”,“bin”文件夹包含了BIND运行与配置所需要的可执行文件,“etc”文件夹包含了BIND运行与配置所需要的配置文件。
2.2,依次点击“开始”-“运行”,输入“cmd”然后敲击回车。在弹出的命令窗口中输入命令”cd C:\WINDOWS\system32\dns\bin“并回车,然后输入”rndc-confgen.exe -a“并回车。此时在”C:\WINDOWS\system32\dns\etc“文件夹中生成了”rndc.key“文件。在etc文件夹内新建rndc.conf文件,如果已经存在,你可以直接打开进行编辑。其中的内容如下:
key "rndc-key" {
algorithm hmac-md5;
secret "7WFhtHDL4cfXtAegFOwSIw==";
};
key "rndc-key" {
algorithm hmac-md5;
secret "7WFhtHDL4cfXtAegFOwSIw==";
};
options {
default-key "rndc-key";
default-server localhost;
default-port 953;
};
default-key "rndc-key";
default-server localhost;
default-port 953;
};
server localhost {
key rndc-key;
};
key rndc-key;
};
注意:此文件中的”#“符号之后的整行内容均为注释,在此并没有列出。
打开”rndc.key“文件,将其中的内容与rndc.conf的前几行进行对照,替换rndc.conf文件中”secrect“之后 引号之内的值。然后保存文件并关闭。
2.3,在etc目录中新建named.conf,其中内容如下:
key "rndc-key" {
algorithm hmac-md5;
secret "7WFhtHDL4cfXtAegFOwSIw==";
};
key "rndc-key" {
algorithm hmac-md5;
secret "7WFhtHDL4cfXtAegFOwSIw==";
};
zone "." {
type hint;
file "named.root";
};
type hint;
file "named.root";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "localhost.local";
allow-update { none; };
};
type master;
file "localhost.local";
allow-update { none; };
};
options {
directory "C:\WINDOWS\system32\dns\etc";
};
directory "C:\WINDOWS\system32\dns\etc";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
和上边一样,我们需要替换“secret”字符后 引号之内的值,同样以rndc.key内的值为准。
etc目录下新建named.root文件,内容如下:
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . "
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC
; under anonymous FTP as
; file /domain/named.root
; on server FTP.INTERNIC.NET
; -OR- RS.INTERNIC.NET
;
; last update: Dec 12, 2008
; related version of root zone: 2008121200
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30
;
; FORMERLY NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201
;
; FORMERLY C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; FORMERLY TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; FORMERLY NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; FORMERLY NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F
;
; FORMERLY NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; FORMERLY AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235
;
; FORMERLY NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; OPERATED BY VERISIGN, INC.
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30
;
; OPERATED BY RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1
;
; OPERATED BY ICANN
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42
;
; OPERATED BY WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35
; End of File
; This file holds the information on root name servers needed to
; initialize cache of Internet domain name servers
; (e.g. reference this file in the "cache . "
; configuration file of BIND domain name servers).
;
; This file is made available by InterNIC
; under anonymous FTP as
; file /domain/named.root
; on server FTP.INTERNIC.NET
; -OR- RS.INTERNIC.NET
;
; last update: Dec 12, 2008
; related version of root zone: 2008121200
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30
;
; FORMERLY NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201
;
; FORMERLY C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12
;
; FORMERLY TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90
;
; FORMERLY NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10
;
; FORMERLY NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241
F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2F::F
;
; FORMERLY NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4
;
; FORMERLY AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53
H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803F:235
;
; FORMERLY NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17
;
; OPERATED BY VERISIGN, INC.
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30
J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30
;
; OPERATED BY RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129
K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7FD::1
;
; OPERATED BY ICANN
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42
L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42
;
; OPERATED BY WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
M.ROOT-SERVERS.NET. 3600000 AAAA 2001:DC3::35
; End of File
同时,你也可以去 http://www.internic.net/ 下载 named.root文件,以 http://www.internic.net/zones/named.root 中的内容为准。
etc目录下新建localhost.zone文件,内容如下:
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
$TTL 86400
$ORIGIN localhost.
@ 1D IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS @
1D IN A 127.0.0.1
1D IN A 127.0.0.1
etc目录下新建localhost.local文件,内容如下:
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
2.4,依次打开“控制面板”-“管理工具”-“服务”,然后找到名称为“ISC BIND”的服务,右键单击,选择启动。如果没有发生错误,那么恭喜你你已经成功的配置并运行了BIND。如果你遇到了错误,请查阅此文章的错误分析章节。
依次打开“控制面板”-“网络连接”,选择你正在使用的网卡,右键单击选择属性。单击Internet 协议 (tcp/ip)选择 属性 ,在弹出的窗体中,将“首选dns设置成 ”127.0.0.1“,依次点击确定即可。最后禁用你刚才更改的那个网络连接,然后启用(右键修复此链接也可)。等待连接成功,如果没有发生错误,那么你就可以打开浏览器,尽情享用自建dns带来的快乐了。
在配置与运行的过程中肯定会遇到一些意外,下面是我所遇到的意外问题以及解决办法。
4.1,dns服务器无效。如果你打开浏览器,发现无法访问网页,并且在cmd命令行中运行”nslookup“也无法连接到本地的dns服务器,并且你的ISC BIND 服务可以正常启动,那么通常情况下,属于dns配置错误。你可以依次打开”控制面板“-”管理工具“-”事件查看器“,查看应用程序日志中来源为”named“的错误日志,尝试解决。你也可以在本文的回复中粘贴你的错误信息,笔者将很荣幸能够为你提供帮助。
4.2,无法启动服务。 无法启动服务的原因有很多种,分别存在于权限和配置两个方面。
如果你在启动服务的时候提示由于密码错误而无法启动,右键单击ISC BIND服务,选择属性。单击“登录”标签,更改相应账户的密码并尝试启动它。如果仍然由于密码错误而无法启动,你也可以尝试将登录身份修改为“本地系统帐户”,然后尝试启动。
如果你在启动服务的时候提示程序意外终止,那么很有可能是你对BIND配置文件夹(Target Directory)的权限设置错误。如果配置文件夹所在的磁盘属于“ntfs”分区,并且没有启用文件夹选项中的”启用简单文件共享“功能。那么,你需要把 BIND配置文件夹的权限 对 ISC BIND服务的登录帐户 设置为 ”完全控制“。
如果你确定你已经配置好了相应的内容,却依然服务启动服务,请参照4.1章节的解决办法。
后记:这篇文章仅仅是为计算机初学者准备,帮助初学者在Windows Xp平台上架设自己的dns服务器,并没有过多涉及到 dns 协议、dns服务器配置的详细内容。如果你需要关于dns 协议、dns服务器配置等内容,可以参照下面的链接。
相关链接:internic http://www.internic.net/
ISC BIND https://www.isc.org/software/bind
dns 基础相关以及Windows Server 2003上的DNS服务配置 http://www.wumingx.cn/post/dns.html
Red Hat Linux 9 BIND 配置 http://www.embeded.cn/online/rhl-cg-zh_CN-9/ch-bindconf.html
注意:本文中列出的链接,笔者不保证其内容的可用性以及站点的安全性,请读者酌情处理。



0 评论:
Post a Comment