heiher / hev-socks5-tunnel

A high-performance tun2socks for Linux/Android/FreeBSD/macOS/iOS/WSL2 (IPv4/IPv6/TCP/UDP)
MIT License
636 stars 130 forks source link

想问个技术问题 #125

Closed 380wmda999 closed 1 week ago

380wmda999 commented 2 weeks ago

我看了下 您的库 和 go-tun2socks 的库 都是用的lwip 这个基础库 但是 为什么您这个上下行上限却比 go-tun2socks高很多 是因为c语言 和 go 性能层次上的差距 还是说因为go-tun2socks 本身实现的问题 还有就是 我看了下 xjasonlyu/tun2socks 他的benchmark 他的评测下载速度是达到raw speed的80%的 你的benchmark 没有写raw speed是多少 就安装100%算(毫无损耗) xjasonlyu/tun2socks 也应该能达到60%+吧 但是你评测出来只有的下载速度 只有50%不到 所以不知道具体是个什么情况了

380wmda999 commented 2 weeks ago

我自己也在windows 下测试过 (linux没测) windows下 因为gvisor stack tcp sack的问题 导致下载速度 甚至不如go-tun2socks 但是稳定性 确实是比 go-tun2socks 好 而且 go-tun2socks 的上行 是确实很慢。

heiher commented 2 weeks ago

我看了下 您的库 和 go-tun2socks 的库 都是用的lwip 这个基础库 但是 为什么您这个上下行上限却比 go-tun2socks高很多 是因为c语言 和 go 性能层次上的差距 还是说因为go-tun2socks 本身实现的问题

具体我也没有仔细剖析过,主要是不太懂Go。我想将lwip的zero-copy利用起来可能是因素之一吧。

还有就是 我看了下 xjasonlyu/tun2socks 他的benchmark 他的评测下载速度是达到raw speed的80%的 你的benchmark 没有写raw speed是多少 就安装100%算(毫无损耗) xjasonlyu/tun2socks 也应该能达到60%+吧 但是你评测出来只有的下载速度 只有50%不到 所以不知道具体是个什么情况了

主要是没有万兆网卡来做这个测试,不过有在低CPU性能的设备上对比过:https://github.com/heiher/hev-socks5-tunnel/discussions/20

Speed

rk3399-speed

CPU Usage

rk3399-cpu

heiher commented 2 weeks ago

我自己也在windows 下测试过 (linux没测) windows下 因为gvisor stack tcp sack的问题 导致下载速度 甚至不如go-tun2socks 但是稳定性 确实是比 go-tun2socks 好 而且 go-tun2socks 的上行 是确实很慢。

受限于 hev-socks5-tunnel 的底层协程框架,目前只能工作在 Unix 平台上。如果你有兴趣做更多的对比测试,目前建议使用 Linux 平台。

380wmda999 commented 2 weeks ago

主要是没有万兆网卡来做这个测试,不过有在低CPU性能的设备上对比过

网卡我看了下 xjasonlyu/tun2socks 测试的网卡是10G 你这边测试的是100G 但是他的测试结果 单并发和多并发下的下载速度差距不大 您这边 单线程下载是25G/s 多线程下载是 82G/s 也就是说 单线程25G/s 已经达到程序的上限了 我这么理解对么 您测试过raw speed 单线程下载是什么网速没 我看没有公布raw speed的测试结果

heiher commented 2 weeks ago

主要是没有万兆网卡来做这个测试,不过有在低CPU性能的设备上对比过

网卡我看了下 xjasonlyu/tun2socks 测试的网卡是10G 你这边测试的是100G 但是他的测试结果 单并发和多并发下的下载速度差距不大 您这边 单线程下载是25G/s 多线程下载是 82G/s 也就是说 单线程25G/s 已经达到程序的上限了 我这么理解对么 您测试过raw speed 单线程下载是什么网速没 我看没有公布raw speed的测试结果

不是100G物理网卡,而是veth的虚拟网卡。raw speed我还没跑过,如果性质与loopback类似的话,根据hev-socks5-server的结果,估计至少也有300Gbps以上吧。

380wmda999 commented 2 weeks ago

不是100G物理网卡,而是veth的虚拟网卡。raw speed我还没跑过,如果性质与loopback类似的话,根据hev-socks5-server的结果,估计至少也有300Gbps以上吧。

好的 我自己再弄个虚拟机测试下 主要我常用的windows 不知道是windows下的问题还是啥 raw speed 也就是测 127.0.0.1 的上行都只有10G 感觉完全测不出来上限

380wmda999 commented 2 weeks ago

貌似我在Ubuntu 下运行失败了 server.yaml

main:
  workers: 4
  port: 1080
  listen-address: '::'
  udp-port: 1080
  udp-listen-address: '::1'
  listen-ipv6-only: false
  bind-address: '192.168.159.131'
  domain-address-type: unspec

客户端 client.yaml 只修改了 mark: 438 然后 添加了路由

sudo ip rule add fwmark 0x438 lookup main pref 10 sudo ip -6 rule add fwmark 0x438 lookup main pref 10 sudo ip route add default dev tun0 table 20 sudo ip rule add lookup 20 pref 20 sudo ip -6 route add default dev tun0 table 20 sudo ip -6 rule add lookup 20 pref 20

然后就打不开网页了。。 server.yaml 的 bind-address 是绑定的本地上网的网卡吧 是路由哪里配置出问题了么 Ubuntu 版本是 20.04.2 LTS 客户端也有输出:

