Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add VLESS seed configurations #3260

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
Open

Add VLESS seed configurations #3260

wants to merge 11 commits into from

Conversation

yuhan6665
Copy link
Member

@yuhan6665 yuhan6665 commented Apr 13, 2024

@RPRX I think it is ready for review now. I still need to do some test, including compatibility.
I feel this code structure is much better than before. Flexible to implement padding, delay and independent scheduler in the future. Although I don't how to design the user config ;) so currently the config is just on/off and actual values are hard coded and features are basic. But I think the concept should be easy to grasp, e.g:

message Addons {
  string Flow = 1;
  bytes Seed = 2;
  SeedMode Mode = 3;
  string Duration = 4;  // "0-8" means apply to number of packets, "1000b-" means start applying once both side exchange 1kb data, counting two-ways
  PaddingConfig Padding = 5;
  DelayConfig Delay = 6;
  SchedulerConfig Scheduler = 7;
}

enum SeedMode {
  Unknown = 0;
  PaddingOnly = 1;
  PaddingPlusDelay = 2;
  IndependentScheduler = 3;
}

message PaddingConfig {
  uint32 RegularMin = 1;
  uint32 RegularMax = 2;
  uint32 LongMin = 3;
  uint32 LongMax = 4;
}

message DelayConfig {
  bool IsRandom = 1;
  uint32 MinMillis = 2;
  uint32 MaxMillis = 3;
}

message SchedulerConfig {
  uint32 TimeoutMillis = 1; // original traffic will not be sent right away but when scheduler want to send or pending buffer times out
  // Other TBD  
}

@yuhan6665 yuhan6665 force-pushed the seed branch 2 times, most recently from c31c74b to 12b1f68 Compare April 14, 2024 03:12
@yuhan6665 yuhan6665 marked this pull request as ready for review April 29, 2024 04:07
@Fangliding
Copy link
Member

在掰扯完http的大小写问题之后我们终于见到一些真家伙了

@RPRX
Copy link
Member

RPRX commented Sep 6, 2024

预计在下个版本中出现,不然下个月现有的 Vision 可能要废了

@RPRX
Copy link
Member

RPRX commented Sep 6, 2024

先 rebase 一下

@yuhan6665
Copy link
Member Author

先 rebase 一下

done

@RPRX
Copy link
Member

RPRX commented Sep 18, 2024

虽然本来想赶在下个月前上 Vision seed 但也不会那么快铺开,所以放下个月,以及 VLESS encryption,这个月我们专注 XHTTP

@RPRX
Copy link
Member

RPRX commented Nov 12, 2024

这个月我们专注 XHTTP

XHTTP 的 XMUX 为我们带来了 h2mux 和 h3mux,且 header 均有 padding 但 body 还没有,所以是时候开搞 Vision Seed 了

@RPRX
Copy link
Member

RPRX commented Nov 17, 2024

To Nikita Korotaev:我觉得现在就不代理 TLSv1.2 有点早,况且 Vision Seed 一个重要目标就是能配合其它传输层使用如 XHTTP,到时内层 TLSv1.3 也无法裸奔,说起来我更关心的是,听说你们俄罗斯那边下个月要断开国际互联网、IP 白名单?

@iambabyninja
Copy link
Member

iambabyninja commented Nov 17, 2024

@RPRX
Since most European countries are unfriendly toward us and cut us off from international transfers (SWIFT), payment systems (Mastercard/Visa), their services (Microsoft, Google, JetBrains, etc.), and many other corporate services, our country has been conducting annual drills for the banking and financial sector for many years.

The goal of these drills is to understand which areas could be affected by such disconnections and what actions should be taken to minimize the impact of these potential disruptions.

For example, in 2012, during one of these drills, we started considering what would happen if we were cut off from Mastercard/Visa. This led to the development of the “МИР” payment system, and as you know, in 2022, we were indeed disconnected from them.

However, these developments have nothing to do with the work of the censor.
This will not affect regular users. These disconnections only concern the corporate environment and are coordinated with them in advance, taking place once a year.

The latest news about the censor’s work is the blocking of ECH.

@yuhan6665
Copy link
Member Author

The latest news about the censor’s work is the blocking of ECH.

Is there more info about this?

@RPRX
Copy link
Member

RPRX commented Nov 18, 2024

The latest news about the censor’s work is the blocking of ECH.

Is there more info about this?

net4people/bbs#417

话说这个 PR 不包含 2d7b0e8 但 test 也炸了,@yuhan6665 有空研究下?

@Fangliding
Copy link
Member

@yuhan6665 It is very easy, they blocked cloudflare-ech.com (plain sni of cloudflare ech)

@yuhan6665
Copy link
Member Author

main 的问题是

=== RUN   Test_maxUpload
...
2024/11/17 12:07:21 [Info] transport/internet/splithttp: Too large upload. scMaxEachPostBytes is set to 100but request had size 101. Adjust scMaxEachPostBytes on the server to be at least as large as client.

@RPRX Seed 是加最后一个 “pingpong” 的时候没改好 我不太确定要不要加最后一个 commit 你先看一下大方向

@RPRX
Copy link
Member

RPRX commented Nov 18, 2024

main 的问题是

本想着不会有人设小于 8192 的值吧,没想到自家 test 就是

RPRX added a commit that referenced this pull request Nov 18, 2024
@RPRX
Copy link
Member

RPRX commented Nov 30, 2024

@yuhan6665 有空 rebase 一下,这次是真轮到了

@RPRX
Copy link
Member

RPRX commented Nov 30, 2024

Seed 这么多配置项,类似 XHTTP extra 也是分享原始 JSON,这些 Seed 应当均由服务端设置,客户端把 hash 发过去供验证

@RPRX
Copy link
Member

RPRX commented Nov 30, 2024

看了下代码,好像还没有裸奔与否的开关?其实现在想弄这个主要是方便配合 XHTTP,然后就快摸到反审查协议的天花板了

@RPRX
Copy link
Member

RPRX commented Nov 30, 2024

允许不裸奔的话,Seed 这个高度可配置的 padding 策略就可以与 XHTTP 结合使用,再来个上下行分离,GFW 彻底看不懂了

@yuhan6665
Copy link
Member Author

裸奔与否由 flow 控制 都可以用 seed

@RPRX
Copy link
Member

RPRX commented Dec 1, 2024

裸奔与否由 flow 控制 都可以用 seed

后面如果出 Switch 和 Match,Seed 会有不同的参数,置于特定 flow 下比较好,还有能上一下 tg 吗

@RPRX
Copy link
Member

RPRX commented Dec 3, 2024

@iambabyninja 快的话这个月合并

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.

4 participants