之前分享了一款自己用 Go 写的游戏加速器 IkaGo,但是我也在文章中多次提到,加速器最重要的是线路而不是技术。为了能更好的利用好手上的一些优质的众所周知的 SOCKS 代理,我又开发了一款加速器(或者说,半个加速器)……
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 也能帮助到需要解决联机游戏问题的你 😊
1
wafm 2020-06-21 15:14:57 +08:00
可惜现在的国内加速器厂商好像都做了壁垒?
比如要同为一个加速器的朋友才能好好玩耍了 |
4
Sketch OP @wafm 挺微妙。不过你想,如果加速器有壁垒,那么不就相当于变成游戏局域网了吗,即使你用着电信宽带有着原生的 Full Cone NAT,也不能和好友游戏
|
5
LPeJuN6lLsS9 2020-06-21 17:42:25 +08:00
还能用 arp 搞,长见识了。比起 tun/tap 有什么优势和劣势呢
|
6
LPeJuN6lLsS9 2020-06-21 17:46:02 +08:00
@hantsuki 看样子不能自己代理自己,没仔细读说明。还是继续用 tun2socks 了
|
8
XanderChen 2020-06-21 18:37:35 +08:00 via Android
很强,
向大佬学习。 |
9
xwhxbg 2020-06-21 18:43:03 +08:00
呃,proxychains 了解一下?
|
11
wafm 2020-06-21 23:15:57 +08:00
@Sketch 当时确实是的,我开始用自己的路由器直接走海外的,NAT 也显示为 A,开始还玩的可以速度也很快,自从猛男树枝出一些问题后,某 U 就开始有这方面的动作了
|
13
ssshooter 2020-06-22 08:43:05 +08:00
看起来不错,放假试试
|
14
ragnaroks 2020-06-22 09:08:36 +08:00
一人血书代理本机
|
17
march1993 2020-06-22 09:55:49 +08:00 via iPhone
Linux iptables redirect 不香吗
|
19
tkwl 2020-06-22 10:28:11 +08:00
如你所说,加速器优质的是低延时线路。。。还是赞一个
|
20
littlespider89 2020-06-22 11:36:31 +08:00
使用的时候显示
Cannot determine interface. Available interfaces are listed below, use -i <INTERFACE> to designate: |
21
Sketch OP @littlespider89 最近提交的 commit 可以自动选择 interface 了,所以如果能 build 的话希望能自行 build 。如果是直接从 release 中下载的话,就是需要手·动·指·定用哪个设备(网卡)的。
|
22
3q3q3q 2020-06-22 13:45:12 +08:00
这个是不是就不能再 win 下使用啊
|
24
3q3q3q 2020-06-22 13:53:50 +08:00
这玩意在 win 下怎么用啊,让我研究一下
|
25
littlespider89 2020-06-22 16:05:20 +08:00
@Sketch -i interface 参数填写什么,填了 IP,MAC 地址,UUID 都不对
|
26
Sketch OP @littlespider89 如果是 Windows,应该是类似 "\Device\NPF_{00000000-0000-0000-0000-000000000000}" 的一长串,如果是 macOS 等系统,应该是 "en0" 之类的名称
|
28
Senorsen 2020-06-27 02:23:44 +08:00 via iPhone
@xwhxbg 看仔细啊老哥,这个是给局域网里其他设备用的,比如你有一台游戏主机( NS 、PS4 、XBox 等)的话,他们的联机游戏可以在电脑上开个这个来“加速”。
|
29
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 代理是通的,请问是哪里设置有误呢?还望解答,感谢 |
30
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 一段时间就报错了,求问大佬解决方案 |
32
clooooo 2020-07-15 10:19:08 +08:00
可以代理 VMess 这种协议的吗
|
34
clooooo 2020-07-16 09:15:16 +08:00
@Sketch 没听懂啊 我可以开一个 clash 代理 端口号 127.0.0.1:7890 再使用 pcap2socks 分享给 switch 吗?
|
35
Sketch OP @clooooo 如果 Clash 的前置代理是 SOCKS (SOCKS5) 的话,那么可以。一般来说,前置代理会是 HTTP/HTTPS/SOCKS4(a)/SOCKS5 中的数种。
|
37
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 赞美楼主,感谢!!! |
38
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 |
39
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 这是报错了吗? |
40
Sketch OP @lcqlwe 是的,如果可以的话希望加上环境变量 RUST_BACKTRACE=1 把调用堆栈信息发一下。可以在 GitHub 开一个 issue 。
|
41
Dyminas 2020-12-20 16:06:55 +08:00
试着用了一下,给 switch 加速 nat 类型是 a,和我路由器插件开游戏模式效果一样。膜拜大佬,感谢。
|
42
thetbw 2021-10-31 14:12:16 +08:00
想问下楼主这个是什么情况呢 interface 指的是什么呢
![]( https://i.loli.net/2021/10/31/PXmHokJylWzjC2Z.png) |
43
stephenyin 2022-05-16 12:20:58 +08:00
问下大概的原理是不是这样:
1.通过 arp 欺骗冒充游戏机的网关 2.收到游戏机 TCP/UDP 数据后,封装成 sock5 协议并转发到本机 sock5 监听端口 3.下行流量是 sock5 转 TCP/UDP 再通过局域网 IP 地址转给游戏机 请问下怎么保证 arp 欺骗总是生效的? |
44
MeteorVIP 2022-09-06 11:01:26 +08:00
大神,原来你在这.pcap2socks 简直是出差旅行打游戏必备神器~看到 natA 的时候我都惊呆了!
我现在使用:root 安卓开热点,vpnhotspot 搭配 ssr 加速 switch,nat 只能到 B.联机稳定. 有热点加速到 A 的方案吗? |