Skip to content

TLS ECH: Handle "h2c://" query correctly#6261

Merged
RPRX merged 1 commit into
mainfrom
ech-h2c
Jun 9, 2026
Merged

TLS ECH: Handle "h2c://" query correctly#6261
RPRX merged 1 commit into
mainfrom
ech-h2c

Conversation

@Fangliding

Copy link
Copy Markdown
Member

close #6259

Co-Authored-By: j2rong4cn <36783515+j2rong4cn@users.noreply.github.com>
@j2rong4cn

Copy link
Copy Markdown
Contributor

内置dns的DOH h2c是支持"fromMitm",ECH的就不能吗 613c63b

func NewDoHNameServer(url *url.URL, dispatcher routing.Dispatcher, h2c bool, disableCache bool, serveStale bool, serveExpiredTTL uint32, clientIP net.IP) *DoHNameServer {
url.Scheme = "https"
mode := "DOH"
if dispatcher == nil {
mode = "DOHL"
}
errors.LogInfo(context.Background(), "DNS: created ", mode, " client for ", url.String(), ", with h2c ", h2c)
s := &DoHNameServer{
cacheController: NewCacheController(mode+"//"+url.Host, disableCache, serveStale, serveExpiredTTL),
dohURL: url.String(),
clientIP: clientIP,
}
s.httpClient = &http.Client{
Transport: &http2.Transport{
IdleConnTimeout: net.ConnIdleTimeout,
ReadIdleTimeout: net.ChromeH2KeepAlivePeriod,
DialTLSContext: func(ctx context.Context, network, addr string, cfg *tls.Config) (net.Conn, error) {
dest, err := net.ParseDestination(network + ":" + addr)
if err != nil {
return nil, err
}
var conn net.Conn
if dispatcher != nil {
dnsCtx := toDnsContext(ctx, s.dohURL)
if h2c {
dnsCtx = session.ContextWithMitmAlpn11(dnsCtx, false) // for insurance
dnsCtx = session.ContextWithMitmServerName(dnsCtx, url.Hostname())
}
link, err := dispatcher.Dispatch(dnsCtx, dest)

@Fangliding

Fangliding commented Jun 4, 2026

Copy link
Copy Markdown
Member Author

不知道内置DNS是什么时候加的 我认为这不是很有必要 而且这也不是 "mitm"

Maolaohei added a commit to Maolaohei/Bray-Core that referenced this pull request Jun 4, 2026
…(freedom compatibility)

XTLS#6261 — Handle ECH H2C query correctly (Fangliding)
- dnsQuery: h2c scheme → https,修复 ECH 配置查询

XTLS#6254 — brutal finalmask (LjhAUMEM)
- 新增 force-brutal finalmask 类型,配合 tcp-brutal 内核模块
- 7 文件新增,全新增模块

XTLS#6058 — Direct/Freedom Better Compatibility (Meo597)
- strategy 类型从 [][]byte → [11][3]byte 更安全
- freedom 出站新增 DomainStrategy / targetStrategy 支持
- 兼容旧的 freedom.domainStrategy 配置
@j2rong4cn

Copy link
Copy Markdown
Contributor

不知道内置DNS是什么时候加的 我认为这不是很有必要 而且这也不是 "mitm"

内置dns的DOH h2c支持"fromMitm",而ECH不支持"fromMitm"?岂不是很迷惑?

@RPRX

RPRX commented Jun 9, 2026

Copy link
Copy Markdown
Member

@Fangliding 我发现我记不清那段时间我都改了啥,可能是我加的吧,@j2rong4cn 你说的那个等有实际需求再加吧

@RPRX RPRX changed the title Handle ECH H2C query correctly TLS ECH: Handle "h2c://" query correctly Jun 9, 2026
@RPRX RPRX merged commit a0e9347 into main Jun 9, 2026
48 checks passed
Maolaohei added a commit to Maolaohei/Bray-Core that referenced this pull request Jun 9, 2026
…(freedom compatibility)

XTLS#6261 — Handle ECH H2C query correctly (Fangliding)
- dnsQuery: h2c scheme → https,修复 ECH 配置查询

XTLS#6254 — brutal finalmask (LjhAUMEM)
- 新增 force-brutal finalmask 类型,配合 tcp-brutal 内核模块
- 7 文件新增,全新增模块

XTLS#6058 — Direct/Freedom Better Compatibility (Meo597)
- strategy 类型从 [][]byte → [11][3]byte 更安全
- freedom 出站新增 DomainStrategy / targetStrategy 支持
- 兼容旧的 freedom.domainStrategy 配置
Maolaohei added a commit to Maolaohei/Bray-Core that referenced this pull request Jun 9, 2026
- PR XTLS#6261 (ECH H2C fix): TLS ECH h2c:// 查询正确处理
- PR XTLS#6254 (brutal): TCP 暴力加速器
- PR XTLS#6258 (Custom sessionID): XHTTP sessionIDTable/sessionIDLength
- PR XTLS#4231 (mux maxReuseTimes): Mux 连接复用次数上限
- PR XTLS#6058 (freedom compatibility): Freedom 出站兼容性改进
- XUDP: 改进 UDP over XUDP 传输效率
- 新增 xray.go 配置框架
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

Successfully merging this pull request may close these issues.

[BUG] TLS ECH无法使用 DOH(h2c) 查询

3 participants