特性:
1.高性能,比所有流行的开源 DNS 软件性能高出2倍以上
2.安全,能抵御一般攻击
3.稳定性,有效降低解析失败率
4.主动刷新缓存,响应速度更快
5.易于扩展,非常容易部署
6.防污染,能够正确解析被污染域名
近日,在重装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系统服务就行了,工作量应该很小。
1、 安装DNS服务开始—〉设置—〉控制面板—〉添加/删除程序—〉添加/删除Windows组件—〉“网络服务”—〉选择“域名服务系统(DNS)”—〉按确定进行安装
2、 创建DNS正相解析区域
开始—〉程序—〉管理工具—〉选择DNS,打开DNS控制台—〉右击“正相搜索区域”—〉选择“新建区域”—〉选择“标准主要区域”(或“Active Directory 集成区域”或“标准辅助区域”)--〉输入域名“abc.com” —〉输入要保存的区域的文件名“abc.com.dns”— 〉按完成,完成创建
创建主机记录等:
右击“abc.com”—〉“新建主机” —〉在名称处输入“www”,在“IP地址”处输入“192.168.0.3”,—〉按“添加主机”完成
3、 创建DNS反向解析区域
开始—〉程序—〉管理工具—〉选择DNS,打开DNS控制台—〉右击“反向搜索区域”—〉选择“新建区域”—〉选择“标准主要区域”—〉输入用来标示区域的“网络ID”—〉输入要保存的区域的文件名“0.168.192.in-addr.arpa.dns”—〉按完成,完成创建
创建指针PTR:
右击“192.168.1.x.subnet”—〉选择“新建指针”—〉在“主机IP号”中输入2—〉在“主机名”中输入ftp—按 “确定”完成添加
4、 启用DNS循环复用功能
如www.abc.com对应于多个IP地址时DNS每次解析的顺序都不同
右击选择“DNS服务器”—〉属性—〉高级—〉选择“启用循环”(round robin)--〉选择“启用netmask 排序”—〉按“ 确定”返回
注:如所有的IP和域名服务器在同一子网时需要取消“启用netmask排序”,才能实现循环复用功能。即启用循环时 ,当主机的IP和dns在同一个子网时将始终排在最前面,当都在一个子网时就不进行循环,只有去除了“启用netmask排序” 时才能实现循环复用。
DNS服务器会优先把与自己的网络ID相同的记录返回给客户端
5、 创建标准辅助区域,实现DNS区域复制
在另一台DNS服务器上,右击“正向搜索区域”—〉选择“新建区域”—〉选择“标准辅助区域”—〉输入“abc.com”—〉输入主域名服务器的IP地址—〉选择“完成”
可手工要求同步:
在辅域名服务器上右击“abc.com”的域—〉选择“从主服务器传输”
并且可以设置允许传输的域名服务器:
在主域名服务器上右击“abc.com”的域—〉选择“属性”—〉选择“区域复制”—〉在“允许复制”前打勾,并选择允许复制的主机(到所有服务器、只有在“名称服务器”选项卡中列出的服务器、只允许到下列服务器)
完成服务器类型的转换:
右击区域—〉选择 “属性”—〉选择“类型”的“更改”按钮—〉选择要更改的区域类 型—〉按“确定”
6、 实现DNS唯高速缓存服务器
创建一个没有任何区域的DNS服务器—〉右击DNS服务器—〉选择“属性”—〉选择“转 发器”中的“启用转发器”—〉输入转发器的IP地址—〉按“确定”完成
清除“唯高速缓存”中的cache内容:
右击“DNS服务器”—〉选择“清除缓存”
或者选择“DNS服务器”—〉在菜单中选择“查看”,高级—〉右击“缓存的查找”—〉选择“清除缓存”
(客户端清空DNS缓存—)ipconfig /flushdns)
7、 DNS的委派(子域的转向)
在原域名服务器上建立“subdomain.abc.com”的主机—〉右击abc.com的域,选择“新建委派”—〉将subdomain.abc.com的域代理给subdomain.abc.com的主机—〉在subdomain.abc.com上建立“正向标准区域”subdomain.abc.com—〉添加相关主机记录
8、 设置 DNS区域的动态更新
右击选择DNS上区域—〉选择“属性”—〉选择“常规”中的“允许动态更新”,选是— 〉然后按 “确定”—〉在本机的DHCP服务器中—〉右击选择DHCP服务器—〉选择“属性”—〉选择“DNS”—〉选择“为不支持动态更新的DNS客户启用更新”—〉在客户端使用ipconfig /registerdns来更新域名的注册信息
注意客户端需要将完整的计算机名改成myhost.abc.com
9、 配置DNS客户端
在客户端计算机上打开tcp/ip属性对话框,在dns服务器地址栏输入dns服务器的ip地址
手工配置最多可配置12个 DNS服务器 .
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)