Open 5l2 opened 1 year ago
应该是 v2ray_simple 读取 first payload 的机制导致了以上 nc/telnet 的现象?
有可能,需详查
应该还是grpc服务器端的bug没有完全修复 https://github.com/e1732a364fed/v2ray_simple/issues/159#issue-1402217771
在vs的 grpc server 收到grpc握手后,确实,如果客户端没发任何信息,就会陷入等待中.
我看了一下代码,忘 Flush了。
我在最新代码里加了 flush, 请你用最新代码编译并再试一次,然后看看如何
已按组 5 条件测试,依旧不打印 ssh 服务器版本信息。
执行的编译命令:
sudo snap install go --classic
git clone https://github.com/e1732a364fed/v2ray_simple
cd v2ray_simple/cmd/verysimple/
go build
./verysimple -v
:
verysimple [version_undefined], go1.19.5 linux amd64, with advLayer packages: [quic grpcSimple ws]
虽然没有经过严格的测试,但是在我的配置(从gRPC回落到TCP)下也会有类似的行为。
环境
描述
使用 v2ray_simple 作为代理服务器且协议为
trojan+grpc+tls
时,部分终端(如 mobaxterm)通过代理连接 ssh 会卡在终端画面(光标原地闪烁),无法登录。作为实验,部署 v2ray/hysteria/naiveproxy 等不同应用、为 v2ray_simple 增加
vmess+ws+tls+cdn
的协议组合,接着使用 clash 的 tunnel 功能通过前述代理将服务器 ssh 端口映射到本地不同端口,最后使用 nc/telnet 连接这些本地端口。现象如下。组 1(对照):无代理直连服务器 ssh 端口
使用 nc/telnet 直连服务器 ssh 端口,会打印版本信息。如:
组 2:使用 hysteria/naiveproxy 作为代理服务器
使用 nc/telnet 连接映射后的本地端口,会打印版本信息。
组 3:使用 v2ray 作为代理服务器,协议为
trojan+grpc+tls
使用 nc/telnet 连接映射后的本地端口,会打印版本信息。
组 4:使用 v2ray_simple 作为代理服务器,协议为
vmess+ws+tls+cdn
使用 nc/telnet 连接映射后的本地端口,会打印版本信息。
组 5:使用 v2ray_simple 作为代理服务器,协议为
trojan+grpc+tls
使用 nc/telnet 连接映射后的本地端口,卡在终端画面(光标原地闪烁),不打印任何字符。
经测试发现,若在卡住时键入任何按键,则又会打印版本信息。
如何复现
搭建 v2ray_simple,协议为
trojan+grpc
。cat vs_config.toml
安装 clash 客户端。
cat clash.yaml
日志
v2ray_simple debug 级日志
cat error.log
解决
经研究发现,若将 mobaxterm 等终端的
协议版本
由auto
变更为SSHv2
可解决 v2ray_simple 使用 trojan+grpc+tls 时无法通过代理连上 ssh 的问题。此时可正常登录。但是,此方案不能解决使用 nc/telnet 连接 ssh 映射后的本地端口,不打印版本信息的问题。