[2024-04-30 11:11:09] [E] 0x7fc86061ed70 socks5 client res.rep 4
[2024-04-30 11:11:09] [E] 0x7fc86061ed70 socks5 session handshake
[2024-04-30 11:11:14] [E] 0x7fc857381a20 socks5 client read response
[2024-04-30 11:11:14] [E] 0x7fc857381a20 socks5 session handshake
[2024-04-30 11:11:14] [E] 0x7fc8573817a0 socks5 client res.rep 4
[2024-04-30 11:11:14] [E] 0x7fc8573817a0 socks5 session handshake
[2024-04-30 11:11:19] [E] 0x7fc857381a20 socks5 client read response
[2024-04-30 11:11:19] [E] 0x7fc857381a20 socks5 session handshake
[2024-04-30 11:11:24] [E] 0x7fc8573817a0 socks5 client read response
[2024-04-30 11:11:24] [E] 0x7fc8573817a0 socks5 session handshake
[2024-04-30 11:11:29] [E] 0x7fc857381a20 socks5 client read response
[2024-04-30 11:11:29] [E] 0x7fc857381a20 socks5 session handshake
[2024-04-30 11:11:34] [E] 0x7fc8573817a0 socks5 client read response
[2024-04-30 11:11:34] [E] 0x7fc8573817a0 socks5 session handshake
[2024-04-30 11:11:39] [E] 0x7fc857381a20 socks5 client read response
[2024-04-30 11:11:39] [E] 0x7fc857381a20 socks5 session handshake
[2024-04-30 11:11:46] [E] 0x7fc8573817a0 socks5 client res.rep 4
[2024-04-30 11:11:46] [E] 0x7fc8573817a0 socks5 session handshake

server 端也收到请求的:

[2024-04-30 11:11:09] [E] 0x7fc7ae2c6a20 socks5 server connect
[2024-04-30 11:11:14] [E] 0x7fc7ad5dd340 socks5 server connect
[2024-04-30 11:11:19] [E] 0x7fc7ad5dd3e0 socks5 server connect
[2024-04-30 11:11:24] [E] 0x7fc7ae200c00 socks5 server connect
[2024-04-30 11:11:29] [E] 0x7fc7ae16a2a0 socks5 server connect
[2024-04-30 11:11:34] [E] 0x7fc7ad699b60 socks5 server connect
[2024-04-30 11:11:39] [E] 0x7fc7ada48160 socks5 server connect
[2024-04-30 11:11:46] [E] 0x7fc7ad7a1de0 socks5 server connect

可就是打不开网页

heiher commented 2 weeks ago

如果server也跑在部署了tunnel的系统上,需要让server的outgoing连接绕过tunnel。简单的方法是把server跑在一个特别的用户上,比如nobody或daemon,然后增加一个pref 10的rule:

sudo ip rule add uidrange x-x lookup main pref 10
sudo ip -6 rule add uidrange x-x lookup main pref 10
380wmda999 commented 2 weeks ago

ok 能上网了 iperf3 上下行速度测试也很高 但是 有几个问题:

ping www.baidu.com
PING www.a.shifen.com (183.2.172.185) 56(84) bytes of data.

直接没有回应了...收不到回应

我用firefox/chrome 上网 打开网页 新建立连接的时候 特别慢 花了好几秒 ( tun2socks-go 也是这样 但是 gvisor 不会 是lwip导致的???)

380wmda999 commented 2 weeks ago

对了 还有一点 这个只有chrome 才有 就是在访问 view-source:https://www.baidu.com/favicon.ico 因为chrome 默认会带一个 favicon.ico的请求 所以是两个请求 长连接下 第一个请求响应大约是30ms 第二个请求有三分之1概率 要花费60ms+ (也就是一直刷的情况) 如果不开tun的话 随便怎么刷 基本两个请求都是30ms 特殊情况也只会是第一个请求的响应时间很长 而不会出现第二个请求响应时间翻倍的情况

heiher commented 2 weeks ago

我这边没注意到有HTTP请求特别慢的情况,检查一下是不是DNS的问题,浏览器里开发者工具里好像可以看到请求各个阶段花的时间。

tun2socks目前只处理TCP和UDP,其它协议不处理。

380wmda999 commented 2 weeks ago

我这边没注意到有HTTP请求特别慢的情况,检查一下是不是DNS的问题,浏览器里开发者工具里好像可以看到请求各个阶段花的时间。

你说的应该是长连接快 我指的是第一次建立连接 我这边Ubuntu 桌面版本测试的 image

说来也比较奇怪 chrome 经常容易挂掉 firefox的话 慢的概率 3分之一吧 chrome 版本是: Version 124.0.6367.118 (Official Build) (64-bit)

heiher commented 2 weeks ago

初始连接也没遇到过,感观上是正常的。会不会是环境没有IPv6?hev-socks5-tunnel关掉IPv6试试。

380wmda999 commented 2 weeks ago

初始连接也没遇到过,感观上是正常的。会不会是环境没有IPv6?hev-socks5-tunnel关掉IPv6试试。

外网的话 确实只有ipv4网络 tunnel的配置里面 ipv6 只有个这个 ipv6: 'fc00::1' 是server.yaml里面关?

380wmda999 commented 2 weeks ago

初始连接也没遇到过,感观上是正常的。会不会是环境没有IPv6?hev-socks5-tunnel关掉IPv6试试。

你要不下个chrome 试试 我感觉问题多是出在chrome 浏览器上面 但是 客观上来感觉 又不大可能是chrome 本身的问题

heiher commented 2 weeks ago

tunnel里关,注释掉这行: https://github.com/heiher/hev-socks5-tunnel/blob/master/conf/main.yml#L13

晚点我测测chrome

380wmda999 commented 2 weeks ago

还真是ipv6的问题 注释掉就很快了 感觉这应该是自动的吧 我外网只有ipv4 tunnel这个配置了ipv6 他优先走tun的ipv6去了 ?

heiher commented 2 weeks ago

可能是有IPv6地址会优先尝试一下,超时再fallback到IPv4,socks5服务端没有IPv6就不要在tunnel里开。

380wmda999 commented 2 weeks ago

tun2socks目前只处理TCP和UDP,其它协议不处理。

其实icmp可以开一下 go-tun2socks 就是开了的 只需要在lwipopts.h 里面 定义一下 LWIP_ICMP 1(默认是0) 和 LWIP_ICMP6 1 就行了 这个是他协议栈里面自带的

heiher commented 2 weeks ago

不能反应真实的延迟,可能会有副作用。

380wmda999 commented 2 weeks ago

