Skip to content

Fixed WireGuard outbound DNS regression. - #6569

Open
LagPixelLOL wants to merge 1 commit into
XTLS:mainfrom
LagPixelLOL:wg-dns-fix
Open

Fixed WireGuard outbound DNS regression.#6569
LagPixelLOL wants to merge 1 commit into
XTLS:mainfrom
LagPixelLOL:wg-dns-fix

Conversation

@LagPixelLOL

@LagPixelLOL LagPixelLOL commented Aug 1, 2026

Copy link
Copy Markdown

Fixed WireGuard outbound DNS regression introduced in #6287.

Fixes #6567.

@LagPixelLOL

Copy link
Copy Markdown
Author

cc: @LjhAUMEM @bytecategory @Fangliding

@LjhAUMEM

LjhAUMEM commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

#6571 我两个 issue 一起带了吧

@LagPixelLOL

Copy link
Copy Markdown
Author

#6571 我两个 issue 一起带了吧

我 issue 开都开了还是让我 merge 一个吧...
而且你那个没删不需要的代码 (wireguard-go复制出来的那一份)
而且 issue 分开比较好

@Fangliding

Copy link
Copy Markdown
Member

死代码确实需要删一下

@LjhAUMEM

LjhAUMEM commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

我 issue 开都开了还是让我 merge 一个吧...

ok,看之前的回复说对错不管我还以为你不情愿呢

@LjhAUMEM LjhAUMEM left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

@LjhAUMEM 在这个 PR 前是不是甚至不是 DoH 所以会泄露明文 DNS query?这个 PR 后没写 DNS 模块的话是不是也会泄露?

@Fangliding

Copy link
Copy Markdown
Member

跟freedom差不多

@LjhAUMEM

Copy link
Copy Markdown
Collaborator

此pr前也不影响他配置 doh,此pr后没写 DNS 模块默认本地泄露

题主认为目标网站知道他在用1.1.1.1是一件非常恐怖的事情

@Fangliding

Fangliding commented Aug 12, 2026

Copy link
Copy Markdown
Member

这是vpn tunnel的固有缺陷 必须传IP必须有一个解析服务器 定死了不对 用用户自己的DNS结果就是DNS泄露 正常的代理协议都能传域名所以以前遇到的少而已
之前有想过保留这个remote解析 允许在出站自己指一个远程解析用的DNS 但是如果缺省还是走DNS模块那问题不变 如果缺省指一个默认IP就会是这个PR前这样会固定一个远程服务看起来不太好 强制必填的话又会死一堆只是在服务端正常用用warp的人

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

此pr前也不影响他配置 doh

没看懂哪里能配置 DoH

此pr后没写 DNS 模块默认本地泄露

@Fangliding WG 出站文档补个 danger 重点提醒一下这个行为吧,话说那个 MASQUE 应该能传域名的吧

@Fangliding

Copy link
Copy Markdown
Member

不能传 因为我之前研究过

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

MASQUE 不是 HTTP CONNECT 吗那就纯属设计问题了,应该不是像 WG 直接把三层包塞进去吧?不然 h2 模式岂不是很爆炸

@LjhAUMEM

Copy link
Copy Markdown
Collaborator

强制必填的话又会死一堆只是在服务端正常用用warp的人

可以让喜欢走本地解析的强制配置dns模块

没看懂哪里能配置 DoH

和其他出站一样,其他出站怎么在客户端控制内层解析就怎么做

@Fangliding

Copy link
Copy Markdown
Member

MASQUE 不是 HTTP CONNECT 吗那就纯属设计问题了,应该不是像 WG 直接把三层包塞进去吧?不然 h2 模式岂不是很爆炸

准确来说是唯一已知服务端CF不让(不过CF也不是标准的MASQUE)

还有它的确是带三层包(IP模式下)

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

@LjhAUMEM 懂了也就是说此 PR 前只是没写 DNS 模块时走硬编码的 1.1.1.1,那这确实不合适,得改掉

@LjhAUMEM

Copy link
Copy Markdown
Collaborator

@LjhAUMEM 懂了也就是说此 PR 前只是没写 DNS 模块时走硬编码的 1.1.1.1,那这确实不合适,得改掉

我一开始准备等udphop来着,等着等着我也忘了

@LjhAUMEM

Copy link
Copy Markdown
Collaborator

其实还有一种方法,不配置默认用本地dns发起远端解析,让喜欢走本地解析的强制配置dns模块才是正解

@LjhAUMEM

LjhAUMEM commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

dns泄露分两种

  1. 所用 dns
  2. 来源 ip

此前是默认两个都没防,现在默认通过远端发起可以防住第二点,至于第一点只能靠自己配置选择喜欢的 dns 且第一点跟是否 doh 无关

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

我觉得默认远端解析还是比默认本地泄露好,加个配置项吧,没配置就默认 1.1.1.1,只是 @LagPixelLOL 又没拿到contributor

需要尊重 DNS response TTL,至于 DoH 语法感觉可有可无?毕竟如果被代理的 SNI 是 ECH 域名那么查询的就是这个域名

@LjhAUMEM

Copy link
Copy Markdown
Collaborator

只是 @LagPixelLOL 又没拿到contributo

要水的话我还有很多方法,都盯着我写的revert是怎么个事,包括第一次引入hy就有人迫不及待给xp加bbr,本来也在计划里

需要尊重 DNS response TTL

这个应该暂时没有办法,所以我之前问了一句 mult dns instance 有没有计划

@RPRX

This comment was marked as outdated.

@Fangliding

Copy link
Copy Markdown
Member

现在这个copy过来的模块不动 允许在proxy配置就是了 填个0.0.0.0代表走dns模块 需要其他任何高级功能就要求走dns模块

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

@LjhAUMEM 只是尊重 DNS TTL 也即加个 map 应该没啥难度吧

@LjhAUMEM

Copy link
Copy Markdown
Collaborator

@LjhAUMEM 只是尊重 DNS TTL 也即加个 map 应该没啥难度吧

也可以,之前想着直接复用 dns client 配个 outbound handle

@LjhAUMEM 要不你干脆把 WG 出站那个那 domainStrategy 改成支持直接写 1.1.1.1 这样的吧,同时也是默认值

如果写成 ForceIP 的就优先走 DNS 模块,没配置 DNS 模块的话就走 Golang 解析

domainStrategy 默认就是 ForceIP,会随机 v4 v6 如果 localaddress 都有 v4 v6,这样不如加个 ”dns“

没在 json 配置 dns 模块 dns client 默认应该就是 golang 的 net.lookup

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

@LjhAUMEM 那你加个 remoteDNS 配置项吧,默认 1.1.1.1,尊重 domainStrategy,可以填 "local" 也就是变成这个 PR 的行为

本来还想着要不要有 "local+" 这种语法,想想还是算了,local 的话要复杂配置应当去配置 DNS 模块

@LjhAUMEM

Copy link
Copy Markdown
Collaborator

ok,需要几天,最近有点忙,加个 remoteDNS 以及尊重 ttl

@RPRX

RPRX commented Aug 12, 2026

Copy link
Copy Markdown
Member

感觉明年得狠狠重构一下 Xray,主要是 multi-routing 和 multi-dns

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.

WireGuard Outbound DNS Regression

4 participants