| 
 | 
| 本帖最後由 moses 於 2018-12-29 19:31 編輯 
 抛砖引玉, 这里仅仅说下针对DNS污染的解决方法, 其中不包括隧道相关的问题(关于这点我想在座的各位都有自己的各种解决方案).
 
 需求:
 1. 防止DNS污染
 2. 保留CDN加速
 3. 过滤广告与隐私追踪
 4. 针对性解析加速和优化
 5. DNS解析缓存
 
 思路:
 使用DNSMASQ分区域使用不同的上游服务器解析不同的域名.
 1. 如你身处大陆, 那么DNS污染的清单大致上可以参照一张"墙LIST", 使用BASE64解码后抓出合并域名生成需要额外照顾的污染清单, 让DNSMASQ对这份清单使用特别的上游DNS服务器做解析, DNSMASQ与这个服务器在第三层的封装保持加密或送入隧道, 保证此部分数据不被窥探且不被污染或篡改.
 2. DNSMASQ调用的第二组DNS服务器作为默认递归查询服务器用以查询非污染域名从而最大限度保证CDN优势, 可以采用本地运营商提供的DNS或公共DNS, 公共DNS大陆可以使用114或阿里的服务器.
 3. 使用相同的思路抓取adblockplus或yoyo之类的adblocking清单中的域名, 将其域名解析引导至127.0.0.1, 用以对抗广告或隐私跟踪.
 4. 对于一些使用运营商DNS并不能很好的解决问题, 如apple sppstore或apple wwdc视频直播之类访问下载速度慢的问题, 将其相关域名引导至具有优化解析方案的DNS服务器, 同时禁止掉这些公共服务器的域名劫持.
 5. DNSMASQ本身具有缓存能力, 用以本地解析加速.
 
 搭建:
 稍后吧, 我自己的配置有一些和上面需求并不完全符合的内容, 等我有空清理掉再码上来.
 
 DNSMASQ基本配置包含第二部分:
 第一部分针对墙LIST解析(这里与A.B.C.D之间的流量如果使用ROS需要做mangle送进tun或其他解决方案):複製代碼#接口侦听或者地址侦听任选
#listen-address=127.0.0.1
interface=eth0
port=53
no-poll
no-resolv
all-servers
cache-size=5000
neg-ttl=3600
# 本地运营商DNS或者公共DNS, 这里为第二条对应的默认DNS
server=A.B.C.D
server=A.B.C.D
#其余1, 3, 4的配置丢在下面的目录中
conf-dir=/etc/dnsmasq.d
glist.conf
 第三部分针对广告或隐私追踪相关域名进行屏蔽:複製代碼server=/.DOMAINNAME.XXX/A.B.C.D
adlist.conf
 第四部分特别清单与劫持处理複製代碼address=/DOMAINNAME.XXX/127.0.0.1
splist.conf
 劫持部分处理, 列表为大陆运营商的, 台湾与香港你们查到了也提交一份吧複製代碼server=/phobos-apple.com.akadns.net/114.114.114.114
bogus-nxdomain.china.conf
 | 
 |