关了ipv6好像会好一些 但是 第一次连接好像还是存在问题 我的测试方式是: 打开谷歌浏览器 f12 (disable cache是勾选上的) 到network 输入网址 view-source:https://www.baidu.com/favicon.ico 回车 第一次 确实还是比较慢的 每次我都是关闭浏览器 再重新打开 测试这样的操作 偶尔stalled的时间会比较长(5-8s左右) 出现的概率 大概10次里面出现2-3次吧 但是如果我不开tun 这样测试 就不会出现这样的情况 image

380wmda999 commented 2 weeks ago

不能反应真实的延迟,可能会有副作用。

这个 我看gvisor的icmp也是这么操作的 直接做的回复 有点像fake dns 这种操作 因为我自己也是fake了dns的 server端实际收到的是域名 而不是ip地址 这样可以防止客户端ip解析错误(dns污染)这种情况 还有就是 客户端解析的ip 可能并不是服务端对应该域名最好的ip 所以还是服务端解析域名比较好一点

380wmda999 commented 2 weeks ago
./hev-socks5-server-linux-x86_64 server.yaml 
[2024-04-30 23:58:41] [E] 0x7fbe5e2428e0 socks5 server connect
[2024-04-30 23:58:46] [E] 0x7fbe5e242840 socks5 server connect
[2024-04-30 23:59:36] [E] 0x7fbe5e2423e0 socks5 server connect
[2024-04-30 23:59:45] [2024-04-30 23:59:45] [E] [E] 0x7fbe5e2da340 socks5 server connect0x7fbe5e325e80 socks5 server connect

[2024-04-30 23:59:45] [E] 0x7fbe5e325700 socks5 server connect
[2024-04-30 23:59:47] [E] 0x7fbe5eee6970 socks5 server connect

[2024-05-01 00:00:04] [E] 0x7fbe5df848e0 socks5 server connect
[2024-05-01 00:00:10] [E] 0x7fbe5e248e80 socks5 server connect
[2024-05-01 00:00:10] [E] 0x7fbe5e03c0c0 socks5 server connect
[2024-05-01 00:00:10] [E] 0x7fbe5e248ca0 socks5 server connect
[2024-05-01 00:00:10] [E] 0x7fbe5e248c00 socks5 server connect
[2024-05-01 00:00:11] [E] 0x7fbe5eee60e0 socks5 server connect
[2024-05-01 00:00:11] [E] 0x7fbe5eee6ab0 socks5 server connect
[2024-05-01 00:00:16] [2024-05-01 00:00:16] [E] [E] 0x7fbe5ee8f0d0 socks5 server connect0x7fbe5e03c0c0 socks5 server connect

[2024-05-01 00:00:16] [E] 0x7fbe5e248e80 socks5 server connect
[2024-05-01 00:00:16] [E] 0x7fbe5f05a8d0 socks5 server connect
[2024-05-01 00:00:16] [E] 0x7fbe5eee6d60 socks5 server connect
[2024-05-01 00:00:16] [E] 0x7fbe5eee75f0 socks5 server connect
[2024-05-01 00:00:16] [E] 0x7fbe5e248c00 socks5 server connect
[2024-05-01 00:00:16] [E] 0x7fbe5e248ca0 socks5 server connect

[2024-05-01 00:01:52] [E] 0x7fbe5eee6180 socks5 server connect
[2024-05-01 00:01:54] [E] 0x7fbe5e49e520 socks5 server connect
[2024-05-01 00:01:55] [E] 0x7fbe5e3bbca0 socks5 server connect
[2024-05-01 00:01:57] [E] 0x7fbe5e325a20 socks5 server connect
[2024-05-01 00:01:58] [E] 0x7fbe5eee6180 socks5 server connect
[2024-05-01 00:02:00] [E] 0x7fbe5dee9c00 socks5 server connect
[2024-05-01 00:02:01] [E] 0x7fbe5dee92a0 socks5 server connect
[2024-05-01 00:02:04] [E] 0x7fbe5dee92a0 socks5 server connect
[2024-05-01 00:02:07] [E] 0x7fbe5e453340 socks5 server connect
[2024-05-01 00:02:11] [E] 0x7fbe5e370020 socks5 server connect
[2024-05-01 00:02:11] [E] 0x7fbe5dee9d40 socks5 server connect
[2024-05-01 00:02:13] [E] 0x7fbe5e325980 socks5 server connect
[2024-05-01 00:02:13] [E] 0x7fbe5e3bb700 socks5 server connect
[2024-05-01 00:02:14] [E] 0x7fbe5e3252a0 socks5 server connect
[2024-05-01 00:02:14] [E] 0x7fbe5dee9d40 socks5 server connect
[2024-05-01 00:02:26] [E] 0x7fbe5e3705c0 socks5 server connect
[2024-05-01 00:02:30] [2024-05-01 00:02:30] [E] [E] 0x7fbe5ed07de0 socks5 server connect0x7fbe5ed087a0 socks5 server connect

[2024-05-01 00:02:30] [E] 0x7fbe5e4e9520 socks5 server connect
[2024-05-01 00:02:35] [E] 0x7fbe5e2427a0 socks5 server connect
[2024-05-01 00:02:35] [E] 0x7fbe5ed08340 socks5 server connect
[2024-05-01 00:02:35] [E] 0x7fbe5ed08200 socks5 server connect
[2024-05-01 00:02:35] [E] 0x7fbe5ed080c0 socks5 server connect
[2024-05-01 00:02:35] [E] 0x7fbe5e1dc700 socks5 server connect
[2024-05-01 00:02:35] [E] 0x7fbe5e1dc2a0 socks5 server connect
[2024-05-01 00:02:36] [2024-05-01 00:02:36] [E] [E] 0x7fbe5e1dc160 socks5 server connect0x7fbe5e242020 socks5 server connect

