whatshot在Linux中通过虚拟机使用Windows版网游加速器 [v1.0.2: 修复无法解析域名]

@Ta 10-19 03:10 2162点击

演示视频

视频链接

更新说明

[v0.1.2]

使用最初的版本v0.1,Linux可能会因为域名解析失败而一直无法联网,因为我写错了3proxy代理的DNS服务器。我已经在v0.1.2版本中修复,但是已经下载了v0.1版本的也无需重新下载,只需要进行如下操作即可:

请先启动加速器,在Windows虚拟机启动后,用记事本打开C:\Tools\3proxy\cfg\3proxy.cfg,然后把第一行nserver 192.168.43.1修改为nserver 114.114.114.114,然后增加第二行nserver 114.114.115.115,如图:

图片.png

保存后,再双击桌面上的“启动代理.bat”,然后看看Linux能不能打开网页。注意:无需启动网游加速器,直接双击“启动代理.bat”即可。即使没有启动网游加速器,只要双击了“启动代理.bat”,Linux也要能够联网才对。

如果可以联网,说明DNS修改成功,加速器方案已可正常使用。此时只需要关闭“启动代理.bat”产生的窗口,开启网游加速器,开始加速,然后再双击“启动代理.bat”即可让加速生效(“启动代理.bat”产生的窗口必须一直开着,关掉的话Linux就会断网。但是,如果你切换了加速器线路,或者换了别的加速器,那么最好关掉窗口,然后再次双击“启动代理.bat”,否则新的线路可能不会生效)。

如果你的网络不能使用114.114.114.114114.114.115.115,请更换为你能用的其他DNS。如果Windows不能联网,请在“更改适配器设置”中修改网卡的IPv4 DNS。

安装方法

1. 安装依赖包

UOS/Deepin/Debian:

sudo apt install qemu-system virt-viewer zenity ipset iptables iproute2 openssh-client aria2

2. 下载并解压压缩包

下载并解压 https://file.winegame.net/jiasuqi/jiasuqi-v0.1.2.tar.xz

使用如下命令下载并解压:

cd ~
aria2c -x5 -s5 https://file.winegame.net/jiasuqi/jiasuqi-v0.1.2.tar.xz
tar xf jiasuqi-v0.1.2.tar.xz

3. 启动加速器

进入解压出来的jiasuqi文件夹(在主目录),双击“启动加速器.sh”,选择“在终端中运行”,然后按提示操作(参考上面的视频)。

注意

  1. 刚开始弹出的exe选择框,选择的是要加速的游戏,不是要安装的加速器。你可以在虚拟机内下载、安装加速器,不需要在Linux里下载。

  2. 虚拟机打开后,如果不在里面运行“启动代理.bat”,Linux就无法联网。注意,“启动代理.bat”打开的黑色窗口必须一直开着,关掉它相当于关掉代理,Linux会立即断网!此外,如果用完代理后想恢复Linux正常联网,请给虚拟机关机

  3. 如果虚拟机无法打开,终端上出现以下错误:

    qemu-system-x86_64: failed to initialize KVM: No such file or directory

    需要在BIOS中打开虚拟化支持,Intel叫做VT-x,AMD叫做SVM或者AMD-v。也有的BIOS直接叫做"Virtualization Technology"(VT)。

    开启方法可参考以下教程:https://blog.csdn.net/weixin_44210782/article/details/104661303

已测试的加速器

  • 迅游:模式4和模式2可用,游戏可被加速。其他模式似乎不能启动,启动加速时会报错。
  • UU:模式3可用,游戏可被加速。其他模式似乎无效,虽然能启动,但是游戏不会被加速。

其他加速器未测试,欢迎补充。

已测试的游戏

  • 《魔兽世界》:与迅游模式4兼容,游戏程序需要选择“_retail_”里的“Wow.exe”(正式服)或者“_classic_”里的“WowClassic.exe”(怀旧服)。
  • 《守望先锋》:与迅游模式4兼容,游戏程序需要选择“_retail_”里的“Overwatch.exe”,不是外面的“Overwatch Launcher.exe”。

细节

虚拟机使用了114 DNS(114.114.114.114和114.114.115.115),如果效果不好,可以自己去“更改适配器设置”里面修改一下。

之所以要设为114 DNS,是因为主动探测Linux的DNS设置并传递给Windows实现起来比较复杂。所以我就设了个大部分人应该都能用的公共DNS。

