Windows 下使用国外 DNS 访问国内网站慢的解决方法

标题好像有点绕口,其实就是因为要科学上网而用国外 DNS,例如 OpenDNS 、Google 的 8888,8844,而国内有两个同行近在眼前却隔扇厚墙:联通和电信,而国内很多网站都是多线路自动分配联通还是电信的服务器IP给你,问题就是使用国外 DNS 无法判断……

这就造成使用国外 DNS 有时会出现你是电信用户扔给你联通服务器 IP,具体不说,会用国外 DNS 的朋友都懂的。这里主要说说解决办法。

如果你是 Linux 酱请移步到这里《使用国外 DNS 造成国内网站访问慢的解决方法

我是 Windows 重度中毒者,所以需要在 Windows 下的软件,搜来搜去找到的是 Dual DHCP DNS Server,因为没有中文版,也就没有中文说明,而且随便搜一下竟然没有一篇文章写如何设置……囧,只好自己摸索一下了。

Dual DHCP DNS Server

官方地址:http://dhcp-dns-server.sourceforge.net/

下载地址:http://sourceforge.net/projects/dhcp-dns-server/

What are DHCP and DNS servers

DHCP Server alots the IP addresses to computers, while DNS server resolves them.

You need DHCP Server if you do not want to manually maintain IP Addresses or
you have less IP Addresses than number of machines you have, as dynamic DHCP Server will
recycle IP Addresses on machines.

DNS Server is needed for resolving hostnames to their IP addresses. Normally your
ISP will provide you with DNS Service. You may have your own DNS Server, which will
resolve hostnames by forwarding them to ISP's DNS Server and cache the addresses also.

这软件支持 DHCP 和 DNS 服务的,我只要 DNS,下面是一些简单的设置说明,具体我也懒得去深入了解,反正只要解决我文章标题的问题就行了。(下面的说明都是假定你的电脑通过路由器上网,拨号的类似自行修改)

  1. 下载安装好(假定在 D:\DualServer)
  2. 进入 D:\DualServer 目录,用文本编辑器打开 DualServer.ini
  3. 找到 [SERVICES] 项部分,默认是开启 DHCP 和 DNS 服务的,因为我只要 DNS 功能,所以只开启 DNS 功能只要去掉 ;DNS 前面的英文分号 ;
  4. 继续找到 [FORWARDING_SERVERS] 项,这里是指定默认的 DNS 服务器,这里我用 Google 的,所以加上
    8.8.8.8
    8.8.4.4
  5. 然后就是重点了,找到 [CHILD_ZONES](注:6.95RC后改名为 [CONDITIONAL_FORWARDERS]),这里是针对关键字自定义 DNS 服务器的地方,下面说说格式
    - 拿淘宝网站来说明吧,淘宝一般的域名有:taobaocdn.com、taobao.com、tbcache.com、tdimg.com
    . 我们要设置这几个域名走电信的 DNS(这里我用路由器DNS代理地址——即路由器本身IP),那么格式如下

    taobaocdn.com=192.168.1.1
    taobao.com=192.168.1.1
    tbcache.com=192.168.1.1
    tdimg.com=192.168.1.1

    . 如果有多个 DNS 就这样(例如广东这边电信的 DNS 一般是 202.96.134.133 和 202.96.128.166)

    taobaocdn.com=202.96.134.133,202.96.128.166

    2013.02.20 Update:Guo.Andy 在评论里提醒新版 V6.95RC 改了设置名(点击这里),我还没验证,用新版的朋友注意一下。

  6. 查看自己网卡的 IP 地址,因为 DualServer 默认会获取网卡的 IP 地址作为本地 DNS 服务器地址,不知道的可以在命令窗口敲 ipconfig 得到,这里假定是 192.168.1.100
  7. 修改连接路由器的那个网卡的 DNS 服务器地址为 192.168.1.100(自淫?网卡自己的IP……)
  8. 运行 RunStandAlone.bat,运行后会出现命令窗口显示 log,这样就OK了

PS1:如果你不想每次都要运行 RunStandAlone.bat 和看到那碍眼的命令窗口,那么你可以注册为系统服务,只要运行 DualServer.exe,然后去系统服务(命令行敲 services.msc)那里启动此服务,以后就会自动运行了,不过注意,如果你修改了 DualServer.ini 参数,需要停止再启动此服务——嫌麻烦就重新启动计算机