[2024-05-01 00:02:38] [E] 0x7fbe5e28fe80 socks5 server connect
[2024-05-01 00:02:38] [E] 0x7fbe5e2427a0 socks5 server connect
[2024-05-01 00:02:38] [E] 0x7fbe5e2da980 socks5 server connect
[2024-05-01 00:02:38] [E] 0x7fbe5e28fc00 socks5 server connect
[2024-05-01 00:02:38] [E] 0x7fbe5ed080c0 socks5 server connect
[2024-05-01 00:02:38] [E] 0x7fbe5e4e9520 socks5 server connect
[2024-05-01 00:02:42] [E] 0x7fbe5ed080c0 socks5 server connect
[2024-05-01 00:02:42] [E] 0x7fbe5ed08340 socks5 server connect
[2024-05-01 00:02:42] [E] 0x7fbe5e2daac0 socks5 server connect
[2024-05-01 00:02:42] [E] 0x7fbe5ed07de0 socks5 server connect
[2024-05-01 00:02:42] [E] 0x7fbe5e3700c0 socks5 server connect
[2024-05-01 00:02:45] [E] 0x7fbe5ed080c0 socks5 server connect
[2024-05-01 00:02:45] [E] 0x7fbe5e1dc160 socks5 server connect
[2024-05-01 00:02:45] [E] 0x7fbe5e1dc2a0 socks5 server connect
[2024-05-01 00:02:45] [E] 0x7fbe5e1dc700 socks5 server connect
[2024-05-01 00:02:45] [E] 0x7fbe5e2dab60 socks5 server connect
[2024-05-01 00:02:47] [E] 0x7fbe5e03ce80 socks5 server connect
[2024-05-01 00:02:48] [2024-05-01 00:02:48] [E] [E] 0x7fbe5e03c8e0 socks5 server connect0x7fbe5e1dc160 socks5 server connect

[2024-05-01 00:02:48] [E] 0x7fbe5f05ad50 socks5 server connect
[2024-05-01 00:02:50] [E] 0x7fbe5ed07de0 socks5 server connect
[2024-05-01 00:02:50] [E] 0x7fbe5e2423e0 socks5 server connect
[2024-05-01 00:02:50] [E] 0x7fbe5e03ce80 socks5 server connect
[2024-05-01 00:02:54] [E] 0x7fbe5f05ad50 socks5 server connect
[2024-05-01 00:02:57] [E] 0x7fbe5e325e80 socks5 server connect
[2024-05-01 00:02:59] [2024-05-01 00:02:59] [2024-05-01 00:02:59] [E] [E] [E] 0x7fbe5dee9520 socks5 server connect0x7fbe5e325700 socks5 server connect0x7fbe5ed07de0 socks5 server connect

[2024-05-01 00:02:59] [E] 0x7fbe5f05ad50 socks5 server connect
[2024-05-01 00:02:59] [E] 0x7fbe5e28f160 socks5 server connect
[2024-05-01 00:02:59] [E] 0x7fbe5e28f020 socks5 server connect
[2024-05-01 00:02:59] [E] 0x7fbe5e03c7a0 socks5 server connect
[2024-05-01 00:03:02] [E] 0x7fbe5df84b60 socks5 server connect
[2024-05-01 00:03:02] [E] 0x7fbe5e2dab60 socks5 server connect

[2024-05-01 00:03:02] [E] 0x7fbe5f05ad50 socks5 server connect[2024-05-01 00:03:02] 
[E] 0x7fbe5e03c8e0 socks5 server connect
[2024-05-01 00:03:02] [E] 0x7fbe5e242020 socks5 server connect
[2024-05-01 00:03:02] [E] 0x7fbe5e2420c0 socks5 server connect
[2024-05-01 00:03:02] [E] 0x7fbe5f05aea0 socks5 server connect
[2024-05-01 00:03:05] [E] 0x7fbe5e28f020 socks5 server connect
[2024-05-01 00:03:05] [E] 0x7fbe5dee9520 socks5 server connect
[2024-05-01 00:03:06] [E] 0x7fbe5df84660 socks5 server connect
[2024-05-01 00:03:09] [E] 0x7fbe5df84660 socks5 server connect
[2024-05-01 00:03:12] [E] 0x7fbe5e28f020 socks5 server connect
[2024-05-01 00:03:15] [E] 0x7fbe5e28f020 socks5 server connect
[2024-05-01 00:03:15] [E] 0x7fbe5eea3210 socks5 server connect
[2024-05-01 00:03:18] [E] 0x7fbe5e28f020 socks5 server connect

是server 端的关系么 我看好多时候都是很久没有输出 然后突然一下子打印好几个 socks5 server connect 有些时候 打印还被中间插入了 就像这种 [2024-05-01 00:03:02] [2024-05-01 00:03:02] [E] [E] 0x7fbe5ed07de0 socks5 server connect0x7fbe5e03c7a0 socks5 server connect

heiher commented 2 weeks ago

看看是不是 ulimit -n 限制的打开文件数太少?调高到 65535 试试。

heiher commented 2 weeks ago

不能反应真实的延迟,可能会有副作用。

这个 我看gvisor的icmp也是这么操作的 直接做的回复 有点像fake dns 这种操作 因为我自己也是fake了dns的 server端实际收到的是域名 而不是ip地址 这样可以防止客户端ip解析错误(dns污染)这种情况 还有就是 客户端解析的ip 可能并不是服务端对应该域名最好的ip 所以还是服务端解析域名比较好一点

没有打算在tun2socks上实现fake dns,本地的socks5 server可以做。

380wmda999 commented 2 weeks ago

看看是不是 ulimit -n 限制的打开文件数太少?调高到 65535 试试。

我默认 ulimit 是 4096 4000多个连接 我觉得 测试应该没有达到吧 我改成65535再试试看

