Total Pageviews

Friday, 7 June 2013

Hosts与Dnsmasq

喜欢使用Google搜索的人都懂得,在天朝使用Google是多么痛苦的一件事,不仅有着一大串的敏感词,还会时不时的抽风。好在现在Google已经全面启用了HTTPS,可以抵御关键词过滤,但是抽风的问题如何解决?

网友的力量总是无穷无尽的,有人在GoogleCode上创建了Smarthosts项目,通过本地的域名解析来应对DNS污染的问题,不仅更新维护频率高,更是推出了各种各样的版本,其中就包括DNSmasq的版本。项目地址在这里:http://code.google.com/p/smarthosts/

    小科普:关于Hosts、Dnsmasq

    Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析。

    DNSmasq是一个小巧且方便的用于配置DNS和DHCP的工具,适用于小型网络,它提供了DNS功能和可选择的DHCP功能。它服务那些只在本地适用的域名,这些域名是不会在全球的DNS服务器中出现的。并且DNSmasq被广泛应用在路由器的第三方固件上(如大名鼎鼎的DD-WRT与Tomato)。


若您的路由器不支持DNSmasq或者根本不使用路由器,可以直接向下跳到Hosts部分。

    DNSmasq相对于Hosts的优势就在于DNSmasq支持泛域名的解析。例如abc.domain.com与domain.com要同时指向127.0.0.1,若使用Hosts就需要分别为abc.domain.com、domain.com设置解析地址,而DNSmasq只需要指定domain.com。这样的特点使得DNSmasq的列表更加简洁与便于维护。并且同一局域网内的设备都能同步更新域名解析信息。


进入到路由器的DNSmasq设置页面,以Tomato为例:

在自定义设置中填入如下规则

#Google Start
server=/android.clients.google.com/8.8.4.4
server=/mtalk.google.com/8.8.4.4
server=/talk.google.com/8.8.4.4
server=/reader.googleusercontent.com/8.8.4.4
address=/talkx.l.google.com/203.208.46.180
address=/talkgadget.google.com/203.208.46.180
address=/www.google.com/203.208.46.180
address=/music.google.com/203.208.46.180
address=/music.googleusercontent.com/203.208.46.180
address=/music-streaming.l.google.com/203.208.46.180
address=/large-uploads.l.google.com/203.208.46.180
address=/uploadsj.clients.google.com/203.208.46.180
address=/t.doc-0-0-sj.sj.googleusercontent.com/203.208.46.180
address=/google.cn/203.208.45.208
address=/google.com/203.208.45.208
address=/google.com.hk/203.208.45.208
address=/googlehosted.com/203.208.45.208
address=/android.com/203.208.45.208
address=/google-analytics.com/203.208.45.208
address=/gstatic.com/203.208.45.208
address=/youtube.com/203.208.45.206
address=/ytimg.com/203.208.45.208
address=/google.com.hk/203.208.45.208
address=/ggpht.com/203.208.45.208
address=/googleusercontent.com/203.208.45.208
address=/appspot.com/203.208.45.208
address=/googlevideo.com/203.208.45.208
address=/googlecode.com/203.208.45.208
address=/gvt0.cn/203.208.45.208
address=/gvt0.com/203.208.45.208
address=/googleapis.com/203.208.45.208
address=/appspot.com/203.208.45.208
address=/gmail.com/203.208.45.208
address=/top100.cn/203.208.45.208
address=/keyhole.com/203.208.45.208
address=/goo.gl/203.208.45.208
address=/g.co/203.208.45.208
address=/blogspot.com/203.208.45.208
address=/chrome.angrybirds.com/203.208.45.208
#Google End

#Apple START
address=/phobos.apple.com/203.78.36.40
address=/adcdownload.apple.com/203.78.36.40
address=/deimos3.apple.com/203.78.36.40
address=/appldnld.apple.com/203.78.36.40
address=/swcdn.apple.com/203.78.36.40
address=/developer.apple.com/203.78.36.40
#Apple End

#Twitter Start
address=/t.co/199.59.149.243
address=/userstream.twitter.com/199.59.148.139
address=/twitter.com/199.59.149.243
address=/twimg.com/184.169.75.33
address=/tinypic.com/209.17.70.144
address=/bitly.com/69.58.188.34
address=/yfrog.com/208.94.0.61
address=/api.mobilepicture.com/208.87.33.151
#Twitter End

#Wikimedia Start
address=/wikipedia.org/208.80.152.201
address=/wikibooks.org/208.80.152.204
address=/wikinews.org/208.80.152.206
address=/wikiquote.org/208.80.152.201
address=/wikimediafoundation.org/208.80.152.201
address=/mediawiki.org/208.80.152.201
#Wikimedia End

保存之后将电脑的DNS服务器设置为路由器的IP地址(若选择了截获DNS端口可不用设置),点击开始-运行-ipconfig /flushdns清空本地DNS缓存,自定义的解析规则就生效了。

仅仅是更改域名解析还远远不够,若是搜索的关键词当中包含有敏感词汇,还是会被重置链接。接下来就是要让Chrome浏览器强制对Google使用HTTPS加密协议。

在Chrome的地址栏中输入chrome://net-internals/#hsts并打开,在Add domain的domain处输入需要强制启用HTTPS的网址,并勾选Include subdomains使其子域名也启用HTTPS,点击Add添加。对于Google来说,添加Google.com与Google.com.hk即可。

现在,享用Google这道大餐吧。

PS:使用本地Hosts可以达到同样的效果,在 http://code.google.com/p/smarthosts/下载自动更新程序。软件使用非常简单,运行后点击更新即可(由于要对Hosts文件进行操作,部分杀毒软件会警报,请放行。使用360安全卫士时请将Hosts文件设为信任).