Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIN11的DOH必需认HTTP200状态代码才能用smartdnsr的DOH #1894

Open
ztjal opened this issue Jan 9, 2025 · 5 comments
Open

WIN11的DOH必需认HTTP200状态代码才能用smartdnsr的DOH #1894

ztjal opened this issue Jan 9, 2025 · 5 comments

Comments

@ztjal
Copy link

ztjal commented Jan 9, 2025

问题现象
这个应该算是WIN11的问题,但smartdns也应该承担一部分。
当启用smartdnsr的DOH、且端口为443时,访问“https://IP或域名/反斜杠或任意路径”时,都会返回400错误,就是这个400错误,会导致WIN11的DOH认为服务不可用。
解决方法,只要“https://IP或域名”返回200,WIN11就认了,解决问题了。

运行环境

  1. 固件型号
    smartdns.1.2024.06.12-2222.mipsel-openwrt-all

  2. smartdns来源以及版本
    Release 46

最终建议,只要路径和“/dns-query”没关系的,直接返回200,或者加个选项,例如“强制返回200代码”。

@PikuZheng
Copy link
Contributor

我认为对于不是路径是“/dns-query”的,应返回代码404

@ztjal
Copy link
Author

ztjal commented Jan 9, 2025

我认为对于不是路径是“/dns-query”的,应返回代码404

别增加代码了,这又不是要做成真正的HTTP服务端,表现成“我能正常访问”就行了。

@giveup
Copy link

giveup commented Jan 9, 2025

我认为对于不是路径是“/dns-query”的,应返回代码404

别增加代码了,这又不是要做成真正的HTTP服务端,表现成“我能正常访问”就行了。

这是RFC8484的规范
https://datatracker.ietf.org/doc/html/rfc8484#section-4.1.1

@PikuZheng
Copy link
Contributor

rfc 没有规定在“不是在查询dns”时,http应该应答什么,rfc 建议遵循 http 的规范 (section-4.2.1)

@ztjal
Copy link
Author

ztjal commented Jan 10, 2025

我又重新研究了下,先说结果,不是200的问题,是“HTTP2”的问题,smartdns不支持http2,只返回1.1的,所以WIN11不认,感觉就是WIN11的DOH强制使用HTTP2,而不会先协商一下使用那种版本的协议。
(用“win11 doh http2”在GG和BING上搜索竟然找不到任何相关资料,难道我要去怼巨硬?)

测试过程:

1,smartdns直接使用443端口的DOH,WIN11不认。

2,NGINX反代smartdns,“listen 443 ssl http2;”,WIN11认了,成功解释。
NGINX日志的“$request”打印出“POST /dns-query HTTP/2.0”。

3,NGINX仅去掉http2,“listen 443 ssl;”,WIN11不认了。

另外,还印证一下无谓的事情,在WIN11上自己加的DOH DNS模版,DHCP分配到IP(DNS也是自动),只要配合模版,虽然DNS那里显示的是(未加密),但实际看NGINX日志,WIN11就在那解释了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants