trojan-go icon indicating copy to clipboard operation
trojan-go copied to clipboard

[BUG] socks failed to handshake with client

Open digits122 opened this issue 2 years ago • 0 comments

服务器trojan-go版本0.10.5 客户端trojan-go版本0.10.5

部署情况如下:

美国服务器A,有公网IP地址,部署trojan-go server端,部署所在端口为443

国内服务器B,有公网IP地址,部署trojan-go client端,此client端连接到服务器A,并在 本地 0.0.0.0:1080 提供代理服务,即部分配置为 "run_type": "client", "local_addr": "0.0.0.0", "local_port": 1080, 服务器B开启了22端口,便于ssh连接,开启了防火墙,阻断外网进入1080端口,禁止从公网直接socks连接到服务器。 在服务器B上,直接使用它的trojan-go client代理上网,无任何问题。

用户端电脑C,无公网IP地址 。现在C想通过B上的client进行上网,不一定科学上网,也会上国内网站,因为速度更快。

连接方式1:B服务器开放1080端口公网连接INPUT,电脑C上浏览器配置HTTP代理到 服务器B:1080,或者配置SOCKS5代理到
服务器B:1080,上网没有问题。但是1080直接开放代理,任何人都可以连接,这种形式不可取。

连接方式2:B服务器阻断1080端口公网连接INPUT,电脑C上运行xshell,通过22端口连接到服务器B,然后在xshell上做一个隧道,将C电脑的1082端口forward到服务器B的1080端口,绕过防火墙。 浏览器配置HTTP代理到本机127.0.0.1:1082,或者配置SOCKS5代理到本机127.0.0.1:1082

运行,最开始的时候完全无问题,和连接方式1一样效果,任意上网。运行一段时间过后,再也无法代理上网了。不确定问题所在,登录服务器B,重启trojan-go客户端,再次尝试,依旧不行。登录服务器B,查看日志。

B上记录的日志为(重启过后尝试):

[INFO] 2021/10/05 03:08:49 trojan-go v0.10.5 initializing [INFO] 2021/10/05 03:08:49 adapter listening on tcp/udp: 0.0.0.0:1080 [INFO] 2021/10/05 03:08:49 cert is unspecified, using default ca list [WARN] 2021/10/05 03:08:49 empty websocket hostname [INFO] 2021/10/05 03:08:49 geoip:cn loaded [INFO] 2021/10/05 03:08:49 geoip:private loaded [INFO] 2021/10/05 03:08:49 geosite:geolocation-!cn loaded [INFO] 2021/10/05 03:08:49 geosite:cn loaded [INFO] 2021/10/05 03:08:49 geosite:private loaded [INFO] 2021/10/05 03:08:49 router client created [ERROR] 2021/10/05 03:08:55 github.com/p4gefau1t/trojan-go/tunnel/socks.(*Server).acceptLoop.func1:server.go:208 socks failed to handshake with client | failed to read command [ERROR] 2021/10/05 03:08:56 github.com/p4gefau1t/trojan-go/tunnel/socks.(*Server).acceptLoop.func1:server.go:208 socks failed to handshake with client | failed to read command [ERROR] 2021/10/05 03:08:56 github.com/p4gefau1t/trojan-go/tunnel/socks.(*Server).acceptLoop.func1:server.go:208 socks failed to handshake with client | failed to read command [ERROR] 2021/10/05 03:08:56 github.com/p4gefau1t/trojan-go/tunnel/socks.(*Server).acceptLoop.func1:server.go:208 socks failed to handshake with client | failed to read command …………………………

此后一直是socks failed to handshake with client的错误,继续重启依然是这个错误。

确定A服务器没有配置错误,从C上运行客户端,直接连接到A,可以上网。 确定B服务器没有配置错误,最开始是可以上网的,但中途某个时刻过后,再也无法上网。 确定B服务器重启过后的配置没有错误,打开端口1080,依旧可以任意上网。 确定电脑C网络没有问题,xshell隧道配置无错误,浏览器代理配置无错误。

应该是trojan-go当前版本在处理隧道流量上有bug,需要修复这个bug,以前尝试在v0.5.1版本使用隧道,是没有问题的。

digits122 avatar Oct 04 '21 20:10 digits122