sing-box icon indicating copy to clipboard operation
sing-box copied to clipboard

ShadowsocksMulti 多用户UDP 解密失败

Open ipaguge opened this issue 1 year ago • 2 comments

操作系统

macOS

系统版本

14.2.1 (23C71)

安装类型

其他

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

https://github.com/SagerNet/sing-shadowsocks/blob/v0.2.6/shadowaead/service_multi.go

版本

https://github.com/SagerNet/sing-shadowsocks/blob/v0.2.6/shadowaead/service_multi.go

描述

多用户的情况下 配置中的第一个用户解密正常 之后的用户 shadowsocks udp 解密失败

怀疑是buffer 在上一次尝试解密后没有被重置 导致后面的密码全部解密失败###

重现方式

shadowsocks 添加多个user

连接第二个用户或者第三个用户 发起udp请求

日志

No response

支持我们

完整性要求

  • [X] 我保证阅读了文档,了解所有我编写的配置文件项的含义,而不是大量堆砌看似有用的选项或默认值。
  • [X] 我保证提供了可以在本地重现该问题的服务器、客户端配置文件与流程,而不是一个脱敏的复杂客户端配置文件。
  • [X] 我保证提供了可用于重现我报告的错误的最简配置,而不是依赖远程服务器、TUN、图形界面客户端或者其他闭源软件。
  • [X] 我保证提供了完整的配置文件与日志,而不是出于对自身智力的自信而仅提供了部分认为有用的部分。

ipaguge avatar Jun 15 '24 17:06 ipaguge

tcp请求解密无异常 只有udp时出现这个问题 我尝试在github.com/sagernet/sing/common/buf中 增加 如下方式 然后解密时每次使用Copy的新Buffer 解密正常 因此怀疑是 每次解密Buffer并没有重置导致的解密失败

func (b *Buffer) Copy() *Buffer { newBuffer := &Buffer{ data: make([]byte, len(b.data)), start: b.start, end: b.end, capacity: b.capacity, managed: b.managed, } copy(newBuffer.data, b.data) return newBuffer }

ipaguge avatar Jun 15 '24 18:06 ipaguge

try https://github.com/SagerNet/sing-shadowsocks/pull/6?

dyhkwong avatar Jun 16 '24 02:06 dyhkwong