限制

  1. 只能转发TCP和UDP流量,不能转发ICMP流量,所以如果你手动执行ping命令进行延迟或者可达性测试,结果不会有变化。
  2. 不支持IPv6,IPv6流量不会被转发。如果游戏支持IPv6,为了让加速生效,需要暂时关闭Linux中的IPv6。
  3. 某些加速器的某些模式(比如UU加速器的模式4)不转发代理的流量,所以加速不会生效,就算我们已经自动把代理程序的文件名改为和游戏同名,也没用。

原理

  1. 在Windows上用3proxy创建socks代理(支持TCP/UDP)和DNS代理。
  2. 为了让加速器对3proxy生效,启动时会把3proxy.exe重命名为游戏的文件名(实际用的是硬连接,相当于复制,但是不额外占用空间)。比如加速魔兽世界时会改为“Wow.exe”(这就是要你选择“要加速的游戏程序”的原因)。这样当在Windows虚拟机里启动“Wow.exe”(实际是“3proxy”)时,加速器就会以为这就是魔兽世界,就会代理它的流量。
  3. Linux通过源于ss-tproxy的脚本和静态编译的二进制ipt2socks,实现把Linux主动发起的所有TCP/UDP连接全部转发到虚拟机内的3proxy socks代理。此时,对于加速器想转发的流量,加速器就可以转发到自己服务器。对于加速器不转发的流量,就通过虚拟机网络直接发出去。
  4. 修改/etc/resolv.conf,DNS改为虚拟机IP,这样就可以应用加速器修改后的域名解析结果。DNS服务也由3proxy提供。
  5. Linux侧通过SSH与Windows侧通信。在Windows里运行了微软发布的SSH服务器(https://github.com/powershell/win32-openssh)。
  6. Windows侧的文件放在“C:\Tools”文件夹里,与Linux里的windows-x86文件夹内容相同。其中的OpenSSH进行了安装,放置了Linux侧的公钥并修复了权限。
  7. 采用了CPRA_X86FRE_ZH-CN_DREY.iso这个精简版Win10镜像。用32位是因为64位安装后镜像太大,占用的内存也更多。
  8. 压缩包内的vm-cli.sh里有虚拟机启动命令,可以在里面改内存和核数。默认是2GB内存(-m 2G)和2核(-smp 2,sockets=1,cores=2,threads=1,这四个数字分别是当前分配插槽核心线程。目前的数字代表:只有1个CPU插槽sockets=1,插槽里的CPU有2个核心cores=2,每个核心1线程threads=1,也就是不支持超线程,然后把这个CPU中的2核全部分配给虚拟机-smp 2,你可以根据你的CPU实际情况进行调整)。
  9. 顺便一提,之所以要手动双击桌面上的“启动代理.bat”,不通过SSH由Linux侧自动启动,是因为我发现自动启动时加速器的非虚拟网卡模式(就是除了模式3之外的)都不会生效。但是如果手动启动,迅游的模式4就可以生效。

版本库

版本库(不含Windows虚拟机镜像):
https://gitee.com/winegame/tproxy-jiasuqi

回复列表(20)
  • @Ta / 09-17 23:50

    沙发
    米婊http://ovo.gs精品域名出售

  • @Ta / 09-18 00:35
    健健康康 一加8Pro 青
  • @Ta / 09-18 01:52
    为啥你的这么流畅的,我测试开几个程序都卡卡的。
  • yao
    @Ta / 09-18 09:00
    http://www.1kmb.com
  • @Ta / 09-18 11:22

    @大尨,你用我的包测试的吗?我就分配了2核2G,只是为了开个加速器。你要多开程序,那打开vm-cli.sh把核数和内存都加一加(看帖子的原理8)。

    如果你是自己安装的虚拟机,有个地方要注意,就是这个CPU拓扑:

    图片.png

    如果你的虚拟机支持手动设置,一定要手动设置。我的设置代表1个CPU插槽(套接字socket的误译,在这里应该是插槽),8核,16线程。如果你分配16核,这个虚拟机的默认设置是虚拟为16个单独的单核CPU(在Windows上会看到“插槽 16”)!!!这就非常离谱了,有时候性能会比只分配1核还差,因为在多个独立CPU之间进行同步,性能开销太大了。

    顺便一提,vm-cli.sh里的-smp 2,sockets=1,cores=2,threads=1,就是指上面的当前分配插槽核心线程。如果要改成和图中一样的,就是-smp 16,sockets=1,cores=8,threads=2。我默认没设threads=2,是为了防止在不支持超线程的CPU上启动失败。

    此外我用的CPRA_X86FRE_ZH-CN_DREY.iso这个精简版Win10镜像真的非常小,几乎没有任何多余的东西,适合虚拟机使用。而且我特地选了32位版,因为64位版大一倍(不仅硬盘,内存占用也翻倍)。

  • @Ta / 09-18 11:30

    @大尨,如果你指的是你的Linux很卡,那么你可能只是没有安装显卡驱动。

    请在这里安装显卡驱动:
    https://hu60.cn/q.php/bbs.topic.94828.html

    顺便一提,你的问题描述的如此不清楚,除了上述三种可能(用我的包很卡,自己安装的Windows虚拟机很卡,自己安装的Linux很卡),还有无数种可能。所以,详细准确的描述问题,让读者看了只能想到一种解释,才能更快的解决问题。

  • @Ta / 09-18 18:19
    @老虎会游泳,噢,确实有点摸不着头脑了,我的是装的系统卡。我就装个 lnmp。然后随便打开浏览器逛逛网页啥的,半夜看到你这个帖子打开你的视频看,卡了我半个钟。。至于显卡我装系统的时候已经勾选那个闭源驱动了。
  • @Ta / 09-18 18:33
    @老虎会游泳
     我把UOS 跟 deepin都装起来测试一遍。发现装完系统之后 UOS 比deepin卡太多了。然后 deepin 内核 5.7 比 5.4 流畅一
    点。
    这是我的机器信息。我什么知道我的显卡驱动是否安装了还是没安装的?
    截图录屏_选择区域_20200918182927.png

    不过在啥事也不做的情况下 系统到还流畅。得有时间安装游戏撸几下才行。
  • @Ta / 09-18 19:07

    @大尨,勾选那个闭源驱动有时候没有效果,要用我帖子里给出的方法2安装。

    https://hu60.cn/q.php/bbs.topic.94828.html

  • @Ta / 09-18 19:09

    @大尨,这个信息页不能显示显卡驱动正不正常。

  • @Ta / 09-18 19:17
    @老虎会游泳 有办法看出显卡驱动正不正常吗
  • @Ta / 09-19 09:31
    @老虎会游泳,你这是Linux????看着像温呀。好漂亮。有某有镜像我也想装了
  • @Ta / 09-19 12:25

    @mu228,开启root权限和安装显卡驱动的教程:
    https://hu60.cn/q.php/bbs.topic.94828.html

  • @Ta / 09-19 14:13
    @老虎会游泳,deepin 本身就是 开发者模式了吧??
  • @Ta / 09-19 14:15

    @大尨,是的

  • @Ta / 09-21 06:12
    所以有不启动虚拟机手动填写局域网 ip 的 linux 端版本吗?因为这里有一个极端请求就是,局域网虚拟机(
    @老虎会游泳
  • @Ta / 09-22 16:28

    是可以的,你把vm-cli.sh里面的qemu和remote-viewer命令删掉,然后去linux/jiasuqi.conf里面修改虚拟机IP就可以了。

    如果你用自己安装的Windows系统,要把windows-x86/x64文件夹里面的内容放到C:\Tools里,然后安装里面的OpenSSH(或者你自己从系统的添加删除功能里面装),再把linux文件夹里面的id_rsa.pub加到SSH信任证书里面。

    当然还要配置好防火墙,允许linux连接Windows的22和1080端口。


    OpenSSH安装时要运行 install-sshd.ps1 和 FixHostFilePermissions.ps1
    此外,证书可能要放在 %ProgramData%\ssh\administrators_authorized_keys 才会生效。

    OpenSSH我是从这里下载的:https://github.com/powershell/win32-openssh

    我的OpenSSH里的 FixHostFilePermissions.ps1 修改过,可以给 %ProgramData%\ssh\administrators_authorized_keys 修复权限。
    权限没修复,不会生效。

    重启SSH服务的方法:
    net stop sshd
    net start sshd

添加新回复
回复需要登录

[聊天-此处没有老虎] M_KAGA:res://ieframe.dll/navcancl.htm   如何…