如何本地避免GFW的DNS污染
最近看了 IGFW 上的如何不受DNS污染,讲的是做VPN服务器的VPS 配置方法。我来说下目前我知道的各平台上,本地避免DNS 污染的方法。
DNS污染的原理部分,参考这篇 深入理解GFW:DNS污染。本地避免污染,有两个思路:
- 通过加密方式,查询可信的DNS服务器
- 设置国外DNS服务器,并丢弃GFW DNS伪包
第一种思路下,目前比较靠谱的是 DNSCrypt,支持Windows (下载)和 Mac(下载)。DNSCrypt 使用很方便,把 Enable OpenDNS、Enable DNSCrypt 全勾上就好,也建议勾上 Fallback to insecure DNS。
第二种方式,Windows上不好弄。Mac 和 Linux 都有办法实现。前提是设置国外DNS,继续推荐台湾中华电信的168.95.1.1 。然后:
- Mac:安装 kernet 内核扩展(下载),我自己做的,开机自启动,风险自负。
- Linux:西厢计划项目做了这一部分,不过编译内核模块毕竟麻烦。2.6.33.7 以上版本的内核(不保证这是最低版本),依赖 iptables 1.4.10,都会自带u32 模块,可以用iptables 规则做丢弃GFW DNS伪包:
iptables -I INPUT -p udp -m udp –sport 53 -m u32 –u32 “0&0x0F000000=0×05000000 && 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=0×05000000 && 22&0xFFFF@16=0x3b1803ad” -j DROP
设置联网自动加载iptables 配置:Ubuntu下,可以把以上规则写入 /etc/network/if-pre-up.d/iptablesload 文件。其它Linux发行版应该也有类似的方法。强烈建议淘宝上卖自制路由器的同学们,把这个防火墙规则写到路由器中,也能多一个卖点。
另外,继续推荐IGFW博客。顺便推广下自己做的 IGFW墙内镜像,有点慢,日独立IP过1000我就做服务器缓存(目前已经到500)。
原文:http://liruqi.info/post/28775426009/how-to-avoid-dns-hijack-locally
建议博主把墙内镜像关了吧。
这个镜像,百度之流肯定搜不到。
如果服务提供商不像谷歌那么“正直”,想与中共合作,那么博客就可能被删了。
而且,如果有备案,就会增加博主被跨省的危险。
那个不是我弄的,呵呵
镜像已经不是慢的问题了,是能否打开的问题了。
这个镜像好像不是一般的慢啊……
DNSCrypt 不太好用啊 opendns 解析国内的网站都很慢 没电信的快。打开一个新浪网站就卡得不行。有什么其他的方法或者其他的推荐吗?
我记得以前博主是说过不愿意让别人做镜像的。是改注意了吗?
事情不是以个人意愿而改变的。
DNSCrypt 不太好用啊 opendns 解析国内的网站都很慢 没电信的快。打开一个新浪网站就卡得不行。有什么其他的方法或者其他的推荐吗?
解析国内网站用国内本地DNS服务器,解析国外网站使用DNSCrypt,这样怎么实现我也不知道。
修改hosts能够解决DNS污染吗?路由器下。
可以
如果GFW屏蔽了向外发出的Header里面的关键词比如:
Host: *igfw.net
那么就算你修改了电脑的Hosts也不行。
是的,必须要https或ipv6
似乎IGFW墙内镜像通过直连也不好访问,至少我这里是打不开。原博客无法回复,非不可访问问题,是浏览器支持问题。
u32已经很不稳定了 有些域名依然会被污染