如何不受DNS污染

原文:http://www.iroowe.com/fuck_the_dns_pullution/

这个话题,也是一直想写,现在有点时间了,就顺便写下吧,备忘和科普用吧。PS:使用此技能必须有个可用的VPN。没有的话,污染无解。还有我是针对Linux的,windows用户拜拜!

什么是DNS污染

回答这个问题之前,如果你不知道DNS的作用是什么,我可以简单的说,DNS的中文是域名系统,英文是Domain Name System,简称DNS,是因特网的一项业务服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。(抄自域名系统
然后,DNS污染简单来说就是让找不到正确的IP,然后就没有然后,上不了网了,开着VPN也没用。

下面举个例子吧,下面同样域名得到差异很大的结果。如果我们使用国内的DNS服务器或者ISP提供的DNS服务器,就算开着VPN,我们也不能正常的DNS解析的。

[23:13:07] roowe@roowe-gentoo /tmp$ nslookup twitter.com 8.8.8.8  Server:         8.8.8.8  Address:        8.8.8.8#53     Non-authoritative answer:  Name:   twitter.com  Address: 199.59.148.82  Name:   twitter.com  Address: 199.59.149.230  Name:   twitter.com  Address: 199.59.150.39     [23:14:37] roowe@roowe-gentoo /tmp$ nslookup twitter.com 114.114.114.114  Server:         114.114.114.114  Address:        114.114.114.114#53     Non-authoritative answer:  Name:   twitter.com  Address: 46.82.174.68

How To Break

使用dnsmasq和resolvconf,每个Linux的发行版的源应该都有这两个工具,安装方法就不说了。

具体选项自己去看man吧。dnsmasq的配置大概如下,就是让国内的域名交给国内的114去解析。

no-resolv  no-poll  server=8.8.8.8  server=8.8.4.4  no-dhcp-interface=eth0  expand-hosts  server=/115.com/114.114.114.114  server=/126.com/114.114.114.114  server=/163.com/114.114.114.114  server=/17cdn.com/114.114.114.114  server=/51.la/114.114.114.114  server=/6rooms.com/114.114.114.114  server=/acfun.tv/114.114.114.114  server=/alimama.com/114.114.114.114  server=/alipay.com/114.114.114.114  server=/atpanel.com/114.114.114.114  server=/baidu.com/114.114.114.114  server=/bdimg.com/114.114.114.114  server=/bilibili.tv/114.114.114.114  server=/cn/114.114.114.114  server=/douban.com/114.114.114.114  server=/douban.fm/114.114.114.114  server=/gfan.com/114.114.114.114  server=/hoopchina.com/114.114.114.114  server=/iask.com/114.114.114.114  server=/ifeng.com/218.104.111.114  server=/ifengimg.com/218.104.111.114  server=/ku6.com/114.114.114.114  server=/ku6cdn.com/114.114.114.114  server=/lxdns.com/114.114.114.114  server=/microsoft.com/114.114.114.114  server=/mydrivers.com/114.114.114.114  server=/qq.com/114.114.114.114  server=/qstatic.com/114.114.114.114  server=/renren.com/114.114.114.114  server=/sogou.com/114.114.114.114  server=/sohu.com/114.114.114.114  server=/soso.com/114.114.114.114  server=/tanx.com/114.114.114.114  server=/taobao.com/114.114.114.114  server=/taobaocdn.com/114.114.114.114  server=/tbcache.com/114.114.114.114  server=/tdimg.com/114.114.114.114  server=/tencent.com/114.114.114.114  server=/thawte.com/114.114.114.114  server=/tmall.com/114.114.114.114  server=/tudou.com/114.114.114.114  server=/tudouui.com/114.114.114.114  server=/weibo.com/114.114.114.114  server=/wrating.com/114.114.114.114  server=/xiami.com/114.114.114.114  server=/xiami.net/114.114.114.114  server=/xunlei.com/114.114.114.114  server=/ykimg.com/114.114.114.114  server=/youku.com/114.114.114.114

resolvconf的作用就是 managing multiple DNS configurations,要不然resolv.conf配置全乱了,第一个都不是我们想要的127.0.0.1。

resolvconf配置如下。

resolv_conf=/etc/resolv.conf  name_servers=127.0.0.1

用了resolvconf之后,我们自动生成的resolv.conf配置大概如下:

[23:46:30] roowe@roowe-gentoo /tmp$ cat /etc/resolv.conf   # Generated by resolvconf  nameserver 127.0.0.1  nameserver 8.8.8.8  nameserver 8.8.4.4

最后/etc/init.d/dnsmasq start下,就可以用了。也可以作为服务项加入自启动里面。

后话

科学上网,为国争光。

现在我们nslookup的结果大概如下。

[23:52:46] roowe@roowe-gentoo /tmp$ nslookup twitter.com  Server:         127.0.0.1  Address:        127.0.0.1#53     Non-authoritative answer:  Name:   twitter.com  Address: 199.59.150.39  Name:   twitter.com  Address: 199.59.150.7  Name:   twitter.com  Address: 199.59.148.10

Update:

2012-07-05 Thu

由于换工作室了,我又舍不得将自己的电脑搬过来,因为周六日回去华师宿舍的时候,没有电脑玩是很蛋疼的事情,这个时候就突然想拥有台笔记本咯。在这边的工作室,我就用着我们之前作为服务器的机子,机子虽破,少开几个google-chrome的TAB和不打开eclipse,应该还是能用的。

说回正题,这边服务器是之前安装的fedora16,用了gentoo之后,发现fedora很多包都更新得很慢,我虽然不是很热衷于新版本,但是现在有些新版本的feture是我需要呀,比如Xfce按住Alt+Tab之后的左右方向键在xfce-4.9是有效,但是在4.8版本是没有用的,�!还有Emacs还没有升级到24呀。想到这里,我就想马上搬我的电脑过来用gentoo。除了更新慢之外,还有些包没有,比如resolvconf这个包竟然没有。所以就没法管理resolv.conf了,但是为了使用dnsmasq,还是有办法的,在 /etc/sysconfig/network-scripts/ifcfg-p33p1(这个文件是我的,找你相应的)这个文件后面添加DNS1=127.0.0.1,然后/etc/init.d/network restart下就好了。PS:我没用NetworkManager,这货坑爹的,直接用network来管理。

发表评论