SagerNet / sing-box

The universal proxy platform
https://sing-box.sagernet.org/
Other
19.97k stars 2.37k forks source link

Sing-Box for Android在打开Minecraft时会回环 #1027

Closed NevadaCities closed 1 year ago

NevadaCities commented 1 year ago

操作系统

Android

系统版本

MIUI 14 (Android 13) & EMUI 8.0 (Android 8.0)

安装类型

sing-box for Android 图形客户端程序

如果您使用图形客户端程序,请提供该程序版本。

1.7.0-alpha.2-9f40467

版本

No response

描述

启动Sing-Box后打开Minecraft,Minecraft会开始连接10.255.255.255:7551,然后Sing-Box开始环回。连接数上到一千到两万不等。

第一条Sing-Box的环回连接来源为172.19.0.0:7551,目标为10.255.255.255:7551。

之后的所有链接都是目标为172.19.0.0:7551的连接,且是Sing-Box自己连接自己。如下图: 2023-11-01 6 57 39 PM

Sing-Box使用的是TUN作为入站,开启了系统代理因此也设置了一个混合入站(MIUI 14)。

TUN的协议栈为Mixed,但经过测试无论是gVisor还是System都有此种情况。

初步认为是Minecraft中Xbox服务的NAT Discovery导致的,但不确定。

重现方式

重现方式如描述所言。

日志

Sing-Box的trace等级日志: output.log 使用的配置文件(已脱敏): test.json

NevadaCities commented 1 year ago

经过多个设备与多个人测试,这个Minecraft环回问题裸核TUN没问题,SFA目前测试从1.6.0开始就开始出现。

仅需要添加geoip: private打开Minecraft就行,不限配置,不限geodata版本,不限改版版本且官方版本都会出现。

而且我尝试过1.7.0版本加上10.0.0.0/8的exclude route然后不删除geoip: private依然会出现。

目前的解决办法就是把private添加进ipcidr规则或者添加进exclude route解决。

得抓包查看10.255.255.255.255:7551端口确认这个连接的用处,然后分析TUN为什么连接10.255.255.255:7551会自己连自己。

NevadaCities commented 1 year ago

我重新看了一下连接,发现Minecraft这条10.255.255.255:7551的连接来源是172.19.0.0:7551,目标是10.255.255.255。

然后其他的的所有链接都是来源172.19.0.0发往172.19.255.255,且是Sing-Box自身发出。

Minecraft的10.255.255.255是在广播10.0.0.0/8,Sing-Box在广播172.19.0.0/16也就是我配置里写的TUN的地址段。

初步认为是TUN或者VPNService的行为问题导致广播风暴出现,可能没有专门应对局域网有广播现象的代码?

也有可能是严格路由没有考虑局域网广播现象,把广播进行了路由并出站。

nekohasekai commented 1 year ago

Fixed in 1.7.0-beta.8