SagerNet / SagerNet/sing-box

对Vless XTLS-VISION Splice的TLS Finish包的特征消除的想法

Open
#4,422 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
38.1k
Forks
4.6k
Avg merge
19d 15h
Merged PRs (30d)
1

Description

操作系统

Linux

系统版本

debian 13

安装类型

sing-box 原始命令行程序

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

No response

版本

描述

在使用vless XTLS-VISION流控中,如果内层流量是TLS 1.3,则会触发Splice。在内层TLS需要结束时,会发出内容长度为19字节的TLS FIN包(开头为1703030013的内容大小的TCP包),随后内层会发出TCP FIN,这个TCP FIN会触发Vless隧道的Client TLS FIN包,然后sing-box服务端会返回vless隧道的Server TLS FIN,随后结束TCP链接。

这个流程会有非常明显的特征,就是在一个TLS Stream内,最后3~4个包,[C->S,C->S,S->C],或者[S>C,C>S,C>S,S>C] 全都是19字节的TLS Application data包的话,基本大概率就是Vless XTLS了。

建议sing-box在VLESS XTRLS流控中,splice=1的情况下,内层接收到TCP FIN之后,sing-box不再优雅关闭外层Vless TLS,而是直接发出TCP FIN关闭隧道。如果vless tls在收到对端tcp FIN后,再发出TLS FIN。避免造成多余的TLS FIN包特征。

重现方式

抓包

日志

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

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the VLESS XTLS-VISION splice handling in the sing-box command-line implementation and reproduce the reported packet sequence with a capture on Debian 13. Compare the inner TCP FIN and outer TLS shutdown behavior; done means the proposed splice=1 shutdown no longer produces the described extra TLS FIN signature while the tunnel still closes correctly.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
networking, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.