在Windows下部署Unbound本地DNS服务
这篇文章主要讲如何在Windows系统下利用Unbound部署本地DNS服务
部署本地的DNS的意义
一般情况下,我们使用的DNS是由ISP提供的,但是很多无良的ISP提供的DNS服务或多或少的都有hijacking行为(将无法解析的域名劫持到一个广告页面上),让人很是恼火。有人为了防止DNS hijacking,使用了一些第三方的DNS,比如OpenDNS和Google Public DNS。但是这样又带来一个问题,那就是会导致一些部署了CDN的 网站速度变慢甚至无法访问。究其原因,是因为CDN是通过你查询的DNS的位置来判断你的位置的,大多数第三方DNS都是海外服务器,这样会导致CDN认 为你在海外,于是给你的DNS返回海外的IP。尤其是中国的电信和联通这两个世界上最远的网络,使用海外DNS服务使得CDN根本无法判断你是电信还是联 通用户,其速度可想而知。因此,部署本地DNS可以完美的解决这两个问题。
部署步骤
- 在这里下载一个Unbound的Windows安装包:http://unbound.net/download.html, 然后安装。这里需要注意的是,对于Vista/7用户,建议不要把Unbound安装在C:\Program Files下面,原因有二:1、这个路径里有空格,会使命令行处理起来很麻烦;2、由于UAC的权限,在这个路径里修改配置文件会变得十分麻烦。安装的时 候把所有的组件都选上。
- 这里假定安装路径为D:\Unbound,进入这个目录。对于Windows系统来讲,Unbound
是以服务的方式运行,因此它的配置文件就是安装目录下的“service.conf”。你在“控制面板\所有控制面板项\管理工具”的“服务”里可以看到一个名叫“Unbound DNS validator”的服务,你可以在这里对进行关闭、打开、重启的操作。 - 在这里:ftp://ftp.internic.net/domain/named.cache 下载一个根域名服务器的缓存列表,文件名也是“named.cache”,将其拷贝到Unbound的安装目录下。
- 在原有的service.conf后面追加如下内容:(请根据你的实际安装路径修改第二行)
1234567891011server:directory: “d:\Unbound”# file to read root hints from.# get one from ftp://FTP.INTERNIC.NET/domain/named.cacheroot-hints: “named.cache”# if yes, perform prefetching of almost expired message cache entries.prefetch: yesdo-ip4: yesdo-ip6: nodo-udp: yesdo-tcp: yes
- 重启Unbound DNS validator服务。将你的DNS设置成127.0.0.1,然后用nslookup命令测试。
需要说明的问题
- 本地DNS不能对抗GFW的DNS干扰,因为GFW的DNS干扰是在你查询根域名服务器的时候完成的,和ISP无关。ISP搞的是DNS hijacking,这种方法可以完美的解决DNS hijacking问题,而且不会让CDN误判你的位置。
- 本地DNS服务可能会消耗你一部分系统资源,所以请权衡。另外由于个人电脑经常关机会导致DNS Cache基本上失效了,因为这玩意是给服务器设计的。
补充
Unbound是支持DNSSEC的,这样就更加提高了安全性。注意你的service.conf中的这两句:
1
2
3
|
server: auto-trust-anchor-file: “D:\Unbound\root.key”
server: dlv-anchor-file: “D:\Unbound\dlv.isc.org.key”
|
你可以利用这个网站来测试你是否被DNSSEC保护:http://dnssectest.sidn.nl/,点击“Do the test”按钮后,如果出现一个绿色对号就说明你已经在DNSSEC的保护之下。
Unbound DNS validator 开不起来