380wmda999 commented 2 weeks ago
./hev-socks5-server-linux-x86_64 server.yaml 
[2024-05-01 00:20:36] [W] set limit nofile
[2024-05-01 00:20:39] [E] 0x7fd4d394ed70 socks5 server connect
[2024-05-01 00:20:40] [E] 0x7fd4d3943420 socks5 server connect
[2024-05-01 00:20:45] [E] 0x7fd4d2bb9980 socks5 server connect
[2024-05-01 00:21:24] [E] 0x7fd4d2bb9160 socks5 server connect
[2024-05-01 00:21:24] [E] 0x7fd4d2bb9340 socks5 server connect
[2024-05-01 00:21:24] [E] 0x7fd4d2bb9020 socks5 server connect
[2024-05-01 00:21:24] [E] 0x7fd4d2eb33e0 socks5 server connect
[2024-05-01 00:21:24] [E] 0x7fd4d31f8200 socks5 server connect
[2024-05-01 00:21:24] [E] 0x7fd4d32430c0 socks5 server connect
[2024-05-01 00:21:24] [E] 0x7fd4d2b69840 socks5 server connect
[2024-05-01 00:21:27] [E] 0x7fd4d2bb9160 socks5 server connect
[2024-05-01 00:21:27] [E] 0x7fd4d2b69980 socks5 server connect
[2024-05-01 00:21:27] [E] 0x7fd4d2b69a20 socks5 server connect
[2024-05-01 00:21:27] [E] 0x7fd4d2b69ac0 socks5 server connect
[2024-05-01 00:21:27] [E] 0x7fd4d2bb9020 socks5 server connect
[2024-05-01 00:21:27] [E] 0x7fd4d37d9160 socks5 server connect
[2024-05-01 00:21:30] [E] 0x7fd4d2b69a20 socks5 server connect
[2024-05-01 00:21:30] [E] 0x7fd4d37d9b20 socks5 server connect
[2024-05-01 00:21:33] [E] 0x7fd4d37d8ab0 socks5 server connect
[2024-05-01 00:21:36] [E] 0x7fd4d2a892a0 socks5 server connect
[2024-05-01 00:21:44] [E] 0x7fd4d36205c0 socks5 server connect
[2024-05-01 00:21:48] [E] 0x7fd4d3620160 socks5 server connect
[2024-05-01 00:21:48] [E] 0x7fd4d2b6a020 socks5 server connect
[2024-05-01 00:22:00] [E] 0x7fd4d3701ac0 socks5 server connect
[2024-05-01 00:22:01] [E] 0x7fd4d36202a0 socks5 server connect
[2024-05-01 00:22:03] [E] 0x7fd4d366b660 socks5 server connect
[2024-05-01 00:22:03] [2024-05-01 00:22:03] [2024-05-01 00:22:03] [E] [E] [E] 0x7fd4d37769e0 socks5 server connect0x7fd4d3620200 socks5 server connect0x7fd4d366b340 socks5 server connect

[2024-05-01 00:22:03] [E] 0x7fd4d3620020 socks5 server connect
[2024-05-01 00:22:03] [2024-05-01 00:22:03] [2024-05-01 00:22:03] [E] [E] [E] 0x7fd4d3776940 socks5 server connect0x7fd4d37d9bc0 socks5 server connect0x7fd4d366b2a0 socks5 server connect

[2024-05-01 00:22:03] [E] 0x7fd4d3701ac0 socks5 server connect
[2024-05-01 00:22:04] [E] 0x7fd4d37d99e0 socks5 server connect
[2024-05-01 00:22:06] [2024-05-01 00:22:06] [E] [E] 0x7fd4d3620020 socks5 server connect0x7fd4d366b2a0 socks5 server connect

[2024-05-01 00:22:06] [E] 0x7fd4d366b660 socks5 server connect
[2024-05-01 00:22:06] [E] 0x7fd4d366b340 socks5 server connect
[2024-05-01 00:22:06] [E] 0x7fd4d3620200 socks5 server connect
[2024-05-01 00:22:06] [E] 0x7fd4d37769e0 socks5 server connect
[2024-05-01 00:22:06] [E] 0x7fd4d37763d0 socks5 server connect
[2024-05-01 00:22:06] [E] 0x7fd4d3701ac0 socks5 server connect
[2024-05-01 00:22:07] [E] 0x7fd4d3776940 socks5 server connect
[2024-05-01 00:22:10] [E] 0x7fd4d3620200 socks5 server connect
[2024-05-01 00:22:10] [E] 0x7fd4d3620020 socks5 server connect
[2024-05-01 00:22:11] [E] 0x7fd4d3776940 socks5 server connect
[2024-05-01 00:22:12] [E] 0x7fd4d366b340 socks5 server connect
[2024-05-01 00:22:12] [E] 0x7fd4d2a89d40 socks5 server connect
[2024-05-01 00:22:13] [E] 0x7fd4d2a89c00 socks5 server connect
[2024-05-01 00:22:13] [E] 0x7fd4d37f8830 socks5 server connect
[2024-05-01 00:22:14] [E] 0x7fd4d2a89b60 socks5 server connect
[2024-05-01 00:22:14] [E] 0x7fd4d37f8970 socks5 server connect
[2024-05-01 00:22:15] [E] 0x7fd4d3620020 socks5 server connect
[2024-05-01 00:22:15] [E] 0x7fd4d366b340 socks5 server connect
[2024-05-01 00:22:16] [E] 0x7fd4d3620200 socks5 server connect
[2024-05-01 00:22:16] [E] 0x7fd4d2ce7480 socks5 server connect
[2024-05-01 00:22:17] [E] 0x7fd4d2a89b60 socks5 server connect
[2024-05-01 00:22:17] [E] 0x7fd4d2a89c00 socks5 server connect
[2024-05-01 00:22:19] [E] 0x7fd4d3620200 socks5 server connect
[2024-05-01 00:22:19] [E] 0x7fd4d366b340 socks5 server connect
[2024-05-01 00:22:20] [E] 0x7fd4d3111160 socks5 server connect
[2024-05-01 00:22:20] [E] 0x7fd4d2e68520 socks5 server connect
[2024-05-01 00:22:20] [E] 0x7fd4d2f49b60 socks5 server connect
[2024-05-01 00:22:21] [E] 0x7fd4d31110c0 socks5 server connect
[2024-05-01 00:22:21] [E] 0x7fd4d315ede0 socks5 server connect
[2024-05-01 00:22:27] [E] 0x7fd4d2f94840 socks5 server connect
[2024-05-01 00:22:27] [E] 0x7fd4d35d1a20 socks5 server connect
[2024-05-01 00:22:30] [E] 0x7fd4d36b6520 socks5 server connect
[2024-05-01 00:22:30] [E] 0x7fd4d36b67a0 socks5 server connect
[2024-05-01 00:22:32] [E] 0x7fd4d2e68340 socks5 server connect
[2024-05-01 00:22:32] [E] 0x7fd4d2f94840 socks5 server connect
[2024-05-01 00:22:32] [E] 0x7fd4d36208e0 socks5 server connect
[2024-05-01 00:22:32] [E] 0x7fd4d2e682a0 socks5 server connect
[2024-05-01 00:22:32] [E] 0x7fd4d2a89b60 socks5 server connect
[2024-05-01 00:22:32] [E] 0x7fd4d2a89c00 socks5 server connect
[2024-05-01 00:22:33] [E] 0x7fd4d35d1a20 socks5 server connect
[2024-05-01 00:22:40] [2024-05-01 00:22:40] [E] [E] 0x7fd4d2efe3e0 socks5 server connect0x7fd4d2e68de0 socks5 server connect

