-
Notifications
You must be signed in to change notification settings - Fork 4.3k
uTLS for DOH #4313
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
Comments
暂不考虑 |
the built-in dns hasn't changed in a long time and is outdated. I'm a python developer, otherwise I would have PR a long time ago. domain fronting implementation is easy, It can be used in other cases as well, at least you can consider this. Anyway, it's better to leave this issue open because sooner or later the built-in dns will have to be updated. |
我不是那种喜欢堆很多 open issues 的人 我对issue的态度很明确 保持打开的都是确认无误的BUG和有人take的feature request 留太多陈旧的open issues不会让哪天有好心人从天而降从里面随机pick一个实现 只会堆的越来越多最后让open失去的意义 变成垃圾堆 |
对于 1 和 2,我可以把 DoH 改成 uTLS Chrome 并实际应用 refraction-networking/utls#161 只是看起来无人维护 uTLS 了,可能以后 Xray 不得不维护一个 Chrome 指纹 |
2,3,4 are not very important right now.(but it's important in the future) but It would be great if number 1 was done. 1 practically solves the DNS problem in Iran. Fragment is not suitable for DNS at all. |
so I'm waiting for 1 and 2, I hope you don't forget, THANK YOU |
#4185 |
My emphasis is on the "domain fronting" rather than the "fingerprint". |
if we use "fake-sni", servers give us the "default-certificate":
///
|
只给 https+local 加了 Chrome's fingerprint with fakeSNI,一是非 local 不需要,二是绕过服务端路由就抽象了,试试 ee55203
|
没必要动吧 这样又不影响 本来就是强制尝试h2的 http2是个low level的包 分开处理h1 h2的时候才会用 |
其实甚至不用单独写 直接用核心里的tcp dialer带conf传出去就行了 config里可以嵌入包括fingerprint在内的整个tlsSetting |
报错 net/http: HTTP/1.x transport connection broken: malformed HTTP response,它可能是走 upgrade,我给它改成直接 http2 吧
配置加哪是个问题,而且我们有 REALITY,似乎不太有必要给 tlsSettings 加 fakeSNI |
给utls加alpn看看 它默认是不执行alpn协商的(虽然会发) 向上层返回协商结果为空 可能默认h1了
我之前觉得是改servername开insecure的 我知道utls有更高级的选项 那算了就这样吧 |
Chrome 指纹默认 h2, http/1.1 的,我感觉 Go 这个 http 包可能默认 h1 再 upgrade 到 h2,让它控制 TLS 的话 ALPN 会是仅 http/1.1
|
@Fangliding 试试 ee55203 的 fakeSNI 有没有效,用 WireShark 看一下 |
@RPRX |
@patterniha 我本来还想说,你可以直接用 https+local://8.8.8.8/dns-query,fakeSNI 设为 www.google.com |
我感觉 DoH 应该都有 IP 证书吧,不然如果无法直接通过 IP 访问,这 DNS 也是抽象 |
yes, but not for DOH behind the cdn and don't want their IP to be revealed. |
@patterniha 我不确定 Xray 内置 DNS 里的 |
close??? where is options in #4313 (comment) ??? |
it works correctly, I had a typo. |
@RPRX |
first, not work. |
h2c 加上 tls 不就是 h2 吗?所以 mitmAlpn11 应当置为 false,ALPN 的 fromMitm 应当被忽略
|
你再测测,确定不行的话我让 mitmServerName 从别处取值 |
dns -> routing -> tls-repack correct? |
mitmAlpn11 == dokomo with mitm with h11 alpn ? |
内部变量名 |
aha internal |
my tls-repack outbound:
for "h2c://8.8.8.8/dns-query" but not work |
@RPRX |
its my fault, i run the certificate command and certificate is overriden wait for test again |
@patterniha 不过我确实也发现了问题,测新的 613c63b |
This comment has been minimized.
This comment has been minimized.
it works we have only one tls-repack outbound, GREAT. |
but all request send with one sni. |
这东西我现在不是很想弄成一个数组,或许以后支持 geosite |
thx again |
its ok, now easier to import |
@patterniha 模板搞快点 |
|
uploaded h2c + mitm template. |
使用25.1.30测试,发现https+local的指纹是t13d1311h2_f57a46bbacb6_e7c285222651,搜索之后(https://github.com/hashicorp/terraform-provider-aws/issues/39311)有提到该指纹是go1.23的指纹 |
@intmain0 这项修改已被撤回,你需要使用 DoH h2c + freedom TLS 实现 Chrome 指纹 |
BUG DNS(h2c) sometimes only return ipv6 !!! so if my network doesn't support ipv6 connection fails.
after restart xray-core(and deleted the dns cache) The problem is usually solved. |
@RPRX this log show that even in doh we send two request for ipv4 and ipv6:
i think in doh we can send both ipv4 and ipv6 queries in one request, right? ///
|
我不确定 你要设置 DNS 的 queryStrategy,让它只解析出 IPv4 |
@RPRX and for serverless-for-iran Which one should I choose? so this problem should be solved |
Uh oh!
There was an error while loading. Please reload this page.
please add these features to built-in DOH:
///
the iran-great-firewall block most DOHs by sni(tls client hello hostname) but their IPs is not blocked.
one way to access DOH is using fragment, but fragment doesn't work sometimes and even if it works, it will increase the dns round-trip time.
the best way is using domain fronting,
I implemented domain fronting in python and it's working great for DOH.
all popular DOHs allow domain fronting.
Its implementation is also very easy:
///
tls fingerprint is currently only available for proxy-outbounds, please add this feature for DOH, so it will no longer be recognizable.
///
some DOH support http/3. please add doh over http/3.
///
add this feature to add/edit/remove doh http headers.
///
so the final dns configuration would be something like:
The text was updated successfully, but these errors were encountered: