Skip to content

Conversation

@Meo597
Copy link
Collaborator

@Meo597 Meo597 commented Oct 20, 2025

queryStrategy: UseSystem 字面意思是一个万金油且无害的值

服务器端用了代价很大

如果没有 code review 谁会知道里面有坑呢?

现在改成移动端每次测试,其它平台只一次
现在改成:

  • 图形平台被认为是有可能到处连 wifi 导致 ipv6 时有时无,所以缓存 100ms
  • 命令行平台被认为是服务器,永久缓存

这本应是下游而非 core 该做的事情,它们直接监听 network capabilities changed 就行了

@patterniha
Copy link
Collaborator

It doesn't matter which OS the Xray-core runs on, (people may use windows with mobile-data-hotspot)

this PR break my Serverless functionality and should not be merged.

if you want to check system support-ips only once please add useSystemOnce option.

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

下一秒又该说会抱着 linux 笔记本乱跑了

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

你这个 server-less-iran 具体有多少人在用不好说

单看上手难度,core 根本没有 tun
无论是 pc 还是移动端
人家都得用别的玩意做前置

还非得优先 ipv6 不可,v4 不能用吗?

退一万步就算非要 v6
支持手机就够了,非要把抱着 linux 笔记本乱跑还必须要支持 v6 的场景考虑进去
是不是有点过分了

那么小众,极端,不知道能存活几天的需求
拉上所有用户买单?

再加个所谓的 useSystemOnce 选项浪费用户心智

眼里只有自己?

@patterniha
Copy link
Collaborator

I worked hard for "Serverless" for 6 months and now it works great.

I add these option for that.

first you say this option is useless, and then you decide to change it's functionality, it is not acceptable.

///

so please add useSystemOnce option and i will approve that, and because we are both agree on this option @RPRX will definitely merge it.

///

Please let's work together, not fight.

@patterniha
Copy link
Collaborator

now, thousands of people use "Serverless", there are many forked-versions of it in many Iranian-telegram-channels.

second, most Instagram IPv4 is blocked in Iran, but all IPv6 is not blocked, so users with IPv6-system should access Instagram immediately.

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

伊朗用户
非要用 server-less
并且抱着 linux 笔记本到处跑
还必须得优先 v6 不可

请证明它的合理性

@wyx2685
Copy link
Contributor

wyx2685 commented Oct 20, 2025

@patterniha 这么特殊能不能搞个伊朗专用fork啊,各自发展不好吗

@maoxikun
Copy link
Contributor

@patterniha 这么特殊能不能搞个伊朗专用fork啊,各自发展不好吗

+1,一颗xxx坏了一锅汤

@patterniha
Copy link
Collaborator

@patternihaIt's so special, can't we create an Iranian-specific fork? Can't we develop it separately?

I add useSystem option, it works great for a long time, now someone want to breaks its functionality!!!

///

also, i add many features that is not related to Serverless, Xray-core is core It must meet all needs, not destroy one party's need to meet another's.

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

此 PR 不会破坏你声称的 “成千上万伊朗人” 都在用的 server-less 功能

如果你硬是要辩解:
就有伊朗用户
喜欢开着 serverless
非得 ipv6 优先,因为喜欢高强度刷 ins
还总是喜欢连没有 ipv6 的 wifi
手机刷不爽,非得用 linux 笔记本刷
非得用 xray-core 不支持的 tun 不可
抱着 linux 笔记本到处跑

我无话可说

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

我打个游戏 buff 都没你叠那么多

@patterniha
Copy link
Collaborator

you said this option is totally useless: #4666 (comment)
I don't know how you suddenly found an urgent need for this option.

///

Instead of pointless discussion, why don't you implement useSystemOnce,
we are two Project-X-members that agree on this option, so it definitely will be added.

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

再糊个 useSystemOnce 这玩意就是来恶心用户的

浪费 99.999999% 用户心智
用来满足那 0.0000001% 非要抱着 linux 笔记本到处跑还必须得用 tun 高强度刷 ins 少了一秒都不行一天连八百次不支持 ipv6 wifi 大街上也得连手机热点刷 ins 的不知道哪天就被封的伊朗 server-less 用户

