ikago 和 pcap2socks 使用体验
参考文章:分享自己用 Go 写的游戏加速器 IkaGo - V2EX
从 Newlearner の自留地 了解到的游戏加速软件。
后来发现作者还写了一个 pcap2socks 的项目,同样用于游戏加速。
区别在于,
- ikago 是完整的一套游戏加速方案;
- pcap2socks 只保留了旁路由的功能,还需搭配 socks 代理使用。
和很多专攻 pc 代理的加速器不同,这类型加速器的加速原理是旁路由,常见于给各种游戏主机加速。用过各种游戏加速器 pc 客户端主机加速的都应该有印象:在 pc 这边开好主机加速,再在游戏机那一段设置好 ip 配置,正确设置的话 pc 加速器这边会显示已成功加速。而这俩加速器的使用步骤也差不多是这样。
当然,自建加速器和大厂加速器的取舍我已经在另一篇文章里提过了,这里只谈这种方案在技术上对普通加速器的优势:
各个大厂的游戏加速器的主机加速功能只能为一台设备加速,而且这台设备还有平台限制;而自建加速器想加速多少设备就加速多少设备;只要你想,加速 pc 、手机也可以。
当然了,旁路由加速要求加速设备和被加速设备不能是同一个设备,用过大厂游戏加速器主机加速的人也应该对此深有体会,自己想玩主机却还要一直开着电脑?大厂们也知道这点,于是就趁机贩卖起能够更为小巧省电,独立运行器加速器的主机盒;以及我在另一篇文章中谈到那些能安装加速器插件的路由器。其实原理都并没有脱离 arp 劫持 + 代理流量的旁路由模式。自建就更灵活了:只要你的设备能跑起 go,就能运行。各类软路由,甚至手机上的 termux,都可以达成要求,这里就不详细阐述了。
ikago
下载
server 和 client 端运行平台是 linux 或者 windows 的,直接下载对应 release。或者按文档给的方法,安装 go 并 git clone 项目后使用 go run 运行,适合其他平台。
服务端配置
vps 这边新建一个 server.json,假设就放在 /root
下吧
1 | { |
可以改的几个地方:
- monitor 是和 web 监控端链接的接口。不过 monitor 这个接口在 client 端开就足够了,不一定要在 server 端这里再开一个。
- verbose,详情,设为 true 日志会变得更详细。
- log。日志输出位置。但后续我们会用 supervisor 开启自启的同时去输出日志,所以没必要开这个。
- port。远程端口。
看起来可以调但其实不能调的地方:
- mode。文档写可选 tcp 和 faketcp,但实际上用 tcp 的话不能开启加密,即 method 那里只能填 none,否则连不通。
- kcp。kcp 设为打开的话,client 端平台不能是 windows,否则也连不通,会报错
network layer type not support
。
这俩应该是 bug 吧(前者在项目的 Known Issues 中有提到)。。。不过看作者项目好久没动,我也不好意思提 issue 去了(又不是不能用)。
假设咱的 release 版 server 端二进制文件放在 /root/ikago
下吧,启动看看:
1 | /root/ikago/ikago-server -c /root/ikago/server.json |
大概效果是这样的:
客户端配置
以 windows 为例,新建 client.json:
1 | { |
- monitor 和 verbose,和 server 那边含义一致。client 这边建议都开启。
- sources:劫持并监听的本地 ip,即要加速的设备在路由器下的本地 ip。
- publish:除了使用 arp 或者到路由器中获取需要加速设备的 ip 并填入 sources 中,更推荐的方法是单独做一个网段,用过加速器主机加速的各位应该都不陌生。作者选用的方法是模仿 tx 加速器的网段设置,被加速主机 ip 填 10.6.0.1,网关填 10.6.0.2,前者写到 sources 中,后者写到 publish 中,我个人又多加了一个 ip,这样如果还有另一个加速的设备就不用回来再修改了。
启动
1 | .\ikago-client.exe -c .\client.json |
效果差不多是这样的:
开始使用
被加速设备改用手动获取 ip 地址,publish 处的地址填入网关一项中;sources 处的其中一个地址填入 ip 一项中,子网掩码为 255.255.255.0,dns 一项填入 8.8.8.8。
打开 ikago-web,可以选择拉取项目 zhxie/ikago-web: IkaGo Web is a front-end interface for IkaGo. 在本地打开或者自搭,也可以使用作者搭建的 web 页面。
点击 configure,path 改成 localhost:9400
。正确设置的话,status 处会显示为 active,并且左下角显示有已经加速上的设备。
服务端设置自启(可选)
安装 supervisor
1
apt install supervisorctl -y
新建一个
ikago.conf
,内容如下1
2
3
4
5
6
7[program:ikago]
user=root
command=/root/ikago/ikago-server -c /root/ikago/server.json
autostart=true
redirect_stderr = true
stdout_logfile_maxbytes = 1MB
stdout_logfile = /tmp/ikago.log把这个文件放进
/etc/supervisor/conf.d
。运行
1
supervisorctl reload
后续直接通过
1
tail -f /tmp/ikago.log
查看日志。
其他问题
有时虽然配置正确了,被加速设备在 web 面板中却未出现,且被加速设备也连接不上网络。尝试重启笔记本和路由器,还有可能是某些路由器本身系统因素导致出现问题,我曾经就遭遇过加速设备在主路由(ac86u,梅林改,本身就不算稳定的系统)加速不上,挂上一个刷入小米路由器的联想 newifi mini 并让加速和被加速设备连上后加速成功的例子。
另一种情况是我一开始习惯把网关设为
.1
为结尾的地址,因此 publish 处我填了10.6.0.1
,sources 处填了10.6.0.2
,而被加速设备处也进行相应顺序上的调换,结果发现加速不上;换回来就成功了。这就比较玄学了。。。后面的 pcapsocks 也出现过这样的问题。我在前一篇文章中写过不太推荐这个加速器,原因就在于,我运行后也没在使用,但五六天后我的探针给我报警了,回来一查:
摊手(
pcap2socks 和 pcap2socks-gui
和 ikago 略有差异,pcap2socks 隧道的工作交给 socks5 了,只需要一个放在本地的二进制文件即可。假设 socks 开在 1080 端口,则:
1 | .\pcap2socks.exe -s 10.6.0.1 -p 10.6.0.2 -d 127.0.0.1:1080 |
这里的 -s
和 -p
在上面的 ikago client 配置中都有对应项,还不熟悉的可以返回去看。
这时多半会报错
1 | error: Cannot determine the interface. Available interfaces are listed below, and please use -i <INTERFACE> to designate: |
然后底下这些就是设备列表,找到你的上网网卡的设备,复制前面那一长串 \Device\NPF_{xxx}
,在命令用 -i
参数带上,即再次输入:
1 | .\pcap2socks.exe -s 10.6.0.1 -p 10.6.0.2 -d 127.0.0.1:1080 -i '\Device\NPF_{xxx}' |
主机端参考 ikago 那边的设置就行了。
这个我还是不推荐用。。。因为有时运行一段时间就报错:
1 | warning: receive from proxy: TCP: xxx:443 -> 0: 你的主机中的软件中止了一个已建立的连接。 (os error 10053) |
但其 gui 版本经过我实验表现相对稳定,也不用考虑网卡那串长长的 CLSID,甚至有 tx/uu 加速器默认的 ip 方案可直接选用,推荐使用。(这都喂到嘴里了,应该不用教了吧,gui 教程还要截图挺累的)
(唯一的缺点也许是不能在软路由上用 gui 版。不过软路由直接设置成旁路由然后全局代理他不香嘛?)
不过这里还是有个小问题,某些设备(特别是 windows 20H2)打开这个 gui 看到的是一片空白,我排查了一下,应该是新版 edge 的锅,有这么几种解决方案:
(优先使用)作者在项目中底下写的,启用 loopback 。以管理员权限运行 powershell,输入:
1
CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.Win32WebViewHost_cw5n1h2txyewy"
安装 chromium edge dev。可以从 Microsoft Edge Insider Channels 下载。也可以直接用 chocolatey 安装。
1
choco install microsoft-edge-insider-dev -y
嫌 chromium edge dev 太臃肿?也可以只下 runtime:Webview2 - Microsoft Edge Developer。下载安装里面的 x64 版「常青版独立安装程序」(卧槽这翻译和坐和放宽有的一拼)。
(并不是正确的解决方法,但我潜意识感觉后续可能会有用,记录一下)更新
WebView2Loader.dll
。
安装 nuget1
choco install NuGet.CommandLine -y
安装 NuGet Gallery | Microsoft.Web.WebView2 1.0.705.50:
1
nuget install Microsoft.Web.WebView2
提取
WebView2Loader.dll
,可利用 everything 搜索,一般在C:\Windows\System32\Microsoft.Web.WebView2.1.0.705.50\build\x64\
下,everything 可能会搜索到其他几个 x64 目录下也有WebView2Loader.dll
,应该都是同一个文件。pcap2socks 自带的WebView2Loader.dll
应该包含了几个平台的依赖,大小 400 多 k,我们提取的 x64 版只有 133k。(这年头不会还有用 x86 的吧?用 x86 寨板跑加速?)然后把提取到的文件覆盖进 pcap2socks 目录内就行。
(21.4.2 更新) netch 已于上个月加入 pcapsocks 功能。我试了一下,好用。除了代理地址定义起来没有原版 pcap2socks 简单,以及界面不够好看,应该没啥缺点。