[2024-05-01 00:22:40] [E] 0x7fd4d2efe7a0 socks5 server connect
[2024-05-01 00:22:41] [E] 0x7fd4d2e1b2a0 socks5 server connect
[2024-05-01 00:22:41] [E] 0x7fd4d2e1b340 socks5 server connect
[2024-05-01 00:22:41] [E] 0x7fd4d3111b60 socks5 server connect
[2024-05-01 00:22:41] [E] 0x7fd4d2f49480 socks5 server connect
[2024-05-01 00:22:43] [2024-05-01 00:22:43] [E] [E] 0x7fd4d3111ca0 socks5 server connect0x7fd4d2e1b480 socks5 server connect

[2024-05-01 00:22:43] [E] 0x7fd4d2f49700 socks5 server connect
[2024-05-01 00:22:43] [E] 0x7fd4d2f49980 socks5 server connect
[2024-05-01 00:22:43] [E] 0x7fd4d2e68de0 socks5 server connect
[2024-05-01 00:22:44] [E] 0x7fd4d2efe7a0 socks5 server connect
[2024-05-01 00:22:44] [E] 0x7fd4d2e1b340 socks5 server connect
[2024-05-01 00:22:44] [E] 0x7fd4d3111b60 socks5 server connect
[2024-05-01 00:22:44] [E] 0x7fd4d3111de0 socks5 server connect
[2024-05-01 00:22:46] [2024-05-01 00:22:46] [E] [E] 0x7fd4d2e1b480 socks5 server connect0x7fd4d2f49480 socks5 server connect

[2024-05-01 00:22:50] [2024-05-01 00:22:50] [E] [E] 0x7fd4d2efe3e0 socks5 server connect0x7fd4d3111ca0 socks5 server connect

[2024-05-01 00:22:53] [E] 0x7fd4d2f49700 socks5 server connect
[2024-05-01 00:22:53] [E] 0x7fd4d2e68c00 socks5 server connect
[2024-05-01 00:22:55] [2024-05-01 00:22:55] [2024-05-01 00:22:55] [E] [E] [E] 0x7fd4d2eb35c0 socks5 server connect0x7fd4d30c6c00 socks5 server connect0x7fd4d2efe200 socks5 server connect

[2024-05-01 00:22:55] [E] 0x7fd4d30c6ca0 socks5 server connect
[2024-05-01 00:22:55] [E] 0x7fd4d2efe3e0 socks5 server connect
[2024-05-01 00:22:55] [E] 0x7fd4d2eb3200 socks5 server connect

还是有打印中间插入的情况

heiher commented 2 weeks ago

是不是开了多个socks5-server进程?按说同一个进程内单条日志是原子写的。

380wmda999 commented 2 weeks ago

是不是开了多个socks5-server进程?按说同一个进程内单条日志是原子写的。

肯定只开个一个 配置都一样的 都是监听1080端口 多开的话 也会提示端口绑定错误啊

heiher commented 2 weeks ago

是不是开了多个socks5-server进程?按说同一个进程内单条日志是原子写的。

肯定只开个一个 配置都一样的 都是监听1080端口 多开的话 也会提示端口绑定错误啊

同一个用户下的不会,默认有reuseport。

380wmda999 commented 2 weeks ago

是不是开了多个socks5-server进程?按说同一个进程内单条日志是原子写的。

ps aux | grep hev

test        3332  0.5  0.0   8584  3164 pts/0    Sl+  00:20   0:06 ./hev-socks5-server-linux-x86_64 server.yaml
root        6579  0.1  0.2  44288  8452 pts/1    S+   00:36   0:00 ./hev-socks5-tunnel-linux-x86_64 client.yaml
test        8002  0.0  0.0  17672   664 pts/3    S+   00:38   0:00 grep --color=auto hev

看了 server 确实就一个 所以我感觉特别奇怪啊 我不知道你那边测试没有 我这边 第一次建立连接 确实 10次里面 大概有3,4都会比较慢 就我之前说的测试方式 : 打开谷歌浏览器 f12 (disable cache是勾选上的) 到network 输入网址 view-source:https://www.baidu.com/favicon.ico 回车 看完时间线之后再关闭浏览器

380wmda999 commented 2 weeks ago
[2024-05-01 00:40:39] [E] 0x7fd4d2fdb7a0 socks5 server connect
[2024-05-01 00:40:39] [2024-05-01 00:40:39] [E] [E] 0x7fd4d2fdb840 socks5 server connect0x7fd4d3112020 socks5 server connect

[2024-05-01 00:40:39] [E] 0x7fd4d31efe80 socks5 server connect
[2024-05-01 00:40:42] [E] 0x7fd4d3112660 socks5 server connect
[2024-05-01 00:40:42] [2024-05-01 00:40:42] [E] [E] 0x7fd4d31efc00 socks5 server connect0x7fd4d2c28660 socks5 server connect

