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

Reality + Vision 仍不穩定,經常錯誤進入爬蟲模式,導致鏈接失敗 #1689

Closed
LearZhou opened this issue Feb 21, 2023 · 14 comments

Comments

@LearZhou
Copy link

用的自己的小網站,發現啟用 Reality + Vision 之後,從進入爬蟲模式漏到網站的流量非常頻繁。

@picklefan
Copy link

你怎么知道不是别人在爬,“导致链接失效”是什么,能展开讲讲吗

@LearZhou
Copy link
Author

查閱自己小網站的 log, 清楚看到是自己的 ip 在爬呀。

鏈接失敗,就是建立不了要通過 Xray 去訪問目的地的連接,如果第一個訪問一個網站第一個連接建立失敗,就會在瀏覽器出現 連接失敗 的字樣。

@picklefan
Copy link

1 别人访问你xray, 你xray把流量转发到小网站, 小网站显示的就是你xray的ip
2 xray无法无法链接可能是配置导致的,请检查配置
https://github.com/XTLS/REALITY

@LearZhou
Copy link
Author

LearZhou commented Feb 22, 2023

1 别人访问你xray, 你xray把流量转发到小网站, 小网站显示的就是你xray的ip

可以排除,因為剛剛配置好這個 Reality + Vision,沒有「別人」用。

2 xray无法无法链接可能是配置导致的,请检查配置 https://github.com/XTLS/REALITY

正是參考的這個 RPRX 本人貼出的配置,目前狀態是可以用的,只是太容易進入「爬蟲」模式,導致鏈接有時失效,即本問題的準確描述。

@LearZhou
Copy link
Author

剛才仔細核對了一下配置,似乎當服務器端 "maxTimeDiff" 設置為非 0(500 ms)時,會出現這個問題。設置回 0 之後,問題似乎消失了。

@RPRX , 請問這個選項是做啥用的?有哪些適用場景的講究?

@picklefan
Copy link

我的意思是, 别人爬你xray, xray会把流量转发到你的dest,也就是你的小网站. 而不是有人"使用"你的xray, 你要判断是xray触发的爬虫还是别人访问你xray所在vps导致流量转发,请看xray日志. 小网站日志无法体现是爬虫还是转发.
还有xray是一直无法用还是间接性,日志是什么,配置是什么,网络环境是什么,这些可能只有神知道吧

@LearZhou
Copy link
Author

已確定是 "maxTimeDiff" 參數設置導致的,我估計設置為 0 是無限大的意思。設為 500 可能太小了,換 5000 (5秒)也沒出問題。還請 @RPRX 對這個參數稍加解釋,並給出一個非 0 的推薦值。

@iKira
Copy link

iKira commented Feb 22, 2023

1.7.5已经可以用reality了?

@RPRX
Copy link
Member

RPRX commented Feb 22, 2023

大哥,设成 500ms 你是咋想的,通信双方本身就对时不准,大于一秒都很常见,再加上国际公网线路,小抖一下就远超 500ms 了

REALITY 的 Client Hello 中各要素被充分利用,且 AEAD 的附加数据为整个 Client Hello,中间人一个比特都不能改,只剩重放这条路,虽然重放也没用(因为中间人没其中 key_share 对应的临时私钥,最终解密不了服务端发的握手消息),不过它确实可以引发服务端的不必要响应,另外万一数据量多了它恰巧有对应私钥呢,所以 REALITY 有加密时间戳的设计,就是不喜欢中间人恶作剧

其实客户端发的时间戳只精确到秒,maxTimeDiff 的单位为毫秒是因为 spiderX 的参数时间单位都为毫秒,防止用户搞混

要设 maxTimeDiff 的话,推荐 60000+,即一分钟起步,不想对时的话一天起步都行,这就是一个不让中间人恶作剧的保险设计


REALITY 的设计哲学:

  1. 在设计上就把安全等级拉满,限制人的可控范围,最大程度降低人为因素的影响,文章中再细说
  2. 信任服务端,客户端不可信,甚至默认客户端持有的节点信息全泄露了,文章中再细说
  3. 服务端对客户端是有选择的,比如拒绝版本过低的 Xray-core 连接,防止过时的客户端实现不当害了服务端,比如指纹过时
    以后服务端还可以带信息给客户端,告知客户端有新版了/告知客户端版本过低,要求更新,否则多长时间后不再支持

对于第一点,其实 Xray-core 也是类似的:

  1. 某个功能有更好的实现,直接设成默认,或者简单就能配置,不加或少加选项
  2. 有了全方位更优的 XTLS Vision,就把旧版 XTLS 移除,不给用户部署它的机会
  3. v1.8.0 还会把 xtls-rprx-vision,none 这种配置方式移除,它已经被滥用了,群里说 Vision 封了端口的一问必是 iOS,难顶

兼容性,并不是首要考虑因素,人都是懒的,只要仍兼容就动力不足,难推新的,不兼容才能有效促进革新与进步。

@RPRX RPRX closed this as completed Feb 22, 2023
@LearZhou
Copy link
Author

感謝 @RPRX 在作文交卷前、如此詳細的一番描述。

@thisdk
Copy link

thisdk commented Feb 22, 2023

1.7.5已经可以用reality了?

去action下载最新的构建.昨天体验了一波.那种拿着别人tls证书,在防火墙反复横跳的感觉让人着迷

@iKira
Copy link

iKira commented Feb 22, 2023

1.7.5已经可以用reality了?

去action下载最新的构建.昨天体验了一波.那种拿着别人tls证书,在防火墙反复横跳的感觉让人着迷

拉了源码编译出来还是1.7.5的

@chika0801
Copy link
Contributor

1.7.5已经可以用reality了?

去action下载最新的构建.昨天体验了一波.那种拿着别人tls证书,在防火墙反复横跳的感觉让人着迷

拉了源码编译出来还是1.7.5的

https://github.com/chika0801/Xray-examples/tree/main/VLESS-XTLS-uTLS-REALITY
你下载后看版本号是175但是可以用reality的。

@iKira
Copy link

iKira commented Feb 22, 2023

1.7.5已经可以用reality了?

去action下载最新的构建.昨天体验了一波.那种拿着别人tls证书,在防火墙反复横跳的感觉让人着迷

拉了源码编译出来还是1.7.5的

https://github.com/chika0801/Xray-examples/tree/main/VLESS-XTLS-uTLS-REALITY 你下载后看版本号是175但是可以用reality的。

好的,thx :)

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

No branches or pull requests

6 participants