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

9194 次点击
所在节点    DNS
69 条回复
LEXUGE
2020-11-19 08:16:05 +08:00
@zro EDNS 我没有
@INTEL2333 可以考虑,不过我没有 v6 环境,很难测试
LEXUGE
2020-11-19 08:17:13 +08:00
新加入了 DNS over TLS 功能的支持
INTEL2333
2020-11-19 08:18:29 +08:00
@zro 还有个可能不符合你要求的解决方案,只用一个 adgh

用 8.8.8.8 并过滤
240e:*
2408:*
2409:*
INTEL2333
2020-11-19 08:21:48 +08:00
@LEXUGE 唔,应该不用 v6 环境也能测试,方案 2 的话,应该指定一下 edns 地址就可以了

蟹蟹大佬啦
HalloCQ
2020-11-19 08:46:52 +08:00
@zro 支持 edns 的大把。overture,adguardhome 等等
LEXUGE
2020-11-19 08:51:27 +08:00
@HalloCQ overture 挺 buggy 的...我还修过一个 bug...也就是因为它和 smartdns 都很 buggy 我才决定自己写
打算支持 EDNS,回去写个 roadmap
HalloCQ
2020-11-19 08:52:54 +08:00
@LEXUGE 我也没用它了,刚换成 adgh,感觉挺好用
zgzh
2020-11-19 13:44:34 +08:00
感谢~已经部署,成功运行,查询速度很快
zro
2020-11-19 13:47:36 +08:00
@INTEL2333 #23
ADGH 要是能加上“只查询 IPv6”功能就好弄多了;像你这样 ADGH 开一个 v4 only 的,有遇到像这样的情况吗?
手机挂 Surge 开 T 宝,查最近请求时发现,居然还会访问某个 v6 IP 的网站,无域名的;偶尔一打开又会问我要不要切换到美国版 T 宝。。但看 Surge 的请求,IP 归属地都是五星旗

@HalloCQ #25

ADGH 的 ECS settings:edns_client_subnet — Enable EDNS Client Subnet option. If enabled, AdGuard Home will be sending ECS extension to the upstream DNS servers. Please note, that this will be done for clients with public IP addresses only.

从公网查询才有效果的。。因为我是在境外 VPS 搭,所以需要像 dnsmasq 的 add-subnet 这样的功能,没发现 ADGH 有其他 ECS 的设置~
INTEL2333
2020-11-19 14:28:45 +08:00
@zro 唔,没遇到过
上面那个方案其实还可以节省一个 adgh

上游 8.8.8.8 和 2001:4860:4860::64,选优模式

过滤
240e:*
2408:*
2409:*
64:ff9b::*

不过似乎会造成无 aaaa 的域名在查询 aaaa 记录时返回时间超过 1s
INTEL2333
2020-11-19 14:30:49 +08:00
@zro 话说淘宝会不会也有类似腾讯的 httpdns ?
如果有的话似乎就难办了,只能 ip6tables 来 drop 了
LEXUGE
2020-11-19 16:42:09 +08:00
@zgzh 啊这,我都没法 crate,你直接 build 的吗
我不敢保证现在不会有 breaking change,不过感谢支持
zgzh
2020-11-19 16:57:36 +08:00
@LEXUGE 是的 下载源码后 cargo build --release,在树莓派上顺利构建
LEXUGE
2020-11-19 18:02:36 +08:00
@zgzh 那我打算提供一下交叉编译版本
HalloCQ
2020-11-20 09:25:33 +08:00
@zro 因为你的 adgh 部署在服务器上,当你本地向 adgh 请求的时候,adgh 拿到的就是你的公网 ip 了
HalloCQ
2020-11-20 09:27:51 +08:00
@zro 就算运营商分配给你的不是公网 ip,但是你 adgh 是搭在一个外网的 vps 上,难道 adgh 还能拿到你的内网 ip 不成?
zro
2020-11-20 13:07:48 +08:00
@HalloCQ #35 Sorry,没说清楚,本地是以 VPN 跟外网 VPS 连的,所以 ADGH 根本不知道我的外网 IP 。。ADGH 没有对外暴露端口的~
HalloCQ
2020-11-20 16:58:33 +08:00
@zro 我是把 adgh 部署到国内服务器,然后分流。国内域名用 doh.pub ,国外域名请求 dns.google 。速度快的不行,还能去广告
2001225354
2020-11-21 17:33:34 +08:00
会有路由器版本么
LEXUGE
2020-11-21 18:56:01 +08:00

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

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

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

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

© 2021 V2EX