[2024-05-01 00:40:42] [E] 0x7fd4d31f0480 socks5 server connect
[2024-05-01 00:40:43] [E] 0x7fd4d31efe80 socks5 server connect
[2024-05-01 00:40:45] [E] 0x7fd4d2c28660 socks5 server connect
[2024-05-01 00:40:45] [E] 0x7fd4d31efc00 socks5 server connect
[2024-05-01 00:40:46] [E] 0x7fd4d2fdb840 socks5 server connect
[2024-05-01 00:40:46] [E] 0x7fd4d35cba20 socks5 server connect
[2024-05-01 00:40:48] [E] 0x7fd4d33bee80 socks5 server connect
[2024-05-01 00:40:53] [E] 0x7fd4d2c28660 socks5 server connect
[2024-05-01 00:41:10] [E] 0x7fd4d33bd160 socks5 server connect
[2024-05-01 00:41:13] [E] 0x7fd4d2b79520 socks5 server connect
[2024-05-01 00:41:15] [2024-05-01 00:41:15] [2024-05-01 00:41:15] [E] [E] [E] 0x7fd4d2c283e0 socks5 server connect0x7fd4d2ce8ac0 socks5 server connect0x7fd4d2c28c00 socks5 server connect

[2024-05-01 00:41:15] [E] 0x7fd4d33bd7a0 socks5 server connect
[2024-05-01 00:41:15] [E] 0x7fd4d33bdc00 socks5 server connect
[2024-05-01 00:41:15] [E] 0x7fd4d2ce8200 socks5 server connect
[2024-05-01 00:41:15] [E] 0x7fd4d35cb700 socks5 server connect
[2024-05-01 00:41:19] [E] 0x7fd4d2c28d40 socks5 server connect
[2024-05-01 00:41:19] [E] 0x7fd4d2c283e0 socks5 server connect
[2024-05-01 00:41:19] [E] 0x7fd4d33bd3e0 socks5 server connect
[2024-05-01 00:41:19] [E] 0x7fd4d33bdca0 socks5 server connect
[2024-05-01 00:41:19] [E] 0x7fd4d35cb700 socks5 server connect
[2024-05-01 00:41:19] [E] 0x7fd4d2ce80c0 socks5 server connect
[2024-05-01 00:41:21] [E] 0x7fd4d2ce9e80 socks5 server connect
[2024-05-01 00:41:21] [E] 0x7fd4d2c64a20 socks5 server connect
[2024-05-01 00:41:22] [E] 0x7fd4d2c28980 socks5 server connect
[2024-05-01 00:41:22] [E] 0x7fd4d2c283e0 socks5 server connect
[2024-05-01 00:41:22] [E] 0x7fd4d33bd3e0 socks5 server connect
[2024-05-01 00:41:22] [E] 0x7fd4d35cb980 socks5 server connect
[2024-05-01 00:41:22] [E] 0x7fd4d33bdca0 socks5 server connect
[2024-05-01 00:41:22] [E] 0x7fd4d2c28d40 socks5 server connect
[2024-05-01 00:41:24] [E] 0x7fd4d31f00c0 socks5 server connect
[2024-05-01 00:41:24] [E] 0x7fd4d2c64a20 socks5 server connect
[2024-05-01 00:41:26] [E] 0x7fd4d2c283e0 socks5 server connect
[2024-05-01 00:41:31] [2024-05-01 00:41:31] [E] [E] 0x7fd4d33bd3e0 socks5 server connect0x7fd4d2c645c0 socks5 server connect

[2024-05-01 00:41:31] [E] 0x7fd4d2c64a20 socks5 server connect
[2024-05-01 00:41:31] [E] 0x7fd4d35cb980 socks5 server connect
[2024-05-01 00:41:31] [E] 0x7fd4d2b79700 socks5 server connect
[2024-05-01 00:41:31] [E] 0x7fd4d2c64b60 socks5 server connect
[2024-05-01 00:41:33] [E] 0x7fd4d2c64c00 socks5 server connect
[2024-05-01 00:41:33] [E] 0x7fd4d2c28980 socks5 server connect
[2024-05-01 00:41:34] [E] 0x7fd4d2b79520 socks5 server connect
[2024-05-01 00:41:34] [E] 0x7fd4d35cb700 socks5 server connect
[2024-05-01 00:41:34] [E] 0x7fd4d33bd3e0 socks5 server connect
[2024-05-01 00:41:34] [E] 0x7fd4d2c64a20 socks5 server connect
[2024-05-01 00:41:34] [E] 0x7fd4d2b79700 socks5 server connect
[2024-05-01 00:41:34] [E] 0x7fd4d2c64b60 socks5 server connect
[2024-05-01 00:41:36] [E] 0x7fd4d2c64de0 socks5 server connect
[2024-05-01 00:41:36] [E] 0x7fd4d2c28980 socks5 server connect

而且好像这种概率还挺高的 40 -41 1分钟之内 这种出现了好几次

heiher commented 2 weeks ago

现在没环境试,晚点看看。

heiher commented 2 weeks ago

在Chrome(124.0.6367.118)上测试了,https://www.baidu.com/favicon.ico 的问题我这无法复现。

380wmda999 commented 2 weeks ago

打印串行的问题也没有么? 奇怪 难不成这是windows系统下独有的 我这边测试是windows 系统下装的VMware 然后 VMware 里面装的Ubuntu 20.04.2 然后测试的 我换个方式在测试下

heiher commented 2 weeks ago

打印串行的问题也没有么?

服务端的打印问题是符合预期的,因为有两个logger在输出,所以没有原子性了,后面需要改进一下。

奇怪 难不成这是windows系统下独有的 我这边测试是windows 系统下装的VMware 然后 VMware 里面装的Ubuntu 20.04.2 然后测试的 我换个方式在测试下

检查一下有没有可能是DNS不同,不是最优解析的原因?

380wmda999 commented 2 weeks ago

检查一下有没有可能是DNS不同,不是最优解析的原因?

