dcompass - 纯 Rust 实现的高性能混合 DNS 服务器

2020-11-18 10:03:20 +08:00
 LEXUGE

https://github.com/LEXUGE/dcompass

具体内容都在 GitHub 里,功能大概为: 高速( 760 qps ) 自由路由规则,支持递归嵌套,且提供完整运行前功能检查 支持 DoH (未来支持 UDP ) 缓存持久化,应对恶劣网络环境 应对网络环境热切换(不会出现 SmartDNS Wi-Fi 换 4G 直接 DoH 断连的问题) IPv6 AAAA 屏蔽 选择性 SNI 发送,防止 SNI 被侦测 纯 Rust 实现 轻量域名匹配( 160 us per match )

目前自用体验良好,deploy it and forget it 自测速度快于 smartdns ( 640 qps )

nixos 用户可以看一下 https://github.com/icebox-nix/netkit.nix ,内含打包好的 dcompass 以及可以直接使用的 nixos module

10261 次点击
所在节点    DNS
69 条回复
LEXUGE
2020-12-17 22:19:36 +08:00
@ylx 如果你说的通用是指简单的防污染分流的话,可以: https://gist.github.com/LEXUGE/17f5c4a9d77e5fbe2b2a7fe1bd85fb1f

无需任何外置的文件(域名列表,IP 列表之类的)

@zgzh 上面一条发的也有点小错误,还是以 repo 下的 configs 为准,那些是会过 CI tests 的。
zgzh
2020-12-17 22:33:33 +08:00
@LEXUGE 路由器。。。空间着急。。那个附加文件太大了,,txt 的还可以放得下。。
zgzh
2020-12-17 22:42:07 +08:00
@LEXUGE 哇。。。原来还可以不用附件了参数了,很赞,谢谢
LEXUGE
2020-12-17 23:07:17 +08:00
@zgzh 我考虑编译一组不内置 maxmind geoip 数据库的 binary,但是得明天了。

另外有中文 README (中文写的不太顺手) https://github.com/LEXUGE/dcompass/blob/main/README-CN.md
ylx
2020-12-18 11:22:22 +08:00
上面提到了 host IP 功能
你说通过路由功能实现 能不能给个例子
比如怎么写让 baidu.com 解析到 127.0.0.1 谢谢
ylx
2020-12-18 11:23:21 +08:00
LEXUGE
2020-12-18 13:58:12 +08:00
@ylx 正在做,预计会有 min (不自带 database), mid (自带 GeoIP2-CN), 和 full (自带 maxminddb) 三种版本。


@ylx 目前还没有对任意域名自定义结果的 Action,如果你单纯是想要 block 所有 baidu 的网址的话,可以用 domain matcher + disable action 来实现。自定义结果的话本质是一个 upstream,我在考虑怎么设计可以让语法更简洁

PS: 建议在 GitHub repo 的 Discussion page 上提问,v2ex 我不一定会看
LEXUGE
2020-12-18 23:09:43 +08:00
@ylx
@zgzh

https://github.com/LEXUGE/dcompass/releases/tag/build-20201218_2249
三种不同的构建已经完成了,单纯防污染建议选择 `cn`, 开箱即用且空间占用仅仅比 `min` 大 500 KB.
LEXUGE
2020-12-26 14:35:32 +08:00
支持 IP CIDR matching

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

https://ex.noerr.eu.org/t/726539

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

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

© 2021 V2EX