写了一个 CDN 友好+反污染的 DNS 服务器

2020-03-03 09:03:02 +08:00
 suspended

Purified DNS

https://github.com/arloan/prdns

欢迎尝试。

11661 次点击
所在节点    DNS
54 条回复
scys
2020-03-03 10:06:23 +08:00
看起来听不多,不过 Ruby 暂时就观看态度
aoerboquartz
2020-03-03 10:09:09 +08:00
你这个有点意思,如果有演示就更好了。
scys
2020-03-03 10:12:11 +08:00
@scys #1 听来不错,暂时观看模式
suspended
2020-03-03 11:11:44 +08:00
@scys
@aoerboquartz

演示来喽~

bogon: ~/projects/prdns ]
suspended$ dig @localhost facebook.com

; <<>> DiG 9.8.3-P1 <<>> @localhost facebook.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8442
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;facebook.com. IN A

;; ANSWER SECTION:
facebook.com. 56 IN A 157.240.11.35

;; Query time: 180 msec
;; SERVER: ::1#53(::1)
;; WHEN: Tue Mar 3 11:10:25 2020
;; MSG SIZE rcvd: 46

suspended: ~/projects/prdns ]
stone$ dig @localhost taobao.com

; <<>> DiG 9.8.3-P1 <<>> @localhost taobao.com
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19749
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;taobao.com. IN A

;; ANSWER SECTION:
taobao.com. 300 IN A 140.205.220.96
taobao.com. 300 IN A 140.205.94.189

;; Query time: 46 msec
;; SERVER: ::1#53(::1)
;; WHEN: Tue Mar 3 11:10:29 2020
;; MSG SIZE rcvd: 60

bogon: ~/projects/prdns ]
stone$
xishijt
2020-03-03 11:18:34 +08:00
一脸期待的进来,一脸懵逼的出去,不知道怎么用
reechangs
2020-03-03 11:20:25 +08:00
@xishijt #5 mac 下比较好用,别的平台麻烦一点
suspended
2020-03-03 11:38:07 +08:00
@reechangs Windows 可能麻烦点,因为没有自带 ruby。linux 自带 ruby 的还好吧?只需要 gem install prdns 就安装好了啊。
Archeb
2020-03-03 11:56:21 +08:00
之前好像有人做过类似的

https://github.com/ExcitedCodes/SmartChinaDNS
suspended
2020-03-03 12:41:42 +08:00
@Archeb 所有市面上现有的反污染机制都不如我的这个噢,我的这个不需要什么 GFWList,GEOIP 啥的数据库。
demonzoo
2020-03-03 13:21:57 +08:00
貌似有前途,先马
moxnet
2020-03-03 13:28:49 +08:00
如果继续走 53 的 udp,很容易被识别,流量多了也是难免的。

要不被卡,还得用 DoT 或 DoH 啊。
richard1122
2020-03-03 14:18:32 +08:00
简单看了下代码不太理解为什么这样就是污染的域名?。。
XiaoxiaoPu
2020-03-03 14:28:39 +08:00
@richard1122 构造一个不存在的子域名 ne-{timestamp}.example.com ,正常情况下(域名未被污染)查询结果应该不存在解析,如果被污染了,会被 GFW 抢答返回包含 A 记录的回应,查询结果就是有解析
richard1122
2020-03-03 14:30:20 +08:00
@XiaoxiaoPu #13 明白了,竟然这么酷
suspended
2020-03-03 14:35:54 +08:00
@XiaoxiaoPu 嘻嘻,花了我一个小时研究出来的机制,可惜不能申请专利。:D
tpsxiong
2020-03-03 14:46:14 +08:00
@XiaoxiaoPu 如果只污染部分子域名的,怎么处理?
XiaoxiaoPu
2020-03-03 14:50:55 +08:00
@tpsxiong 目前来看 dns 污染应该是按后缀匹配的,不管前面的前缀。你说的只污染部分子域名,有具体的例子吗?
Archeb
2020-03-03 14:52:23 +08:00
@suspended 我发的那个也不需要,各种 LIST 似乎只有加速作用。
suspended
2020-03-03 15:03:35 +08:00
@Archeb 我没有去看代码,但是如果是从 ChinaDNS 派生的,应该都是同时查国内 /国外的 DNS,先返回的如果是国内 IP 则取信,否则取国外 DNS 的结果,因此是需要判定是否为国内 IP——这个就需要数据库。当然,在 ipv4 地址因为差不多耗尽的现状下,ip 数据库已经变动很少的话,也是可以用的。

我的机制则完全不需要 ip 库,不需要维护,可靠程度极高,甚至可以说不存在判定错误。
Archeb
2020-03-03 15:05:09 +08:00
@suspended 我看了代码,思路和 chinadns 不是完全相同,不过确实依赖国内 IP 数据库。
你的实现方法确实不错的。

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

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

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

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

© 2021 V2EX