用OpenWRT轻松打倒北京网通的域名劫持
北京网通几个月以前开始拦截 DNS, 对不能解析的域名都给出网通某些服务器的地址,这些服务器就会重定向你的浏览请求到他的广告客户那里.最常见的是一个什么 bobodogs.com ,这名字听起来就显得非常下道,网页看起来也比较恶.于是决定把它干掉.
搞掉他最简单的方式当然是用别地方的 DNS 或者自己架,但是中国网络环境并不是非常的好,自己架的 DNS 只有自己访问,缓存命中率非常低,很多请求都要直接去查询,感觉非常慢.用别处 DNS 倒是没有这个问题,但是很多大网站会根据访问 DNS 的地址来给出不同的镜像,有时候就会给你一个访问速度很慢的,因此还是要用本地的用的人多的 DNS 才好。
我用的是 linksys 的无线路由器,里面跑了一个 OpenWRT,程序都可以自己编译,本来打算去修改dns转发代码,如果看到结果是北京网通那些机器的 IP ,就直接返回 NXDOMAIN。没想到仔细读了一下 dnsmasq 的源代码,发现里面原来已经有这个功能了,Verisign 维护的根域名服务器也会干类似的事情,因此 dnsmasq 里面作了一个思路完全一样的实现,只要将这些 IP 都加到 dnsmasq 的命令行上面,就可以实现封掉域名劫持的效果。
观察访问记录能看出来,北京网通的转发服务器范围是 202.108.251.201-211 ,另外还有一个 202.106.195.20 , 登录进 linksys 的 shell 以后,编辑 /etc/init.d/S50dnsmasq
将 args= 一行改成
args=”-B 202.106.195.20 -B 202.108.251.201 -B 202.108.251.202 -B 202.108.251.203 -B 202.108.251.204 …..
在原来的参数前面加上 -B
然后 killall dnsmasq
/etc/init.d/S50dnsmasq
打开浏览器随便打个错误网址,IE 可以正常显示找不到 DNS 服务器。唉,为了恢复这个标准行为还要花这么大力气,上个网可真够难的。
不错
学习 推广之
我家AP土,玩不转OpenWRT….
一个 linksys 对您来说不就是一顿饭的事情吗..
太伟大了,跪拜!
202.108.251.201-211 改 hosts 就就可以了?
如果我家的是TPlink的无线AP怎么办?
康神升级到OpenWRT rc6了么?前一阵看出了,我暂时懒得升级了,继续rc5中。。。
hosts 的方式需要每个机器都改啊,我还有笔记本,还有我爸的机器,等等。
TPLink 的没有希望了。。
RC6 我已经升级了,但是我不建议升,因为貌似 web 管理界面里面的设置端口转发的页面没了,我要电驴 BT 什么的都不太方便,最后把 RC5 里面的 iptables 配置直接拷贝过来凑合用。
我已经投靠了netgear了阿……,
不过打算去弄个无线网卡插机器上,应该比
AP好玩一点八.
无线网卡这个事情我已经在做了啊,也没有多大意思。。
netgear 也是个破东西,在美国时候用的这个,有人 BT 就开始抽搐。
上海电信也出现这样的情况很久了,我的解决办法是用OpenDNS…暂时解决问题。。唉。
http://welog.org/blog/561
OpenDNS 的问题是对有 view 的 DNS 或者 CDN 们, 经常会解析出来一些离你实际比较远的地址出来,最明显的例子就是新浪。所以。。
opendns貌似也会自作聪明的帮你解析不存在的网址
好用,多谢!