用吃灰的树莓派建了一个自动 DNS

2018-06-05 21:34:14 +08:00
 adrianzhang
0 ) 你懂得
1 ) 使用普通 DNS 软件,bind 和 unbound,无其他 xxdns。
2 ) 无需人工参与编辑列表。
3 ) 良好使用 CDN

需要的前提条件:有个自动的路由器。

原本这里写了教程,点击“创建”后收到提示:抱歉,能不能不要在这里讨论这个。
好吧,那就不发了。有需要的发邮件吧。
14438 次点击
所在节点    DNS
70 条回复
rio
2018-06-15 02:36:20 +08:00
@Kobayashi 不同的方案各有优缺点。ChinaDNS 分流基于一个核心假设,就是被污染域名都解析到非 China IP。这个假设在目前是成立的,但似乎并没有什么客观原因认为它一定成立。
adrianzhang
2018-06-15 09:06:40 +08:00
@Kobayashi
对于分流实现的两个问题:
1 )列表是需要的,但如主贴所述,不需要人工参与编辑。
2 )你说的正确

相比其他方案,准确性确实略差(举例来说:本站有时候解析到国外,淘宝等解析到国内,一些国外 CDN 是解析到国外,国内 CDN 解析到国内),准确性完全依赖目标站点的权威 DNS 设置。好处是如 @rio 所述,不再需要根据各种情况变化不停变化升级了,一次设定好就完全自动化了。

Unbound 的设定,你的方式也可以的。对于企业内网所用的 unbound,则采用定期自动更新 ROOT DNS 文件方式更稳妥。
Kobayashi
2018-06-15 11:03:49 +08:00
@rio 嗯,不管是 GFW 之前的污染方式——随机指向无效 IP,还是现在的随机指向不对应 IP,被污染域名解析都有可能给出境内 IP 地址。所以在根据 IP 分流,大多方案搭配 GFW List,让已统计的被污染地址直接走境外无污染 DNS 解析,以作为弥补。目前这种思路的方案包括但不限于 Dnsmasq+ChinaDNS,Unbound+ChinaDNS,Overture(配有 GFW list 黑名单)。

又仔细考虑了一遍楼主的方法,在权威 DNS 服务器位置和网站服务器位置没有绝对关系之上,针对域名是否被污染、网站位置是在境内还是在境外、负责解析的权威 DNS 在境内还是境外,组合出 8 种情况分析:1 )被污染域名由境内权威 DNS 解析情况下,此方案无法获取正确结果,解决方法 GFW List,通过代理由境外发起解析请求; 2 )境外网站由境外权威 DNS 负责解析时,此方案存在无法获取其国内 CDN 可能。后面这个问题,我考虑了半天并没有想到一个恰到好处的解决方法:常见中国域名白名单列表的话,好像都是针对国内网站,在这里可能不适用; EDNS-Client-Subnet 可能算是一个解决办法,要权威服务器支持,也不算完美。
adrianzhang
2018-06-15 11:41:30 +08:00
@Kobayashi

国内权威 DNS 解析不存在污染情况,如果需要屏蔽直接就被停止服务了。(参考 cloudxns 被勒令停止未备案域名解析案例)自动
境外权威 DNS 解析有可能无法获得国内 CDN 地址( baidu.com,taobao.com 等可以获得),这个确实是本方案解决不了的问题。前面也有评论指出这一点,我回复是询问这种场景是什么,能想到的一个例子是苹果的 app store 下载。对于这类情况,附加步骤方法是将相关 CDN 的权威 DNS 服务器地址列入 china 段的 ipset 内(隐含因素是这类 CDN 能够在境内服务,说明它的业务合法),可以由脚本实现自动化,解析出来 ns 地址,加入 set 即可。难点是如何自动处理 ns ip 的变化。
asd2003asd
2018-07-12 15:49:57 +08:00
@bao3 有树莓派 3 能用的 chinadns docker 镜像吗?
pretendtobegod
2018-08-15 19:26:34 +08:00
可以在 lxc 中跑 unbound, 这样不用再加一台机器.
adrianzhang
2018-08-27 12:50:42 +08:00
@pretendtobegod 也可以
shudongin
2021-05-09 07:48:13 +08:00
试了一下,速度过于感人,还是 list 来得快。
shudongin
2021-05-09 17:33:06 +08:00
效果还可以的,需要一个高速科学线路。
adrianzhang
2021-05-10 07:09:06 +08:00
@shudongin 是的线路是必须的。另外关于速度,首次访问的网站肯定慢,但是因为有 dnsmasq 做 cache,所以可以定义缓存时间,7 天或一个月什么的,自己用的话,常用的网站打开都很快,本质上就是 dnsmasq 将查询结果都做了个活动的 list 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/460686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX