1. 无污染DNS方法概括

现在无污染DNS实现方法我所知的为两种一种为China-list法一种是Iptables过滤法

China-list法
这个方法可以理解为分类解析,也就是说国内域名用一款DNS解析,国外域名用另一款DNS解析,BAI DNS也是用的这个方法,这个方法在现在来说比较稳定。

dnsmasq-china-list开源地址:https://github.com/felixonmars/dnsmasq-china-list

iptables过滤法
这个方法现在中科大的DNS在用,在这里我不是很推荐,因为容易被墙掉

2.两种方法的实现

  • china-list法

如需使用China-list法我这里建议使用dnsmasq+china list实现。
(具体使用方法开源地址上有介绍

China-list开源地址

接下来我给大家介绍新手可能遇到的一些问题

  • 上游DNS选择问题

很多朋友在选择无污染上游DNS时遇到了一些问题,他们比较迷茫,不知道从而做起,这里我推荐大家使用OpenDNS(208.67.222.222 208.67.220.220)+443端口
当然如果有钱的朋友可以选择自建上游无污染DNS

  • 无污染上游DNS搭建问题

其实很简单的,买一台海外VPS用bind或者是dnsmasq等等dns软件搭建服务,不过要注意的是要使用特殊端口例如5353、443等等都可以。有人说tcp查询稳定性要比udp好,不过我亲身试验却发现udp丢包更少一点

  • iptables过滤法

这个方法目前中科大DNS在用貌似效果还是挺好的,不过容易GG
据高同学介绍,实现方法大概是这样的

原理是分析GFW返回的DNS数据包与Google Public DNS返回的数据包的特征,利用这些特征来做过滤

其中一个特征位置是:EDNS Data Length,Google响应512,GFW响应4096
对应 -m u32 --u32 "36=0"

后来墙做了升级,增加了不同的Data Length响应,于是乎就找了另一个DNS Flag置位响应的特征
对应 -m u32 --u32 "28&0x10=0"

Yifan Gao, [17.08.17 19:31]
这种模式无法坚持长久,墙总是在不断升级中.....
目前LUG DNS的主服务器位于内网网关之中,网关上有全局的出国隧道,隧道对端在新加坡,所以主服务器解析出来的国外地址CDN亲和新加坡
备份服务器是纯教育网线路,iptables规则过滤掉墙的返回,剩下的就是真实的响应,所以CDN亲和中国教育网

附件
https://ws1.sinaimg.cn/large/df81df1bgy1fimz1m9gqmj20vs02emy0.jpg