分享自己用 Rust 写的可以直接利用 SOCKS 代理的游戏加速器

2020-06-21 15:10:55 +08:00
 Sketch

之前分享了一款自己用 Go 写的游戏加速器 IkaGo,但是我也在文章中多次提到,加速器最重要的是线路而不是技术。为了能更好的利用好手上的一些优质的众所周知的 SOCKS 代理,我又开发了一款加速器(或者说,半个加速器)……

pcap2socks

pcap2socks 是一个以 Rust 语言撰写的,通过 pcap 重定向流量到 SOCKS 代理的代理。

效果图(图一乐,具体效果还得看线路):

特性

如何使用

pcap2socks -s <需要代理的设备的 IP 地址> -p <需要代理的设备上所填写的网关> -d <SOCKS 代理,如 127.0.0.1:1080>


// 比如 Nintendo Switch 的 IP 地址填写为 10.6.0.1,网关填写为 10.6.0.2,自己的 SOCKS 代理在 127.0.0.1:1080,那么
pcap2socks -s 10.6.0.1 -p 10.6.0.2 -d 127.0.0.1:1080

与市面上的加速器的比较

一些不得不提的话

pcap2socks 的实现相较 IkaGo 简单得多,也复杂得多。简单在略去了很多功能的实现,如代理、多路复用、监控网络流量等(以后可能会加回一部分),复杂在实现转发 TCP/UDP 到 SOCKS 的过程实际上是实现了一遍 TCP/UDP 栈,以及 Rust 函数式编程的编程范型与复杂的语法。开发的全过程也算是复习了一遍计算机网络,同时把自己的编程思想给更新了……

pcap2socks 相较 IkaGo 在体量上也小很多,使用其它软件实现的代理也就不需要在服务器上部署 pcap2socks 的服务端。而且 pcap2socks 只是充当被代理设备的流量到 SOCKS 流量转换的角色,因此在代理的下方也可以接各种各样不同的服务,无论是 Udp2raw-tunnel,还是 kcptun,相较 IkaGo 也多了份自由。

因为没有 macOS 的设备,而 WSL 上的 Linux 无法使用 pcap,因此目前仅在 Windows 上测试通过(理论上各平台适用)。

项目地址


希望 pcap2socks 也能帮助到需要解决联机游戏问题的你 😊

13616 次点击
所在节点    分享创造
44 条回复
Sketch
2020-06-22 12:43:04 +08:00
@littlespider89 最近提交的 commit 可以自动选择 interface 了,所以如果能 build 的话希望能自行 build 。如果是直接从 release 中下载的话,就是需要手·动·指·定用哪个设备(网卡)的。
3q3q3q
2020-06-22 13:45:12 +08:00
这个是不是就不能再 win 下使用啊
Sketch
2020-06-22 13:49:30 +08:00
@3q3q3q 我都写了“在 Windows 上测试通过”了……这个项目是跨平台的
3q3q3q
2020-06-22 13:53:50 +08:00
这玩意在 win 下怎么用啊,让我研究一下
littlespider89
2020-06-22 16:05:20 +08:00
@Sketch -i interface 参数填写什么,填了 IP,MAC 地址,UUID 都不对
Sketch
2020-06-22 16:40:40 +08:00
@littlespider89 如果是 Windows,应该是类似 "\Device\NPF_{00000000-0000-0000-0000-000000000000}" 的一长串,如果是 macOS 等系统,应该是 "en0" 之类的名称
xwhxbg
2020-06-22 17:13:19 +08:00
@Sketch 呃,我的意思是有代理的话,直接 proxychains4 游戏的 binary 就能代理玩游戏了
Senorsen
2020-06-27 02:23:44 +08:00
@xwhxbg 看仔细啊老哥,这个是给局域网里其他设备用的,比如你有一台游戏主机( NS 、PS4 、XBox 等)的话,他们的联机游戏可以在电脑上开个这个来“加速”。
steveway
2020-06-27 20:44:19 +08:00
下载尝试了一下,发现 NS 报错 [无法连接互联网。DNS 解析失败]

NS 设置:
IP 地址:10.6.0.1
子网掩码:255.255.255.0
网关:10.6.0.2
DNS:
首选:8.8.8.8
备选:1.1.1.1
MTU1400

电脑配置:
pcap2socks.exe -s 10.6.0.1 -p 10.6.0.2 -d 127.0.0.1:1080 -i "\Device\NPF_{3ACA99AE-0CDA-4EC1-8798-91110****17C}" -v
Listen on \Device\NPF_{3ACA99AE-0CDA-4EC1-8798-91110****17C} [2c:53:**:**:**:**]: 192.168.1.18
MTU 1400
Publish 10.6.0.2
Proxy 10.6.0.1 to 127.0.0.1:1080

测试过 Socks 代理是通的,请问是哪里设置有误呢?还望解答,感谢
wayisama
2020-07-13 21:01:22 +08:00
thread 'main' panicked at 'index 21723 out of range for slice of length 86', src\libcore\slice\mod.rs:2725:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
一段时间就报错了,求问大佬解决方案
wayisama
2020-07-13 21:33:06 +08:00
@wayisama 已经解决了,重新装了 WinPcap
clooooo
2020-07-15 10:19:08 +08:00
可以代理 VMess 这种协议的吗
Sketch
2020-07-15 11:19:40 +08:00
@clooooo pcap2socks 只关心入站协议,必须是 SOCKS (SOCKS5),并不关心出站协议
clooooo
2020-07-16 09:15:16 +08:00
@Sketch 没听懂啊 我可以开一个 clash 代理 端口号 127.0.0.1:7890 再使用 pcap2socks 分享给 switch 吗?
Sketch
2020-07-16 10:06:42 +08:00
@clooooo 如果 Clash 的前置代理是 SOCKS (SOCKS5) 的话,那么可以。一般来说,前置代理会是 HTTP/HTTPS/SOCKS4(a)/SOCKS5 中的数种。
clooooo
2020-07-16 15:01:01 +08:00
@Sketch 那应该可以 clash 可以分发出 http 代理和 socks 代理
virvivir
2020-07-19 19:01:17 +08:00
联通网络 日本 vultr $$ iPhone 13.6 开热点 mac OS 有线连接 iPhone switch 无线连接 iPhone
IPHONE ip : 172.20.10.1 MAC ip: 172.120.10.3 SWITCH ip: 172.20.10.4
sudo ./pcap2socks -s 172.20.10.4 -p 172.20.10.1 -d 172.20.10.3:7891 可行 NAT b

赞美楼主,感谢!!!
virvivir
2020-07-19 19:11:32 +08:00
IPHONE ip: 172.20.10.1 MAC ip: 172.20.10.3 SWITCH ip: 172.20.10.4

正确的 ip
lcqlwe
2020-07-21 01:26:04 +08:00
Device 64:b5:xx:xx:xx:xx joined the network
thread 'tokio-runtime-worker' panicked at 'internal error: entered unreachable code', <::std::macros::panic macros>:2:4
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'tokio-runtime-worker' panicked at 'internal error: entered unreachable code', <::std::macros::panic macros>:2:4

这是报错了吗?
Sketch
2020-07-21 09:51:02 +08:00
@lcqlwe 是的,如果可以的话希望加上环境变量 RUST_BACKTRACE=1 把调用堆栈信息发一下。可以在 GitHub 开一个 issue 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/683486

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX