如何不受DNS污染

2012年8月3日 | 分类: 翻墙相关 | 标签: ,

这个话题,也是一直想写,现在有点时间了,就顺便写下吧,备忘和科普用吧。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来管理。

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

  1. 2012年8月4日23:05

    其实吧,Linux 系统里面,iptables 防火墙 就可以把 DNS 伪报过滤掉。

    iptables -I INPUT -p udp -m udp –sport 53 -m u32 –u32 “0&0x0F000000=0x05000000 && 22&0xFFFF@16=0x5d2e0859,0xcb620741,0x0807c62d,0x4e10310f,0x2e52ae44,0xf3b9bb27,0xf3b9bb1e,0x9f6a794b,0x253d369e,0x9f1803ad” -j DROP
    iptables -I INPUT -p udp -m udp –sport 53 -m u32 –u32 “0&0x0F000000=0x05000000 && 22&0xFFFF@16=0x3b1803ad” -j DROP

    参考 https://github.com/liruqi/west-chamber-season-3/blob/master/client.sh

  2. 真的
    2012年8月3日17:13

    你好。我比较喜欢看国外的某XX电视的的节目。时不时会转发到国内网站里边。我是用VPN。但是我的那个VPN时不时会在我不知不觉的时候自动断掉。我还傻傻的到处转发新闻。请问有什么办法我的VPN自动断掉后,把我的宽带链接也断掉或者有什么办法断掉后有很明显的提示吗?

    • iGFW
      2012年8月3日19:15

      系统设置VPN时选择断线重拨这样断线后会有重拨提示了

  3. 福音乐章
    2012年8月3日15:45

    windows可以用这个:Public DNS Servers Tool
    下载地址:http://www.trishtech.com/download.php?f=public_dns_tool.zip

    • iGFW
      2012年8月3日16:53

      这个是修改本机DNS服务器的