Comments (5)
@Ehco1996 我查看了ss的日志,确实有一些错误。
于是我使用了XrayR的ss并且切换为aes-128-gcm加密(之前是chacha20-ietf-poly1305)且全部重新编译master分支的ehco,经过短暂的10分钟测试似乎没有问题了,可能确实是与之前的Shadowsocks-libev存在一些问题。
Shadowsocks-libev的错误日志如下:
Apr 16 21:44:39 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:44:39 ERROR: getpeername: Transport endpoint is not connected
Apr 16 21:44:39 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:44:39 ERROR: getpeername: Transport endpoint is not connected
Apr 16 21:45:34 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:45:34 ERROR: server recv: Connection reset by peer
Apr 16 21:48:52 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:48:52 ERROR: server recv: Connection reset by peer
Apr 16 21:49:42 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:49:42 ERROR: failed to handshake with 58.32.7.16: authentication error
Apr 16 21:50:56 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:50:56 ERROR: server recv: Connection reset by peer
Apr 16 21:53:06 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:53:06 ERROR: server recv: Connection reset by peer
Apr 16 21:53:08 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:53:08 ERROR: remote recv: Connection reset by peer
Apr 16 21:54:56 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:54:56 ERROR: getpeername: Transport endpoint is not connected
Apr 16 21:56:58 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:56:58 ERROR: remote recv: Connection reset by peer
Apr 16 21:58:18 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 21:58:18 ERROR: server recv: Connection reset by peer
Apr 16 22:06:58 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:06:58 ERROR: remote recv: Connection reset by peer
Apr 16 22:10:38 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:10:38 ERROR: failed to handshake with 127.0.0.1: authentication error
Apr 16 22:10:43 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:10:43 ERROR: failed to handshake with 127.0.0.1: authentication error
Apr 16 22:10:48 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:10:48 ERROR: failed to handshake with 127.0.0.1: authentication error
Apr 16 22:10:50 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:10:50 ERROR: remote recv: Connection reset by peer
Apr 16 22:10:53 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:10:53 ERROR: failed to handshake with 127.0.0.1: authentication error
Apr 16 22:15:00 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:15:00 ERROR: failed to handshake with 103.197.70.186: authentication error
Apr 16 22:16:58 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:16:58 ERROR: remote recv: Connection reset by peer
Apr 16 22:17:31 cloud-instance shadowsocks-libev.ss-server-daemon[21859]: 2022-04-16 22:17:31 ERROR: server recv: Connection reset by peer
from ehco.
@Qinhank 能提怎么测试的么?有脚本或者环境么,另外最好附上测试的日志
我直接使用 iperf3 在两端互拉是不会不断流的
❯ go run cmd/ehco/main.go -c config.json
[cfg] Load Config From file: config.json
[web] Start Web Server at http://0.0.0.0:9000/
[cfg] Start to watch config file: config.json
[relay] Start UDP relay <At=127.0.0.1:1234 Over=raw TCP-To=[0.0.0.0:5201] UDP-To=[0.0.0.0:5201] Through=raw>
[relay] Start WSS relay <At=127.0.0.1:3443 Over=wss TCP-To=[0.0.0.0:5201] UDP-To=[] Through=raw>
[relay] Start UDP relay <At=127.0.0.1:1237 Over=raw TCP-To=[wss://0.0.0.0:4443] UDP-To=[0.0.0.0:5201] Through=mwss>
[relay] Start UDP relay <At=127.0.0.1:1235 Over=raw TCP-To=[ws://0.0.0.0:2443] UDP-To=[0.0.0.0:5201] Through=ws>
[relay] Start UDP relay <At=127.0.0.1:1236 Over=raw TCP-To=[wss://0.0.0.0:3443] UDP-To=[0.0.0.0:5201] Through=wss>
[relay] Start WS relay <At=127.0.0.1:2443 Over=ws TCP-To=[0.0.0.0:5201] UDP-To=[] Through=raw>
[relay] Start TCP relay <At=127.0.0.1:1236 Over=raw TCP-To=[wss://0.0.0.0:3443] UDP-To=[0.0.0.0:5201] Through=wss>
[relay] Start TCP relay <At=127.0.0.1:1235 Over=raw TCP-To=[ws://0.0.0.0:2443] UDP-To=[0.0.0.0:5201] Through=ws>
[relay] Start TCP relay <At=127.0.0.1:1234 Over=raw TCP-To=[0.0.0.0:5201] UDP-To=[0.0.0.0:5201] Through=raw>
[relay] Start MWSS relay <At=127.0.0.1:4443 Over=mwss TCP-To=[0.0.0.0:5201] UDP-To=[] Through=raw>
[relay] Start TCP relay <At=127.0.0.1:8888 Over=raw TCP-To=[8.8.8.8:5201 google.com:5201] UDP-To=[] Through=raw>
[relay] Start TCP relay <At=127.0.0.1:1237 Over=raw TCP-To=[wss://0.0.0.0:4443] UDP-To=[0.0.0.0:5201] Through=mwss>
[mwss server init] 127.0.0.1:52799 127.0.0.1:4443
[mwss] Init new session to: 127.0.0.1:4443
[mwss] HandleTCPConn from:127.0.0.1:52798 to:wss://0.0.0.0:4443
[tun] HandleMWssRequest from:127.0.0.1:52799 to:0.0.0.0:5201
[mwss] HandleTCPConn from:127.0.0.1:52801 to:wss://0.0.0.0:4443
[tun] HandleMWssRequest from:127.0.0.1:52799 to:0.0.0.0:5201
结果
[ ID] Interval Transfer Bitrate
[ 5] 0.00-100.00 sec 156 GBytes 13.4 Gbits/sec sender
[ 5] 0.00-100.00 sec 156 GBytes 13.4 Gbits/sec receiver
iperf Done.
from ehco.
首先补充下关于两台机器系统细节。
中转机:Debian10(内核5.10.0-0.bpo.12-cloud-amd64,虚拟架构KVM)
落地机:Debian10(内核5.10.0-0.bpo.9-cloud-amd64,虚拟架构KVM)
假定中转机的IP地址为:120.233.0.0
假定落地机的IP地址为:103.181.0.0
中转机使用的命令是:./ehco_1.1.1_linux_amd64 -l 0.0.0.0:63800 -r wss://103.181.0.0:62100 -tt mwss
落地机使用的命令是:./ehco_1.1.1_linux_amd64 -l 0.0.0.0:62100 -lt mwss -r 127.0.0.1:63701
落地转发的协议为:Shadowsocks-libev
参考搭建地址:这里查看
中转机失败时日志如下:
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51858: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51862: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51860: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51856: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51864: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51874: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51872: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51870: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51866: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
HandleTCPConn err=read tcp 120.233.0.0:63800->110.191.0.1:51868: i/o timeout name=[At=0.0.0.0:63800 Over=raw TCP-To=[wss://103.181.0.0:62100] UDP-To=[] Through=mwss]
落地机失败时日志如下:
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset err: timeout
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset from:120.233.0.0:56132 to:-127.0.0.1:63701
[tun] HandleMWssRequset err: read tcp 10.0.0.187:62100->120.233.0.0:56132: read: connection reset by peer
[tun] HandleMWssRequset err: read tcp 10.0.0.187:62100->120.233.0.0:56132: read: connection reset by peer
[mwss] accept stream err: read tcp 10.0.0.187:62100->120.233.0.0:56132: read: connection reset by peer
from ehco.
@Qinhank 从落地机器的日志上看,是 ehco 到 ss 的连接有问题,需要附上 ss 的日志才能排查了
另外发现落地机器上的 ehco 版本不是 master 的,能 build 一个最新的试试么?
from ehco.
我在本机做了一下 ss 的测试,也没有发生断流的现象,测试过程和脚本可以参考这里
https://github.com/Ehco1996/ehco/tree/master/test/bench
from ehco.
Related Issues (20)
- Support ProxyProtocol HOT 3
- 大佬!!这个报错是什么意思看不太懂....是在做节点服务器的时候docker-compose up后出现的 HOT 1
- feature web based connection manger
- Support go 1.19 build HOT 3
- 能否加一个 arm版的nightly? HOT 1
- openapi about users
- Support go1.20.x/1.21.0 build HOT 2
- 关于GSO的支持,以提升性能 HOT 1
- 关于增加h2mux和mptcp HOT 2
- bug: connection not shutdown immediately when use ws server
- Release incorrectly tagged as `1.13` HOT 6
- json配置文件读取失败 HOT 7
- Removing release v1.13 HOT 2
- Clarifying `sub_configs` purpose HOT 2
- 有点像这个https://natapp.cn/
- 优雅退出是否有点问题 HOT 1
- maybe mark nightly release as pre-release? HOT 2
- Feature Request: Add UPnP Support to Enhance Convenience for Soft Router Users
- replace inter `xray` by sing-box as builtin proxy server
- bug: close and start relay should in sync way
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ehco.