Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

想问个技术问题 #125

Closed
380wmda999 opened this issue Apr 30, 2024 · 59 comments
Closed

想问个技术问题 #125

380wmda999 opened this issue Apr 30, 2024 · 59 comments

Comments

@380wmda999
Copy link

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

@380wmda999
Copy link
Author

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

@heiher
Copy link
Owner

heiher commented Apr 30, 2024

我看了下 您的库 和 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性能的设备上对比过:#20

Speed

rk3399-speed

CPU Usage

rk3399-cpu

@heiher
Copy link
Owner

heiher commented Apr 30, 2024

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

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

@380wmda999
Copy link
Author

380wmda999 commented Apr 30, 2024

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

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

@heiher
Copy link
Owner

heiher commented Apr 30, 2024

主要是没有万兆网卡来做这个测试,不过有在低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
Copy link
Author

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

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

@380wmda999
Copy link
Author

380wmda999 commented Apr 30, 2024

貌似我在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
Copy link
Owner

heiher commented May 1, 2024

如果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
Copy link
Author

380wmda999 commented May 1, 2024

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
Copy link
Author

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

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

@380wmda999
Copy link
Author

380wmda999 commented May 1, 2024

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

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

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

@380wmda999
Copy link
Author

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

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

@380wmda999
Copy link
Author

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

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

晚点我测测chrome

@380wmda999
Copy link
Author

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

@380wmda999
Copy link
Author

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

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

@380wmda999
Copy link
Author

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

@380wmda999
Copy link
Author

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

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

@380wmda999
Copy link
Author

./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
Copy link
Owner

heiher commented May 1, 2024

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

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

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

@380wmda999
Copy link
Author

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

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

@380wmda999
Copy link
Author

./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
Copy link
Owner

heiher commented May 1, 2024

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

@380wmda999
Copy link
Author

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

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

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

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

@heiher
Copy link
Owner

heiher commented May 1, 2024

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

@heiher
Copy link
Owner

heiher commented May 4, 2024

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

@380wmda999
Copy link
Author

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

@heiher
Copy link
Owner

heiher commented May 4, 2024

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

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

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

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

@380wmda999
Copy link
Author

检查一下有没有可能是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
Copy link
Owner

heiher commented May 4, 2024

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

tun2socks

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

直连

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

@380wmda999
Copy link
Author

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

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

@heiher
Copy link
Owner

heiher commented May 4, 2024

我这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
Copy link
Author

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

@380wmda999
Copy link
Author

我做了一个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
Copy link
Owner

heiher commented May 4, 2024

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

@380wmda999
Copy link
Author

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

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

@heiher
Copy link
Owner

heiher commented May 4, 2024

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

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

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

你再试试物理机上跑?

@380wmda999
Copy link
Author

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

你再试试物理机上跑?

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

@heiher heiher closed this as completed May 4, 2024
@heiher heiher reopened this May 4, 2024
@heiher
Copy link
Owner

heiher commented May 4, 2024

用U盘做个Live系统试试

@380wmda999
Copy link
Author

用U盘做个Live系统试试

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

@heiher
Copy link
Owner

heiher commented May 4, 2024

用U盘做个Live系统试试

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

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

@380wmda999
Copy link
Author

好 我试试

@380wmda999
Copy link
Author

我用u盘安装了 kali linux 然后 进入到 Live系统
直连:
Screenshot_2024-05-04_09-44-21

tun2socks:
Screenshot_2024-05-04_09-21-21

开启tun2socks之后 第二个请求还是偶尔会出现延迟比较高的情况 只不过不像windows 系统下面那样 是必然事件了

@380wmda999
Copy link
Author

我觉得你那边没有出现同样的情况 有可能是你的延迟很低 就算出现了 差距也在很小之间 基本看不出来 而我这边的网络 延迟在60-70ms 就算多0.5个rtt 时间线都会很明显

@heiher
Copy link
Owner

heiher commented May 4, 2024

高延迟场景的

Screenshot from 2024-05-04 21-42-41

@heiher
Copy link
Owner

heiher commented May 4, 2024

我觉得你那边没有出现同样的情况 有可能是你的延迟很低 就算出现了 差距也在很小之间 基本看不出来 而我这边的网络 延迟在60-70ms 就算多0.5个rtt 时间线都会很明显

socks5-client与socks5-server、socks5-server与http-server之间的延迟理论上应该是不相关的,这部分不因tun2socks方式或是浏览器直接配置socks5代理方式而变化。tun2socks的lwip协议栈与操作系统的tcp/ip协议栈是通过tun设备互联的,通信延迟极低。

@heiher
Copy link
Owner

heiher commented May 4, 2024

lwip的时钟精度没有Linux内核里的高,只要不是特别离谱,造成少量的延迟波动应该也是正常的。

@380wmda999
Copy link
Author

socks5-client与socks5-server、socks5-server与http-server之间的延迟理论上应该是不相关的,这部分不因tun2socks方式或是浏览器直接配置socks5代理方式而变化。tun2socks的lwip协议栈与操作系统的tcp/ip协议栈是通过tun设备互联的,通信延迟极低。

我的理解应该是 丢包在 浏览器-> tun2socks 之间 也就是协议栈的处理 在某些特定情况下 可能没处理好 导致额外的延迟
不然无法解释 为什么 不开tun2socks 就不出现这种问题 (也就是说操作系统的内核协议栈 处理了那种特殊情况 所以不会有额外的延迟)
开了以后 windows下 是必然出现
我装的kali linux 在硬件上是 偶而出现
你那边在高延迟的网络下 测试也很少出现第二次请求 比第一次请求时间长的情况 而且就算第二次比第一次长 差距也是在10ms以内 的

@heiher
Copy link
Owner

heiher commented May 5, 2024

想不到浏览器和lwip之间会丢包的可能性,我是怀疑lwip的tcp timer精度不高。

@380wmda999
Copy link
Author

也有可能 这个问题再追就要追到lwip的协议栈里面去了 而且估计还是windows 和 linux的兼容性问题 好像需要到lwip那边去提issue了

@scruel
Copy link

scruel commented May 19, 2024

想问下这个 issue 中提到的 mark 是干什么用的呢?是给哪个请求步骤的数据包打标记呢?我是安卓设备,增加 mark: 1234 后就连不上网了。
另外对于同一个 socks5 server,使用 sagernet app 直接非 root(挂 tun0)用都没啥问题。
但 root 下用自定义路由+hev tun,部分应用会无法联网,比如推特只能看文字,不能正常显示图片和视频。

ip route add default dev rmnet_hev0 table 16666
ip rule add uidrange 10403-10403 lookup 16666 pref 9000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants