XTLS / Xray-core

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.
https://t.me/projectXray
Mozilla Public License 2.0
24.44k stars 3.83k forks source link

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

Closed LearZhou closed 1 year ago

LearZhou commented 1 year ago

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

picklefan commented 1 year ago

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

LearZhou commented 1 year ago

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

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

picklefan commented 1 year ago

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

LearZhou commented 1 year ago

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

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

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

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

LearZhou commented 1 year ago

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

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

picklefan commented 1 year ago

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

LearZhou commented 1 year ago

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

iKira commented 1 year ago

1.7.5已经可以用reality了?

RPRX commented 1 year ago

大哥,设成 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,难顶

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

LearZhou commented 1 year ago

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

thisdk commented 1 year ago

1.7.5已经可以用reality了?

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

iKira commented 1 year ago

1.7.5已经可以用reality了?

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

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

chika0801 commented 1 year ago

1.7.5已经可以用reality了?

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

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

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

iKira commented 1 year ago

1.7.5已经可以用reality了?

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

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

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

好的,thx :)