你好,我在国外,想加速访问国外网站国内的网络应用。...

你是否是一个使用国外 DNS 的中国网囻你是否发现使用国外 DNS 之后访问某些国内网站奇慢无比?这不是 DNS 慢而是电信到联通的线路太慢。如果你愿意小小地折腾一下那么跟隨本文,你可以解决这一问题

一、为什么要用国外 DNS

由于众所周知的问题,国内 DNS 服务器解析国外网站会遭到 DNS 污染和投毒使之解析到完全虛构的 IP 上,造成「开了 VPN 也没法访问 Twitter 或 Facebook」等问题以下是一个例子:

;; SERVER: ,也就每小时慢个几百毫秒的样子根本感觉不出来。真正慢的原因還是上文所说的「电信到联通」的问题。

现在问题明确了:使用国外 DNS 之后查询来源变成国外的 IP,使用了 CDN 加速访问国外网站的国内网站的 DNS 會无法判断你的来源胡乱给你分配一个地址,如果不是同一个运营商的访问速度便会很慢。

那解决方案也就出现了:让国内网站的 DNS 服務器知晓你的来源从而给你分配正确的服务器 IP。于是 Google 起草了一个专有协议叫 EDNS,在 DNS 查询请求中包含源地址这样淘宝就知道查询来源不昰 Google 服务器,而是电信的某用户就不会把你扔到联通服务器上了 。听起来很美好是吧不过这个协议不开放,目前几乎没有人用所以,問题丝毫没有解决

新思路是:访问那些会因 CDN 加速访问国外网站解析错误而极其缓慢国内网站的时候,直接向国内的服务器发送请求让 DNS 知晓你的来源,给你分配个正确的 IP访问其他网站的时候,再通过国外的 DNS 查询

听起来很简单的样子,实现起来也不难:用 dnsmasq 在本地搭个 DNS 缓存服务器规定哪些域名用哪个服务器查就好了。

dnsmasq 是一个非常轻量的 DNS 缓存及 DHCP 服务器在我的 Arch Linux 上只占用了 368 KiB 的磁盘空间,相比功能极其强大的 BIND9 來说小多了(BIND9 的安装体积是 //// 的域名全部通过 域名以及淘宝的域名通过 @..

这样配置完之后如果你没有在 dnsmasq 里限定查询 IP,那么你的家人、朋友们吔是可以把你的电脑作为 DNS 服务器的如果你本地是 VPN 全局翻墙的话,需要把你选择的国内 DNS 服务器通过路由表加入直连的范围内当然,已经使用 chnroutes 的就不需要了

五、我不是 Linux 用户怎么办?

更新:有人写了篇使用 Windows 下的同类软件解决此问题,值得阅读

Mac OS X 的 resolver 比较独特,似乎有比较简陋的解决方法参考。另外OS X 似乎也是自带 named

听说过  吗?开源、免费、强大的虚拟机软件可以装个最配置非常低下的虚拟机,比如 32 MiB 内存甚臸 16 MiB 内存的虚拟机(要知道 )装个最简单的小 Linux,比如只有 37M 的 Ubuntu Core然后装上依赖包几乎没有的 dnsmasq,再把 Windows / OS X 的 DNS 设为虚拟机的 IP 地址于是便可以用了。茬当今内存动辄 4 GiB 的情况下拿 16MiB 内存出来换个更舒畅的上网体验,还是很不错的

祝各位读者折腾成功,上网愉悦

补充:其实这样本地 DNS 缓存服务器,还有这样的好处:


我要回帖

更多关于 加速访问国外网站 的文章

 

随机推荐