dns的解析 时间线不会在wait for server res 里面 我发现 我做了一个test的server 122.114.66.146:1082 chrome view-source:https://www.baidu.com/favicon.ico 第二次请求时间较长这个问题确实存在 直连测试: chrome 安装 SwitchyOmega 设置默认代理socks5 122.114.66.146:1082 然后访问 f12下 network里面勾选disable cache 打开网址: view-source:https://www.baidu.com/favicon.ico 在复用连接的情况下(也就是第二次f5刷新 反正时间线不要有建立连接) 两次请求都是60-68ms之间 tun2sock 测试 client.yaml socks5的配置如下 port: 1082 address: 122.114.66.146 udp: 'tcp' 启动 tun2sock 然后添加ip route
启动chrome 关闭SwitchyOmega 然后访问 f12下 network里面勾选disable cache 打开网址: view-source:https://www.baidu.com/favicon.ico 一样是复用连接的情况 第一次请求时间正常 60-68ms 之间 但是第二次请求时间却在100ms+ 我这样测试应该没问题 那么这第二次请求多的40ms+ 应该就是本地的tun2sock导致的

heiher commented 2 weeks ago

我这tun2socks比直连延迟低,应该是DNS解析到不同延迟的Web服务器了。没有发现F5刷新延迟明显变化。

tun2socks

Screenshot from 2024-05-04 13-47-51

直连

Screenshot from 2024-05-04 13-52-25

380wmda999 commented 2 weeks ago

我这tun2socks比直连延迟低,应该是DNS解析到不同延迟的Web服务器了。没有发现F5刷新延迟明显变化。

你是socks server 装在本地测试的么 那么 hosts 文件 配置一下 www.baidu.com 域名解析的ip 确保一下都走同一个ip不就行了 或者 你直接用我这个 122.114.66.146:1082 测试的server 看看是个什么情况 正常道理来说 tun2sock 比 直连 延迟 高个1-10ms 之间 都是正常的 你这 直连比tun2sock 高了 30ms+

heiher commented 2 weeks ago

我这tun2socks比直连延迟低,应该是DNS解析到不同延迟的Web服务器了。没有发现F5刷新延迟明显变化。

你是socks server 装在本地测试的么 那么 hosts 文件 配置一下 www.baidu.com 域名解析的ip 确保一下都走同一个ip不就行了 或者 你直接用我这个 122.114.66.146:1082 测试的server 看看是个什么情况 正常道理来说 tun2sock 比 直连 延迟 高个1-10ms 之间 都是正常的 你这 直连比tun2sock 高了 30ms+

取齐了解析的结果:

tun2socks

ctrl+f5和反复开关浏览器多次测试都没有观察到不同请求的延迟明显变化。

Screenshot from 2024-05-04 14-07-50

直连

Screenshot from 2024-05-04 14-08-26

380wmda999 commented 2 weeks ago

这个就很奇怪了 你把 socks5 server 改到 我用的这个 122.114.66.146 1082 测试一下 我确实想不出来 我自己测试的有什么问题 为什么 第二次请求 在tun2socks 下 会多40ms的延迟 我感觉我的测试方式也没有任何问题啊

380wmda999 commented 2 weeks ago

我做了一个test的server 122.114.66.146:1082 chrome view-source:https://www.baidu.com/favicon.ico 第二次请求时间较长这个问题确实存在 直连测试: chrome 安装 SwitchyOmega 设置默认代理socks5 122.114.66.146:1082 然后访问 f12下 network里面勾选disable cache 打开网址: view-source:https://www.baidu.com/favicon.ico 在复用连接的情况下(也就是第二次f5刷新 反正时间线不要有建立连接) 两次请求都是60-68ms之间 tun2sock 测试 client.yaml socks5的配置如下 port: 1082 address: 122.114.66.146 udp: 'tcp' 启动 tun2sock 然后添加ip route 启动chrome 关闭SwitchyOmega 然后访问 f12下 network里面勾选disable cache 打开网址: view-source:https://www.baidu.com/favicon.ico 一样是复用连接的情况 第一次请求时间正常 60-68ms 之间 但是第二次请求时间却在100ms+ 我这样测试应该没问题 那么这第二次请求多的40ms+ 应该就是本地的tun2sock导致的

我的这个测试方式 应该是没有任何问题的吧? 所以我就想不明白了

heiher commented 2 weeks ago

搞不懂了,socks5 server要放在本地,远程的话干扰因素不可控。

380wmda999 commented 2 weeks ago

搞不懂了,socks5 server要放在本地,远程的话干扰因素不可控。

如果是远程server 导致的话 那么 你换成我这个远程的server 122.114.66.146:1082 应该也是会出现同样的问题的 是这样吧?

heiher commented 2 weeks ago

搞不懂了,socks5 server要放在本地,远程的话干扰因素不可控。

如果是远程server 导致的话 那么 你换成我这个远程的server 122.114.66.146:1082 应该也是会出现同样的问题的 是这样吧?

我没试,不确定。只是说远程的链路延迟本身可能就有波动,不便于分析延迟的来源。

你再试试物理机上跑?

380wmda999 commented 2 weeks ago

我没试,不确定。只是说远程的链路延迟本身可能就有波动,不便于分析延迟的来源。

你再试试物理机上跑?

我没有linux的物理机 我两个机器 一个台式 一个是联想的笔记本 两个都装的windows 系统 两台电脑都有同样的问题 但是我找不到原因所在。

heiher commented 2 weeks ago

用U盘做个Live系统试试

380wmda999 commented 2 weeks ago

用U盘做个Live系统试试

U的Live系统 和vmware 虚拟化出来的 差别? 我看空了能不能搞到一个linux 的vps 带图形化界面的 然后测试看看

heiher commented 2 weeks ago

用U盘做个Live系统试试

U的Live系统 和vmware 虚拟化出来的 差别? 我看空了能不能搞到一个linux 的vps 带图形化界面的 然后测试看看

物理机上启动,目的是避开虚拟化。

380wmda999 commented 2 weeks ago

好 我试试