mokeyish / smartdns-rs

A cross platform local DNS server (Dnsmasq like) written in rust to obtain the fastest website IP for the best Internet experience, supports DoT, DoQ, DoH, DoH3.
GNU General Public License v3.0
507 stars 35 forks source link

DoQ DoH/3 支持 #266

Open yoshyv opened 3 months ago

yoshyv commented 3 months ago

请问 smartdns-rs 是否支持 DoQ DoH3 服务端。 readme 里面有写到 Supports UDP, TCP, DoT, DoQ, DoH, DoH3 queries and service 但是配置只有写到客户端情况

server-h3 223.5.5.5
server-quic 223.5.5.5

更多配置给的是不支持DoQ DoH3 的 c smartdns 配置链接 https://github.com/pymumu/smartdns/blob/doc/en/docs/configuration.md

请问 smartdns-rs 目前是否支持 DoQ DoH3 服务端呢?如果支持如何写监听(和证书密钥)配置。 此外,除了 DoQ DoH3 以外,smartdns-rs 和 c smartdns 配置文件是否完全兼容?

谢谢

mokeyish commented 3 months ago

你说的是监听? 上游服务器是支持的。配置兼容,但功能不一定实现。

yoshyv commented 2 months ago

对,就是 bind 的 doq 写法。 具体哪些 c smartdns 的功能不支持呢?

mokeyish commented 2 months ago

看代码是 bind-quic

https://github.com/mokeyish/smartdns-rs/blob/main/src/config/parser/listener.rs#L107-L108

你试一下,我也没实际用这功能。

监听 H3,应该不行的,代码都没写。

yoshyv commented 2 months ago

最新release 0.7.2 版本。

bind-quic :8530
bind-cert-file /etc/letsencrypt/cert.pem
bind-cert-key-file /etc/letsencrypt/key.pem

配置能正常读取,但是实际测试没法查询。设置debug level也没看到相关日志 lsof 可以看到端口正常监听 smartdns 357117 test 9u IPv4 4430893 0t0 UDP *:8530

另外使用 c smartdns 配置时候发现两个问题: 一个是上游 DNS 是 IPv6 地址会报错 unknown conf: server-tls 2606:4700:4700::1111, Error(Error { input: "-tls 2606:4700:4700::1111", code: Space }) 然后 log-console 这个配置也没有识别 unknown conf: log-console yes, Error(Error { input: "log-console yes", code: Tag })

mokeyish commented 2 months ago

配置解析的问题,我周末有时间修复一下。

你DoH测试了么?我自己主要用这个,可以通过 cloudflare 的ECH 检查

yoshyv commented 2 months ago

DoH 没有测试了(因为说不支持 DoH3) 现在是用 c smartdns 的 DoT

mokeyish commented 2 months ago

监听 DoH3 短时间难以支持,hyper 现在虽然开发了 h3,但没有集成 h3。但监听 DoH,DoT 都是支持的,我测试过的。DoQ不确定。

mokeyish commented 2 months ago

配置解析的问题,已经解决了