社区应用 最新帖子 精华区 社区服务 会员列表 统计排行
  • 410阅读
  • 1回复

[分享]如何快速打造本地DNS服务器

楼层直达
z3960 
级别: FLY版主
发帖
786882
飞翔币
211602
威望
215717
飞扬币
2618964
信誉值
8


DNS可以完成对域名的解析服务,是畅游网络的“交通要道”,所以不少网络运营商借机在其中植入广告以赢取私利,为此很多用户不得不改用第三方的DNS服务器。不过现在第三方的DNS服务也经常受到各种干扰,那么又该如何解决呢?
  设置自建DNS服务器的参数
  要想解决上述问题,最简单的方式就是在本地电脑系统自建一个DNS服务器,不过这对普通用户来说很难,我们不妨借助一些工具软件来完成,比如DNSAgent(下载地址:tinyurl.com/nssyjvc,需微软.NET Framework 4.5支持)。
  下载上述软件并解压,用文本编辑器打开其中的Options.cfg文件,可以看到该工具默认使用的是谷歌的DNS服务器(图1)。可以根据需要修改为自己常用的DNS服务器,比如114DNS(114.114.114.114)、阿里DNS(223.5.5.5)、OpenDNS(208.67.222.222)等。修改完成后对配置文件进行保存,再运行文件夹中的DNSAgent.exe文件,该工具就开始在系统后台工作了(图2)。

  小提示:
  ★由于DNSAgent使用了DNS压缩指针技术,所以并不是所有的DNS服务器都支持该技术。
  ★由于DNSAgent需要运行才可以进行解析服务,所以用户可以运行文件夹中的Install.bat文件。这样就会在系统中添加一个启动服务,从而使得DNSAgent在系统运行的时候自动启动运行。如果不需要再使用这款工具了,也可以运行Uninstall.bat文件,来删除对应的启动服务。
  DNS服务转移到本地
  接下来打开Windows的“控制面板”,点击“网络和Internet”下面的“查看网络状态和任务”命令,在弹出的对话框中点击左侧的“更改适配器设置”命令,然后打开系统的“网络连接”窗口。如果用户是通过路由器上网的,那么就选择列表中的“以太网”项。如果用户还是使用传统的拨号上网方式,那么就选择列表中的拨号连接即可。
  选中自己的网络连接后,右击它,选择“属性”,在弹出的窗口列表中选择“Internet 协议版本 4”项。点击下面的“属性”按钮后,在弹出窗口的“首选DNS服务器”选项中,将其设置为127.0.0.1即可(图3)。以后所有系统发出的域名解析请求,就会经过该工具的处理后,再发送到设定的DNS服务器进行处理。接下来工具将DNS服务器的解析数据存放到本地系统中,这样当用户下一次访问同一个网站域名的时候,就不需要再向DNS服务器发送解析请求了,将直接调用还存储在本地系统的解析信息即可。这样一来就避免了DNS信息被干扰的可能。

  提效率,为不同网站定制解析服务
  除了域名解析,DNSAgent还有很多比较实用的网络功能。如针对不同的网站域名,可以使用不同的DNS服务器进行解析,国外的网站域名使用谷歌DNS,国内的网站域名使用114DNS等。不过要想使用这个功能的话,需要自己编写相应的规则才行。现在通过文本编辑器打开DNSAgent中的rules.cfg文件,按照下面的格式来编写几行代码即可。
  {
  "Pattern": "^(.*\.)?baidu\.com$",
  "NameServer": "114.114.114.114"
  },
  这几行代码的意思就是,当访问含有baidu.com信息的网站域名的时候,就使用114.114.114.114这个DNS服务器进行域名解析。虽然这个规则使用了正则表达式,依葫芦画瓢也是可以完成的。但是对于普通用户来说还是比较繁琐,所以下面我们利用网友制作的网站规则,进行转换后就可以为我所用了。
  首先通过浏览器访问tinyurl.com/mac5gh4,在列表中找到accelerated-domains.china.conf项并点击它,在弹出的网页中就可以看到网友制作的网站规则(图4)。

  现在点击“Raw”按钮后打开一个网页,接着点击鼠标右键选择菜单中的“全选”命令,将所有的网站规则都复制下来,接着在浏览器中访问tinyurl.com/m6cnymo,将刚刚复制下来的网站列表粘贴到左侧列表中,然后点击左上角的“Convert”按钮,在右侧列表中就可以看到转换好的网站规则了。点击右上角的“Select Results”按钮,自动选中转换完成的规则(图5)。

  接下来点击鼠标右键将其复制粘贴到一个文本编辑器中,再将开头的“[”和结尾的“]”符号删除。最后将这些编辑后的规则,粘贴到rules.cfg文件最后一个“]”符号之前就可以了(图6)。

  小提示:
  由于规则默认使用的是114.114.114.114这个DNS服务器,用户也可以根据需要将其批量替换为其他的DNS服务器地址。
  替代hosts更方便
  Windows系统的hosts不仅可以直接进行域名解析,还可以起到过滤广告的作用,但是现在要想修改系统中的hosts文件,首先需要获得系统的管理员权限才可以,操作上有些繁琐。而现在DNSAgent工具就可以通过类似的功能替代hosts文件,从而减少系统权限获取等操作,而且以前一个域名就需要编写一条规则,DNSAgent则可以通过一条规则替代hosts文件中的多条规则,从而减少大量规则输入的麻烦。
  以亚马逊为例,现在很多用户喜欢到亚马逊的美国站进行海淘,我们就可以通过修改hosts中的信息,让其直接连接到亚马逊的美国服务器而非中国的服务器,从而避免我们在不同的站点之间进行切换。首先右击“开始”,点击“命令提示符(管理员)”启动它,在其中输入“ping www.amazon.com”并按下回车键,可以得到服务器对应的IP地址。接着用文本编辑器打开DNSAgent中的rules.cfg文件,输入下面的一段代码并保存就可以了。这段代码表示只要访问域名包括http://www.amazon.com/的链接,就直接连接到205.251.242.103]这个服务器IP地址(图7)。

  {
  "Pattern": "www\.amazon\.com$",
  "Address": "205.251.242.103]"
  }
 
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。
z3960 
级别: FLY版主
发帖
786882
飞翔币
211602
威望
215717
飞扬币
2618964
信誉值
8

