Skip to content

Handle ECH H2C query correctly#6261

Open
Fangliding wants to merge 1 commit into
mainfrom
ech-h2c
Open

Handle ECH H2C query correctly#6261
Fangliding wants to merge 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
Copy link
Copy Markdown
Member Author

Fangliding commented Jun 4, 2026

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

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) 查询

2 participants