微软已经改变了DNS向内存装载区域数据的方式。有时候,DNS服务器装载存储在主动目录服务中的非常庞大的区域数据需要一个小时或者更多的时间。这个结果是DNS服务器不能及时地为用户的要求提供服务。
微软已经改变了在Windows Server 2008中的DNS服务器的做法。现在,Windows Server 2008平台上运行的DNS服务器在重新启动的时候就装载来自主动目录的区域数据,因此,它能够对客户向DNS服务器提出的其它区域的请求做出反应。例如,如果在DNS服务器中创建了100区域,它在装载其它区域的数据的时候,前三个区域的数据能够正确地装载,这个DNS服务器能够对访问前三个区域的客户请求做出反应。
因为采用单独的线程执行装载区域数据的任务,这个DNS服务器在装载区域数据的.同时能够对请求做出反应。
当DNS服务器启动的时候,它能够:
* 列举要装载的全部区域
* 首先装载根索引
* 装载全部基于文件的区域
* 开始回应来自客户计算机的DNS请求
* 创建单独的线程,这样,来自客户机的DNS请求就能够按预期得到服务
工作原理
如果一台客户机要求得到已经装载的在一个区域的主机数据,这台客户机便向DNS服务器发送一个DNS请求,这个DNS服务器就用这个数据进行回应。
如果这个请求是要求得到还没有装载到内存的区域,这台DNS服务器将读取主动目录中的区域数据并且按照预期为这个请求服务。
如何实现这个功能?
你需要使用与Windows Server 2008(任何版本)一起推出的DNS。
Windows系统Hosts文件的作用很多用户都知道在Window系统中有个Hosts文件(没有后缀名),在Windows98系统下该文件在Windows目录,在Windows2000/XP系统中位于C:\Winnt\System32\Drivers\Etc 目录中。该文件其实是一个纯文本的文件,用普通的文本编辑软件如记事本等都能打开。
用记事本打开hosts文件,首先看见了微软对这个文件的说明。这个文件是根据TCP/IPforWindows的标准来工作的,它的作用是包含IP地址和Host name(主机名)的映射关系,是一个映射IP地址和Hostname(主机名)的规定,规定要求每段只能包括一个映射关系,IP地址要放在每段的最前面,空格后再写上映射的Host name(主机名)。对于这段的映射说明用“#”分割后用文字说明。
现在让我们来看看Hosts在Windows中是怎么工作的。
我们知道在网络上访问网站,要首先通过DNS服务器把网络域名(www.XXXX.com)解析成61.XXX.XXX.XXX的IP地址后,我们的计算机才能访问。要是对于每个域名请求我们都要等待域名服务器解析后返回IP信息,这样访问网络的效率就会降低,而Hosts文件就能提高解析效率。根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有再向已知的DNS 服务器提出域名解析。也就是说Hosts的请求级别比DNS高。
知道了Hosts文件的工作方式,那在具体使用中它有哪些作用呢?
1、加快域名解析
对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,这样当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。
2、方便局域网用户
在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务要输入难记的IP地址,对不少人来说相当麻烦。现在可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候我们输入这个服务器的名字就行了。
3、屏蔽网站
现在有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错误的IP或自己计算机的IP,这样就不用访问了。我们在Hosts写上以下内容:
127.0.0.1#屏蔽的网站
0.0.0.0#屏蔽的网站
这样计算机解析域名就解析到本机或错误的IP,达到了屏蔽的目的。
4、顺利连接系统
对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。
最后要指出的是,Hosts文件配置的映射是静态的,如果网络上的计算机更改了请及时更新IP地址,否则将不能访问。
近日,在重装Windows 10系统之后,发现Edge浏览器无法登录微软账号做数据同步,具体表现为登录页面无法打开。此前,通过浏览器访问hotmail等页面的时候,也经常发生页面无法打开或者打开及其缓慢的情况,只是这次彻底打不开了,甚是烦人。经过反复摸索,最终通过bing搜索发现原来是国内DNS解析的问题,将系统的DNS服务器设置为4.2.2.2和4.2.2.1之后问题顺利解决,这两个域名解析服务器是微软面向全球的免费DNS服务器,使用这个DNS服务器以后,微软的服务不仅能打开了,而且访问速度还飞快。可是使用微软DNS的几天后,发现淘宝的访问有问题了,淘宝网站打不开,通过浏览器的调试工具发现原来是g.alicdn.com的域名解析出问题,随即将系统的DNS服务器重置为运营商的服务器之后,问题解决。至此,一个鱼与熊掌不可兼得的问题出现了,使用微软的DNS可以快速访问微软服务,但访问部分国内站点有问题;使用国内运营商的DNS,国内站点访问正常,但是微软等部分国外站点访问有问题。于是心中涌现出一个疑问,有没有一个解决方案,可以在访问国外站点的时候,使用微软的DNS服务器,而访问国内站点的时候使用运营商的DNS呢,终于皇天不负有心人,这个方案还真被我找到了。
方案的基本思路是,在Linux系统上通过DNSmasq,自己搭建一个DNS服务器,而DNSmasq允许为不同的域名配置不同的DNS服务器,这样就完美解决了我的问题。DNSmasq是一个非常小巧的开源软件,提供DHCP、DNS以及TFTP等很多功能,正因为其小巧、且功能强大,Openwrt系统采用它来作为DHCP及DNS服务器,而恰好笔者在网上有这么一台Openwrt的服务器。Openwrt因为采用了图形化的配置方式,因此完成上述功能的配置也非常的简单,具体见下图:
图中,关键设置的部分已经用红框标出,其中,“DNS转发”设置就是为不同的域名设置不同的解析服务器。因为笔者是希望面向外网提供DNS服务,因此“仅本地服务器”选项并未勾选。
做完上述配置后,只需要将系统的DNS服务器指向openwrt服务器就大功告成了。需要提醒的是:
如果像笔者一样,需要从外网访问DNS服务器,则需要打开openwrt的防火墙,允许从外网接口,访问TCP、UDP协议的53号端口;如果openwrt服务器本身就是局域网的出口路由器,则不需要上述防护墙的设置。
有关在Linux系统上dnsmasq的安装和配置的信息,网络上有很多,这里不再赘述,有兴趣的读者可以自行搜索。
更进一步,这个方法虽然可以解决我的问题,但是毕竟需要另外一台机器充当dns服务器,不是每个人都像笔者一样,恰好在公网上有一台可以用于折腾的openwrt服务器。为此,笔者正在考虑自己写一个简单的DNS服务器,并注册成为系统服务,随系统启动而自动启动,幸运的是网络上有开源的DNS空间库:ARSoft.Tools.Net,在该库的基础上,笔者只需要编写代码将其封装成为windows系统服务就行了,工作量应该很小。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)