只看该作者 1 发表于: 2016-10-26

在访问网站的过程中,我们或许经常会遭遇无法访问网页的现象,遇到这种现象时,相信多数人会下意识地认为是网络掉线,或者是目标网站的服务器出现了问题,可是在一番仔细排查之后,网页无法打开的现象并不是由这些因素引起的,那么究竟是什么原因让网页内容无法打开呢。
  事实上,在网络连接以及目标服务器都正常的情况下,造成网页无法打开现象最可能的原因就是DNS服务发生了意外,导致网站地址被无法正常解析,而且DNS服务运行不正常的现象十分常见。那么我们如何能够在最短的时间内确认网页打开故障就是DNS服务引起的呢,遇到DNS服务运行不正常时,我们又该如何让DNS服务快速恢复常态呢?下面,本文就从DNS服务运行不正常的现象、判断以及应对出发,来让DNS服务尽快恢复常态!
  通常情况下,我们访问某个目标网站时都是通过输入形如“www.3lian.com”格式的网址来完成访问任务的,这个网址其实也是目标网站的域名;但是,我们知道主机与主机之间相互访问、通信时,都是通过IP地址来相互识别、确认的,这么说来我们只有知道了目标网站的IP地址才能够成功地打开该网站。不过,考虑到IP地址不便于记忆,因此我们几乎都以域名的形式来访问网站内容,输入的网站地址往往会被指定的DNS服务器自动解析翻译成IP地址;能够提供DNS服务功能的服务器可以是本地计算机,也可以是网络中特定的一台计算机,但是一旦DNS服务器运行不正常,无法为用户提供地址解析服务或者将域名解析成错误的IP地址时,我们就无法通过网站域名的形式打开目标站点的页面内容了。DNS服务运行不正常的最明显现象就是访问目标网站的IP地址时正常,访问它的网站域名时就会发生错误。
  在遇到网页内容无法打开,并且怀疑DNS服务运行不正常时,我们首先要做的事情就是利用Windows系统自带的nslookup命令来确认一下本地的DNS服务是否真的运行不正常,下面就是确认DNS服务运行是否正常的具体操作步骤:
  首先在本地工作站系统桌面中打开“开始”菜单,并执行其中的“运行”命令,从弹出的系统对话框中输入字符串命令“cmd”,单击“确定”按钮后,将系统屏幕切换到MS-DOS命令行工作模式;
  其次在DOS命令行中输入字符串命令“nslookup -q=ns www.45it.com”,单击回车键后要是在地址解析过程中DNS服务运行不正常的话,那我们会在结果界面中只看到“DNS request timed out,timeout was 2 seconds”这样的提示信息。
  在确认网站内容无法打开是由于地址不能被解析后,我们下一步要做的工作就是检查一下本地工作站所使用的DNS服务器自身是否运行正常,如果DNS服务器运行不正常的话,DNS服务当然无法为网站地址提供解析服务了。在检查DNS服务器自身是否运行正常时,我们可以按照如下步骤来进行:
  首先按照前面的操作步骤,将系统运行状态切换到MS-DOS命令行窗口,在该窗口的命令提示符下输入字符串命令“ipconfig /all”,单击回车键后,打开如图2所示的结果界面, 对应DNS SERVERS位置处的信息就是本地工作站所使用的DNS服务器地址,比方说这里的DNS服务器地址就是“61.177.7.1”;
  其次根据IP地址来判断DNS服务器是位于内网还是外网,例如笔者在这里指定的DNS服务器位于外网,因此当我们发现使用该DNS服务器无法正常解析网站地址时,不妨进入到本地工作站的TCP/IP属性设置窗口,将DNS地址更换成其他能够运行正常的DNS服务器地址,就能解决无法打开网页的问题了;要是指定的DNS服务器位于内网,那么在使用该DNS服务器无法正常解析网站地址时,就可以请单位网络管理人员检查一下局域网内部的DNS服务器是否运行正常,只要解决了DNS服务器的运行故障,一般就能够顺利解决网页无法打开故障了。
  当以网站域名形式访问目标站点页面内容时,本地工作站并不一定都要寻求DNS服务器的帮助,因为有的工作站事先已经把频繁访问站点的域名和IP地址对应关系保存到本地的HOSTS文件中了,所以当本地工作站访问某个目标站点的域名时往往会自动先查看本地的HOSTS文件,如果该文件中包含目标站点的域名和IP地址对应关系,那么目标站点的网站地址就能够被顺利解析了。根据上面的分析思路,我们可以用手工方法将那些无法打开网页内容的站点域名和IP地址对应关系添加到本地的HOSTS文件中,以便实现成功解析目标站点的目的,下面就是往HOSTS文件中手工添加目标站点域名和IP地址对应关系的具体操作步骤:
  首先打开本地工作站系统的资源管理器窗口,并在该窗口中依次展开“x:windowssystem32driversetc”文件夹,在对应“etc”子文件夹窗口中找到HOSTS文件,当然我们也可以依次执行“开始”/“搜索”命令,来通过文件搜索的方法找到目标HOSTS文件;
  其次用记事本之类的文本编辑程序打开HOSTS文件,在随后弹出的文件编辑窗口中我们可以一目了然地看到HOSTS文件中所有的站点域名和IP地址对应关系了,在缺省状态下该文件只包含“127.0.0.1 localhost”这一行内容,其中开头带“#”的行都不是有效的内容,只是具体的帮助信息而已;
  接下来我们就可以将那些无法访问的站点解析条目手工输入添加到本地HOSTS文件中了,具体添加格式应该是先输入目标站点域名所对应的IP地址,之后输入空格并连接具体的域名信息,比方说笔者在这里手工添加了“61.129.51.27 www.45it.net”;在确认信息输入正确后,再依次执行文件编辑窗口中的“文件”/“保存”命令,将上面输入的内容按原名保存后,如此一来我们日后就能顺利将目标网站的域名解析成IP地址了。
  当我们以域名形式访问过目标网站后,该网站的域名和IP地址对应关系就会自动保存到本地工作站的DNS缓存列表中,日后IE浏览器会优先访问DNS缓存列表中的信息,不过一旦此时目标站点的域名和IP地址对应关系发生变动的话,DNS缓存列表中的对应解析记录不会跟着同步变化,那么日后我们再次以域名形式访问目标站点时就容易发生DNS解析不成功的故障。这个时候,我们可以通过刷新本地DNS缓存列表的方法来解决网页无法打开的故障,下面就是具体的刷新本地DNS缓存列表的操作步骤:
  首先在本地工作站系统桌面中打开“开始”菜单,并执行其中的“运行”命令,从弹出的系统对话框中输入字符串命令“cmd”,单击“确定”按钮后,将系统屏幕切换到MS-DOS命令行工作模式;
  其次在DOS命令行中,输入字符串命令“ipconfig /flushdns”,单击回车键后,我们将从如图4所示的结果界面中看到“successfully flushed the dns resolver cache”这样的提示, 这就意味着本地工作站DNS缓存列表中的信息已经被成功刷新了。之后,我们重新以域名形式访问目标站点时,相信目标网站的页面内容就能被正确打开了。
  遇到DNS服务运行不正常的现象是常有的事情,面对这种故障现象我们只要依照本文所提供的应对要决进行逐一尝试,相信DNS解析错误故障一定会快速被排除掉。
我不喜欢说话却每天说最多的话,我不喜欢笑却总笑个不停,身边的每个人都说我的生活好快乐,于是我也就认为自己真的快乐。可是为什么我会在一大群朋友中突然地就沉默,为什么在人群中看到个相似的背影就难过,看见秋天树木疯狂地掉叶子我就忘记了说话,看见天色渐晚路上暖黄色的灯火就忘记了自己原来的方向。