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.19k stars 3.81k forks source link

使用截止2月14日的代码编译,访问一些谷歌网站刷不出图片BUG #3024

Closed chika0801 closed 6 months ago

chika0801 commented 6 months ago

使用VLESS Vision REALITY偷自己,复现过程:

访问 https://chromewebstore.google.com/category/themes?hl=zh-CN&utm_source=ext_sidebar 网页显示效果如图

图片
![屏幕截图 2024-02-14 113105](https://github.com/XTLS/Xray-core/assets/88967758/2444b918-c0a2-49c2-a726-c7b5b44dc79b)
服务端最简单配置
``` { "log": { "loglevel": "debug" }, "inbounds": [ { "listen": "0.0.0.0", "port": 443, "protocol": "vless", "settings": { "clients": [ { "id": "chika", "flow": "xtls-rprx-vision" } ], "decryption": "none" }, "streamSettings": { "network": "tcp", "security": "reality", "realitySettings": { "dest": "/dev/shm/nginx.sock", "xver": 1, "serverNames": [ "域名" ], "privateKey": "************************************************", "shortIds": [ "******************" ] } }, "sniffing": { "enabled": true, "destOverride": [ "http", "tls", "quic" ] } } ], "outbounds": [ { "protocol": "freedom" } ] } ```

已知

  1. 和客户端xray-core版本无关(有用1.8.7,有用最新编译版本,都复现)

  2. 服务端xray-core用版本1.8.7此现象消失,用最新编译的版本复现

我常浏览的网站中,就留意到谷歌相关的网站,有GMAIL,发现有些图片(如账户的头像)加载不了

chrome商店安装不了插件,图片加载失败,这个场景很好复现。不知道其他人遇到了没有。

chise0713 commented 6 months ago

https://github.com/XTLS/Xray-core/compare/v1.8.7...main

qwerr0 commented 6 months ago

我编译了的是最新的, 使用的是 gRPC Reality 还没有遇到

chika0801 commented 6 months ago

我编译了的是最新的, 使用的是 gRPC Reality 还没有遇到,你那个日志好像漏IP了...

谢谢帮助,我再找时间试试其它协议组合,日志漏了服务端ip,我先删除了

qwerr0 commented 6 months ago

我又试了一下 TCP Reality, 好像也是正常的, 我看日志里除了图片的域名 lh3.googleusercontent.com 外还有 play.google.com, feedback-pa.clients6.google.com, accounts.google.com, chromewebstore.google.com, lh3.google.com 这些域名

qwerr0 commented 6 months ago

我仔细试了试, 现在我也遇到了,

https://lh3.googleusercontent.com/symkeYX2dCYyu0OOgAuxLSshF080Xe_oGZ-ymYLWjmqO1S-7SD1O9a7XyOJDxbpAuZAVHF3QfHnQkafjkpvUXVzQoA=s550-w550-h350

尝试用 curl 来访问

* TLSv1.3 (OUT), TLS alert, bad record mac (532):
* OpenSSL SSL_read: OpenSSL/3.0.11: error:0A000119:SSL routines::decryption failed or bad record mac, errno 0
* Failed receiving HTTP2 data
* Connection #0 to host lh3.googleusercontent.com left intact
curl: (56) OpenSSL SSL_read: OpenSSL/3.0.11: error:0A000119:SSL routines::decryption failed or bad record mac, errno 0

image

我刷新一会儿就可以访问, 重启浏览器后有概率遇到, gRPC Reality 正常, 我重启了几次都不会报这个错误

Plainct commented 6 months ago

Chrome 带的谷歌翻译用不了,开了系统代理也一样,日志里也看不到translate.googleapis.com的记录

Fangliding commented 6 months ago

换配置试一试 比如不开vision或者不开reality

qwerr0 commented 6 months ago

可能这两个commit有关 我revert掉重新编译试试: Try to fix rare ssl error with freedom splice #3167a70 Try a better fix for rare ssl error with freedom splice #d21e9b0

我revert后就到目前还没遇到SSL错误的问题了, 大概率就是这两个commit的问题 受影响的是服务端, 只需要替换掉服务端的XrayCore就正常了

chika0801 commented 6 months ago

可能这两个commit有关 我revert掉重新编译试试: Try to fix rare ssl error with freedom splice #3167a70 Try a better fix for rare ssl error with freedom splice #d21e9b0

我revert后就到目前还没遇到SSL错误的问题了, 大概率就是这两个commit的问题 受影响的是服务端, 只需要替换掉服务端的XrayCore就正常了

我回忆了一下,当时也是看到这2个commit,就把服务端编译了更新了,然后,就留意到这一现象

yuhan6665 commented 6 months ago

应该还是 freedom splice 的问题 可能还是需要 sleep 我等会再改一下给你们测试

yuhan6665 commented 6 months ago

麻烦测一下最新的 main 之前看到有人在群里说 187 有 ssl error 然后用 ng 反复测试 找到偶尔可以复现的方法 研究了之后应该是跟 pipe 两边线程的读写有关 客户端的 splice 比较简单 splice 开始的信号就在数据源 服务器这边 inbound 发现可以 splice 之后要把这个信息传递给 Freedom 而 Freedom 那边有可能已经在读下一个 buffer 就是在这个地方容易出问题

PaPerseller commented 6 months ago

麻烦测一下最新的 main 之前看到有人在群里说 187 有 ssl error 然后用 ng 反复测试 找到偶尔可以复现的方法 研究了之后应该是跟 pipe 两边线程的读写有关 客户端的 splice 比较简单 splice 开始的信号就在数据源 服务器这边 inbound 发现可以 splice 之后要把这个信息传递给 Freedom 而 Freedom 那边有可能已经在读下一个 buffer 就是在这个地方容易出问题

最新代码已编译测试,ssl error 问题仍存在于服务端,与客户端无关。稳定复现测试方法:在本地go项目中使用 go get -u && go mod tidy 尝试更新 modules,stable 1.8.7 或回退至此正式版无问题,若编译上述两个 commits 及之后的版本,100% 出现 local error: tls: bad record MAC 报错

RPRX commented 6 months ago

seed 的 release-blocker

chika0801 commented 6 months ago

测试了这个 https://github.com/XTLS/Xray-core/commit/09656bd5d1a52d8aed119bcd75a2ffea238a4672 ,故障现象没有解决。

yuhan6665 commented 6 months ago

非常感谢大家测试还提供了稳定复现的方法 应该修好了

chika0801 commented 6 months ago

测试了浏览器访问谷歌商店的网址和打开GMAIL网页看账户头像,图片都正常显示出来了。

RPRX commented 6 months ago

没想到这么快就解决了,压力又回到了我这边

顺便试试 Go 1.22 编译的有无问题 https://github.com/XTLS/Xray-core/commit/5ea1315b85c3b448e7f8b27c9c1e20fc61acac49

chika0801 commented 6 months ago

~没想到这么快就解决了,压力又回到了我这边~

顺便试试 Go 1.22 编译的有无问题 5ea1315

go 1.22编译出来没问题,我用着win客户端,linux服务端,v2rayng客户端,都在用

RPRX commented 6 months ago

go 1.22编译出来没问题,我用着win客户端,linux服务端,v2rayng客户端,都在用

今天看了篇文章说 go.mod 中写了 go 1.22 时 loopvar 新语义才会生效,所以麻烦都换成 https://github.com/XTLS/Xray-core/commit/ad3dd3df56b9e4486d7b1116a6496359c7c44153 试试

顺便当一下小白鼠 https://github.com/XTLS/Xray-core/pull/3001#issuecomment-1951759749 ,截至这个 commit 包含了相关内容

enterusernamecontinue commented 4 days ago

发现一个问题,如果中转机使用 “VLESS-Vision-TLS” 作为入栈,客户端无法访问 lh3.googleusercontent.com 。表现为 Chrome 应用商店无法加载扩展说明页图片,也无法下载安装扩展,会提示“Image decode failed”错误。(场景1)

但是客户端使用 “VLESS-gRPC-TLS”或“Socks5”连接中转机,则访问 lh3.googleusercontent.com正常,Chrome 应用商店中可以正常下载安装扩展。(场景2/3)

场景1 [Client]===VLESS-Vision-TLS===>[中转机]===VLESS-Vision-TLS===>[落地机] 场景2 [Client]===VLESS-gRPC-TLS===>[中转机]===VLESS-Vision-TLS===>[落地机] 场景3 [Client]===Socks5===>[中转机]===VLESS-Vision-TLS===>[落地机]

客户端入栈 UDP 和嗅探都开启、中转机和落地机的入栈流量嗅探也都启用。另外,尝试过禁用客户端 UDP 转发、禁用 Chrome QUIC 协议支持,还有无论“客户端/中转机/落地机”的嗅探加不加 quic 项 ,场景1都还是有问题。

{ 
    "sniffing": { 
        "enabled": true, 
        "destOverride": [ 
            "http", 
            "tls", 
            "quic" 
        ] 
    } 
}

目前还不知道“故障点”在什么地方……