@patterniha
Copy link
Collaborator

First, you haven't added the "windows" yet, i write this comment with using serverless in windows with mobile-hotspot!!!

also, it is definitely better to add another option instead of separating OS.

@patterniha
Copy link
Collaborator

patterniha commented Oct 20, 2025

@Meo597

I think about that again, we can cache system network-status-information and only if network-status-information changes we try to bind a port again.

so there is no need for useSystemOnce, also getting system network-status cost really zero.

after implementing that, i close this PR, OK?

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

你之前自己说只要 cover 手机就够了

现在你又虚构出有成千上万”抱着笔记本到处跑还必须得用 tun 高强度刷 ins 少了一秒都不行一天连八百次不支持 ipv6 wifi 大街上也得连手机热点刷 ins 的不知道哪天就被封的伊朗 server-less 用户“

就算 darwinwindows 加上

下一秒成千上万抱着 linux 笔记本...... 到处跑的伊朗用户又来了

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

I think about that again, we can cache system network-status-information and only if network-status-information changes we try to bind a port again.

如果你想的话,请自己开一个新的 PR
然后由 @RPRX 决定用哪个

@patterniha
Copy link
Collaborator

You still want to fight instead of cooperate, there is no competition, we are both members of the same team, your behavior and way of speaking are very strange

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

你虚构出成千上万”抱着笔记本到处跑还必须得用 tun 高强度刷 ins 少了一秒都不行一天连八百次不支持 ipv6 wifi 大街上也得连手机热点刷 ins 的不知道哪天就被封的伊朗 server-less 用户“

是心平气和地讨论?

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

此 PR 最多把 darwinwindows 加上

来 cover 你声称的 0.0000001% ”抱着笔记本到处跑还必须得用 tun 高强度刷 ins 少了一秒都不行一天连八百次不支持 ipv6 wifi 大街上也得连手机热点刷 ins 的不知道哪天就被封的伊朗 server-less 用户“

@patterniha
Copy link
Collaborator

patterniha commented Oct 20, 2025

My Instagram-example is just example, after changing dual-stack nerwork to ipv4-only-network, if we still return IPv6 for UDP, it causes data failed to send.

Network may changes in any OS, and this problem is not related to OS.

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

你的 dial udp 开销太大
至少对服务器来说不可接受

你所声称的场景是 eeeeeeeeeeedge case,脱离实际需求
千万人中找不到一个

@xujiegb
Copy link

xujiegb commented Oct 20, 2025

你的 dial udp 开销太大 至少对服务器来说不可接受

你所声称的场景是 eeeeeeeeeeedge case,脱离实际需求 千万人中找不到一个

请问可以提供一个选择吗,Linux DNS只探测一次说实话不友好。

@fujiwarabach
Copy link

@Meo597 @xujiegb I’m really worried — this will have a big impact on Linux users, including me.
Screenshot from 2025-10-21 04-46-44

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

@fujiwarabach @xujiegb

对于 Linux 笔记本用户来说:
代理流量你能不能用 v6 是服务器决定的,配置文件写死用不到 UseSystem,影响不到你

除非你是:直连流量必须用 UDP v6 + 频繁切换到没有 v6 的环境 + 不能重启 xray-core

@xujiegb
Copy link

xujiegb commented Oct 20, 2025

@fujiwarabach @xujiegb

对于 Linux 笔记本用户来说: 代理流量你能不能用 v6 是服务器决定的,配置文件写死用不到 UseSystem,影响不到你

除非你是:直连流量必须用 UDP v6 + 频繁切换到没有 v6 的环境 + 不能重启 xray-core

有时会遇到,我想这个用到Windows上对Windows来说也是不友好的。只是对于经常宅在一处的人来说无感知。
请问是否可以提供一个选项,一般情况下只探测一次呢?

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 20, 2025

对Windows来说也是不友好

Windows 和 macOS 是可以排除的

Linux 用户为什么不考虑给 systemd 挂一条命令重启 xray?

@xujiegb
Copy link

xujiegb commented Oct 20, 2025

Linux 用户为什么不考虑给 systemd 挂一条命令重启 xray?

