改了dns可以访问微软是什么问题
近日,在重装Windows 10系统之后,发现Edge浏览器无法登录微软账号做数据同步,具体表现为登录页面无法打开。此前,通过浏览器访问hotmail等页面的时候,也经常发生页面无法打开或者打开及其缓慢的情况,只是这次彻底打不开了,甚是烦人。经过反复摸索,最终通过bing搜索发现原来是国内DNS解析的问题,将系统的DNS服务器设置为4222和4221之后问题顺利解决,这两个域名解析服务器是微软面向全球的免费DNS服务器,使用这个DNS服务器以后,微软的服务不仅能打开了,而且访问速度还飞快。可是使用微软DNS的几天后,发现淘宝的访问有问题了,淘宝网站打不开,通过浏览器的调试工具发现原来是galicdncom的域名解析出问题,随即将系统的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空间库:ARSoftToolsNet,在该库的基础上,笔者只需要编写代码将其封装成为windows系统服务就行了,工作量应该很小。
DNS根服务器主要用来管理互联网的主目录,全世界只有13台。
1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。
1、 INTERNICNET(美国,弗吉尼亚州) 1984104
2、 美国信息科学研究所(美国,加利弗尼亚州) 12890107
3、 PSINet公司(美国,弗吉尼亚州) 19233412
4、 马里兰大学(美国马里兰州) 12881090
5、 美国航空航天管理局[NASA](美国加利弗尼亚州) 19220323010
6、 因特网软件联盟(美国加利弗尼亚州) 19255241
7、 美国国防部网络信息中心(美国弗吉尼亚州) 192112364
8、 美国陆军研究所(美国马里兰州) 12863253
9、 Autonomica公司(瑞典,斯德哥尔摩) 1923614817
10、 VeriSign公司(美国,弗吉尼亚州) 1925812830
11、 RIPE NCC(英国,伦敦) 193014129
12、 IANA (美国,弗吉尼亚州) 198326412
13、 WIDE Project(日本,东京) 202122733
0条评论