PS2:@felixonmars 这喵的维护了一张国内常用的、但是通过国外 DNS 会解析错误的网站域名的列表,“Auto DNS Configuration For Websites Located in China”里面的就是,不过 要改下格式,例如:

server=/115.com/114.114.114.114

改为

115.com=114.114.114.114

添加进前面说的 DualServer.ini 的 [CHILD_ZONES] 下面(可以copy列表到文本编辑器批量修改)

折腾完,祝大家科学上网愉快!

zww
or
oooo

“Windows 下使用国外 DNS 访问国内网站慢的解决方法”有86条评论

  1. [...] 版本试试吧。或者可以装个 dnsmasq 的 Windows 代替品。 更新:有人写了篇《Windows 下使用国外 DNS 访问国内网站慢的解决方法》,使用 Windows [...]

  2. DickWu says:

    仔细看了一下,如果说我的计算机为了便携需要到处跑使用动态IP地址那怎么办?

    1. zwwooooo says:

      @DickWu
      这个嘛,我不知道啊,自己用ipconfig 查看并手动设定吧

  3. Normal says:

    z大,我是来看看我的系统滴~~

  4. jalena says:

    :grin: 貌似我使用tomato的路由,可以用路由的 dnsmasq :mrgreen:

    1. zwwooooo says:

      @jalena
      这……肯定是我没有这类路由才要这么折腾

  5. 哈哈,终于找到原因了!

  6. Ai says:

    求教,拨号党要怎么弄呢?
    我试着把[CHILD_ZONES]项的网址定向PC的ip,但是运行bat文件的时候提示非静态ip,然后就没反应了,这个后边该?

    1. zwwooooo says:

      @Ai
      拨号党可以把网卡设置固定IP吧,我没试过,n年没用电脑拨过号

    2. Ai says:

      @zwwooooo
      ISP不允许,“宽带连接”设置固定IP会出现错误720,“本地连接”设置没用。请问这个为何需要绑定固定IP呢?在宽带拨号后使用已确定的IP为何不可启动该服务呢?

    3. zwwooooo says:

      @Ai
      本地链接你改为固定ip试试,反正拨号不管你的网卡ip的

  7. yuetsai says:

    有时候在Mac OS呢?

    1. zwwooooo says:

      @yuetsai
      木有苹果的东东不折腾

  8. 同上求Mac的版本和设置方法,话说现在用google的dns还蛮多的,蛋疼

  9. dcxy says:

    还以为你也不写博客了。。。看到这么多W8的真好。。。懒得折腾了。。。慢就慢点吧

    1. zwwooooo says:

      @dcxy
      不写博客?现在就发发牢骚

  10. Guo.Andy says:

    [CONDITIONAL_FORWARDERS]
    #In previous versions this was called CHILD_ZONES.

    #V6.95RC的ini文件的节名称改了。

    1. zwwooooo says:

      @Guo.Andy
      感谢,我在文章中标注下

  11. Yuer says:

    在公用wifi上网,岂不是要每次改dns设置……
    有办法设置成监听在127.0.0.1吗?我尝试未果……
    然后我设置成监听在vmware给我安装上的虚拟网卡上,结果是
    可以nslook,但不能ping也没法上网?这是何故?求解~

    1. zwwooooo says:

      @Yuer
      虚拟机我就不知道了,自己慢慢折腾,我现在都是用本机网卡

  12. twitterpig says:

    可以copy列表到文本编辑器批量修改---------话说这个怎么批量修改,如果一个一个修改地址的话,估计手会断掉的说~给个方法吧~小白路过~妥妥的~

    1. zwwooooo says:

      @twitterpig
      学习一下文本编辑器,如用 notepad++

  13. twitterpig says:

    批量修改,我搞定了,有个疑问,一个是先设置192.168.1.1,然后又是改成192.168.1.100,然后又是添加批量修改成的列表~我自己ipconfig得出的ip,不就只需要填入喵的修改列表吗?运行以后出现:warning:interface 192.168.0.103 is not static,not used----这个代表我设置失败了吗?

    1. zwwooooo says:

      @twitterpig
      这里的问题可能是你的网卡IP是自动获取的?要手动设置网卡IP!

  14. twitterpig says:

    你好,折腾到现在,我在这步:修改连接路由器的那个网卡的 DNS 服务器地址为 192.168.0.100后,就无法正常连接网络,但是全局vpn以后,运行RunStandAlone.bat ,出现两个warning,博主可以付费咨询帮忙调试不?囧~我就想把这个问题搞懂~而且最近在调试quic,还有在校园网认证环境中如何用一些软件分流,自动设置DNS~谢谢~

    1. zwwooooo says:

      @twitterpig
      1. 我只是自己在家里的本本里面使用这个功能
      2. 我不是专业玩这个的,也就是看看网上的教程折腾成功,所以既然我都能成功,那么你也行,多看看教程和此软件官方的说明(英文)
      3. 校园网什么的我不懂,没接触过,因为我读大学时还是那种极速6KB/s(带宽是64kbps)的小猫刚开始起步时代,而且一般家庭还用不起(一个月几千,相当于现在1、2万)
      慢慢折腾,多测试

  15. twitterpig says:

    Ok,这位大大,我按照你的提示,将ipconfig /all得到的网卡ip地址手动填入到我的ip地址中,按照你的提示,那些ip地址和DNS都不自动获取,但是一旦这样子填入后,我的无线网连接存在,但是无法连接网络,运行RunStandAlone,出现DNS udp query,access denied。囧~折腾万岁~大大给分析下~难道填入的ip地址只要填入在这个ip段的就行吗?还是必须填入ipconfig得到的ip地址?DNS是使用自动获得吗?

    1. zwwooooo says:

      @twitterpig
      "将ipconfig /all得到的网卡ip地址手动填入到我的ip地址中" 这什么意思?ipconfig /all 只是为了看你的网卡 IP 是多少(针对自动获取的),手动的话就不需要了,我不知道你到底怎样折腾的。你是用无线网卡上网的吧?简单点,如果你再折腾不了我也没办法:
      0. 前提:Dual DHCP DNS Server 正确配置,然后运行
      1. ipconfig /all 查看到无线网卡ip是多少(这里假如是 192.168.1.100)
      2. 打开“网络和共享中心”》更改适配器设置 》在你的网卡(通常叫WLAN)上右键属性 》双击Internet 协议版本 4(TCP/IPv4) 》把DNS手动改为 192.168.1.100

  16. name says:

    有数量限制的,网站添加125个之后,后面的就都无效。

    1. zwwooooo says:

      @name
      真的吗?没注意到

  17. wang hua says:

    你好:

    DNS UDP Query, Access Denied
    why????

  18. Fraecak_l says:

    大神,我刚用了这个办法以后,刚设置完 DNS,看了一会儿 A 站视频,的确不卡了(没有试很久),但我一刷新其他网页,就显示无法连接了。之后就所有网页都无法打开了…… chrome 浏览器,换了 IE 也如是。 qq 能照常使用。

    把 DNS 恢复默认设置以后就没事了……

    求解 :cry: :cry: :cry:

    1. zwwooooo says:

      @Fraecak_l 此方法不适合了,因为 Dual DHCP DNS Server 有限制 DNS 数量,没找到提前替换方案,只能是把dns也代理了。

    2. Fraecak_l says:

      @zwwooooo 所以,现在是要自己用VPS搭个DNS服务器,比如Linux上的bind9之类的,在VPS上把那些常用网站的DNS都配置好,然后把网络配置里的DNS服务器改成自己VPS的IP,就是用国内机器当DNS代理服务器,可以是socks转发实现,也可以是搭bind9之类东西实现?

    3. zwwooooo says:

      @Fraecak_l 好吧,自己搭建DNS服务器太麻烦了吧(当然能自己搭建当然好),找个支持DNS代理(服务器代替你本地DNS)的代理软件就行了,如手机上用 SS(用VPN模式),电脑上用 COW 之类,具体自己搜搜,我这里也只能点到为止,你懂的。

    4. zwwooooo says:

      @Fraecak_l 哦,忘了你要本地和国外分离,简单点:用支持 pac 的代理软件,把国内常用域名/ip设置为直通——这个很多地方会有提供列表+自己增加。或者偷懒用自动判断是否要代理的 COW

  19. Fraecak_l says:

    没看懂,我是计算机小白…… :cry: 这话的意思是这个办法只能是每次要访问哪个网站的时候临时设置,等访问结束再恢复 DNS 默认设置吗?还是说,这个办法就全然不能用于解决在国外访问国内网站速度慢的问题了?

  20. Fraecak_l says:

    感谢!虽然还是看不懂…… 我会查资料自学的 :shock:

发表评论

昵称 *

网址

B em del U Link Code Quote