不希望与系统耦合

@xujiegb
Copy link

xujiegb commented Oct 20, 2025

Linux 增加命令 排除在外是否可以?没输命令就检查一次?
我想echo $XDG_SESSION_TYPE应该就可以区分

@fujiwarabach
Copy link

fujiwarabach commented Oct 21, 2025

@fujiwarabach(Fedora)

well

Linux 用户为什么不考虑给 systemd 挂一条命令重启 xray?

Should it be reported to SELinux?

@xujiegb
Copy link

xujiegb commented Oct 21, 2025

Should it be reported to SELinux?

Not for now.

@Meo597 Meo597 changed the title DNS: cache network capability check on non-GUI platforms DNS: Cache network capability check on non-GUI platforms Oct 21, 2025
@Meo597 Meo597 requested a review from patterniha October 26, 2025 13:19
@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 26, 2025

@xujiegb @patterniha

没用过 ipv6 不清楚
是否有必要完整探测而不是像现在这样只检查有无默认网关

@Meo597 Meo597 changed the title DNS: Cache network capability check on non-GUI platforms DNS: Cache network capability check Oct 26, 2025
@xujiegb
Copy link

xujiegb commented Oct 29, 2025

@xujiegb @patterniha

没用过 ipv6 不清楚 是否有必要完整探测而不是像现在这样只检查有无默认网关

i still think other ways for example: limiting port-binding to 1-bind per seconds is a better way.

编译了一下,好像软路由从光猫开始往下挂几台路由器,ipv6容易炸,软路由也是tty,0.5秒检测应该是个好选择

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 29, 2025

应该和此 PR 无关,因为 tty 只检查一次

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 29, 2025

现在图形平台检测结果缓存 100ms

@xujiegb
Copy link

xujiegb commented Oct 29, 2025

现在图形平台检测结果缓存 100ms

我先改一下为路由器改一下tty编译后使用一段时间,来确认是不是这个情况
猜测是(多级路由)软路由重启和DHCP续期

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 29, 2025

func checkRoutes() (bool, bool) {
	if !isGUIPlatform() {
errors.LogInfo(s.ctx, "****** TTY ******")
		routeCache.Once.Do(func() {
			routeCache.ipv4, routeCache.ipv6 = probeRoutes()
		})
		return routeCache.ipv4, routeCache.ipv6
	}
errors.LogInfo(s.ctx, "****** GUI ******")
	routeCache.RWMutex.RLock()

加条日志看看,先看看是不是误判,然后如果是 TTY 就更不可能出错了

@Meo597
Copy link
Collaborator Author

Meo597 commented Oct 29, 2025

一般打开一个网页会有 3~10 次 DNS 解析
(有 xray dns fallback 策略会更多)

现在不至于打开一个网页要监听几十次端口
就算是客户端行为也太蠢了

现在 100ms 内至多两次

@Meo597 Meo597 changed the title DNS: Cache network capability check perf(dns): cache network capability check Oct 31, 2025
@fujiwarabach
Copy link

fujiwarabach commented Nov 8, 2025

@Meo597 @xujiegb Maybe China Telecom blocks [2001:500:2::c]:53 .

@Meo597
Copy link
Collaborator Author

Meo597 commented Nov 8, 2025

并不会真的发包,只是 bind port 来测试是否存在 ipv4 / 6 的默认路由

@Meo597 Meo597 removed the request for review from patterniha November 13, 2025 15:45
@RPRX
Copy link
Member

RPRX commented Nov 21, 2025

上面的争议解决了吗

@Meo597
Copy link
Collaborator Author

Meo597 commented Nov 21, 2025

上面的争议解决了吗

解决了,因为来了两个真的在用 Linux 桌面端笔记本的用户
一瞬间给出了解决方案
读一下环境变量就能判定桌面端还是服务器了

然后桌面端也会被缓存检查结果 100ms

@RPRX RPRX merged commit 4956e65 into XTLS:main Nov 21, 2025
39 checks passed
@Meo597 Meo597 deleted the fix-p-checkSystemNetwork branch November 21, 2025 07:22
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.

7 participants