外网串流电脑加速器实现方案

说明

由于需要优化调整,并且涉及到的软件较多,该方案需要一定linux相关知识储备与一定折腾能力,如果有问题可以在公众后后台留言。

前提条件

  1. 家用宽带公网ip(最重要的东西,一般电信宽带容易申请)
    • 如果没有公网ip,但是有nat1类型的网络,也可以尝试一下这个开源项目,博主目前还没尝试过:https://github.com/heiher/natmap/wiki
    • ipv6 应该也可以,这个条件比较简单,具体博主没有尝试(主要原因是博主公司网络没有ipv6),可以自己折腾
  2. 内网下需要有一台中转服务器
    • 博主这里用的 ubuntu18.04 系统,是在需要远程的机子中使用 hyper-y 虚拟化出来的
  3. (不一定)一个可以刷机的路由器
    • 博主原先用的红米ax6s不知道是什么原因,导致服务不能连接,后面换了一个斐讯k2p刷潘多拉之后解决了

使用软件

  1. UDPspeeder:https://github.com/wangyu-/UDPspeeder 加速器本体,通过多倍发包来提高网络的命中率,降低丢包率,稳定网络
  2. udp2raw:https://github.com/wangyu-/udp2raw 将udp协议进行伪装,在qos或者运营商会限制udp协议
  3. wg-easy:https://github.com/wg-easy/wg-easy 封装好的wireguard服务端,用网页去配置,会简单很多。(这里使用docker部署)
  4. wireguard客户端:https://www.wireguard.com/ 用于连接wireguard。
  5. Sunshine:https://github.com/LizardByte/Sunshine 由于博主电脑是a卡,所以用的sunshine,也可以直接用moonlight,请自行判断。

上述软件中,wireguard可以自行更换为其他使用udp协议的vpn,sunshine也可以换成parsec之类的软件。

开始部署

整套加速器的系统,其实目的降低外网到局域网内的丢包率,提高远程连接的稳定性,所以这个教程会有一些网络与路由器相关的配置。

另外,正如上诉所说,该系统适用于提高稳定性,对于延迟并不会降低,甚至会有些许提升。

部署内网服务器

首先需要在内网中部署一个服务器并且按如下顺序 wg-easy -> UDPspeeder -> udp2raw 部署各个软件,用于外网到内网的中转,ubuntu系统请自行查找网上的资料进行安装部署,并且安装的ubuntu系统需要带有docker。

1. 安装wg-easy

参考教程:https://www.bilibili.com/video/BV1uT411w7Tq

可以略过前面的教程,直接使用最后对应的docker命令来快速搭建wg-easy服务器,搭建好之后的页面如下:
wg-easy页面

点右上角的 New 按钮,输入名称后即可快速创建一个配置文件,将其下载下来,电脑中安装上述软件列表说的 wireguard 客户端,点击左下角的新建隧道,选择刚刚下载的配置文件,然后选中对应的配置,点击连接,连接成功的情况如下:

wg-easy页面
在流量一行中接收有值就算成功连接上了。

2. 启动udp2raw

从上述软件列表中下载udp2raw,将其传输到内网服务器中,使用以下命令来启动udp2raw:

1
./udp2raw_amd64 -s -l0.0.0.0:8855    -r 127.0.0.1:7775 -k "password" --raw-mode faketcp -a --cipher-mode xor --fix-gro

其中将password修改为自己的密码,该命令监听了服务器的8855端口,并将处理后的数据包转发到了服务器的7775端口。

3. 启动UDPspeeder

从上述软件列表中安装UDPspeeder,将其传输到内网服务器中,使用以下命令来启动udp2raw:

1
./speederv2_amd64     -s -l127.0.0.1:7775  -r 127.0.0.1:51820 -f6:3 --mode 1 --mtu 1300

该命令监听了服务器的7775端口,也就是接收了上述udp2raw的流量包,经过处理后转发到了服务器的51820端口,正常来说该端口是上述docker安装wg-easy时指定的监听端口,如果有修改请自行改动。

此处--mode 1参数是为了降低加速器增加的延迟,也可将其设置为--mode 0,如果设置了这一步,后续就无需考虑mtu的问题,但是会增加些许延迟,具体可以参考UDPspeeder(ps:mode 1 也会增加些许流量)。

另外-f6:3是博主自行尝试出来的较为适合远程串流的参数,如果有卡顿,请参照UDPspeeder中的wiki自行调整。

配置端口转发

上述步骤完成后,就能得到一个 udp2raw->UDPspeeder->wg-easy 这样的串联架构,放出的端口为8855端口,接下来需要配置路由器,使其将外网的8855端口映射到服务器的8855端口。

对于路由器操作,不同的路由器不太一样,博主此处为路由桥接光猫拨号,所以直接在路由器设置界面进行端口转发即可,如下图所示:

端口转发

注意需要将tpc协议和udp协议都放出到外网,不然不work。

你也可以直接将dmz主机设置为内网服务器的ip。

终端设备安装加速器

接下来只需要在终端设备上搭建一个与上述相反的串流价格,然后去连接上述放出的外网ip端口就能实现整个线路的加,同样的,我们需要在终端设备上分别安装udp2raw、UDPspeeder和wireguard。

此处假设终端设备为 windows10 操作系统(如果你是安卓,前提是需要root,你可以使用termux在终端中启用)。

启动udp2raw

要在windows系统上使用udp2raw,首先需要安装npcap,自行百度下载最新版本然后按默认设置安装即可。

将udp2raw的windows可执行文件下载到本地,然后在同目录下新建一个u2rStart.bat文件,命令如下:

1
.\udp2raw_mp.exe -c -l 127.0.0.1:8854 -r 123.123.123.123:8855 -k "password" --raw-mode easyfaketcp --cipher-mode xor --fix-gro

将其中的123.123.123.123修改为你自己宽带的外网ip,password与上述需要相同,其他不变。

双击u2rStart.bat启动udp2raw。

启动UDPspeeder

将speeder的windows可执行文件下载到本地,然后同目录下新增一个speederStart.bat文件,命令如下:

1
.\speederv2.exe -c -l 0.0.0.0:3333 -r 127.0.0.1:8854 -f 6:3 --mode 1 --mtu 1300

双击speederStart.bat启动UDPspeeder。

该命令监听了本机的3333端口,并将进入该端口的udp数据包通过上述的加速器进行传输。

启动wierguard

在wg-easy的网页页面中新增一个节点,用于终端连接,将其下载到终端设备中,导入到wireguard中,修改其中的配置如下:
修改后的配置

添加了MTU=1300,如果上述UDPspeeder中填写的mode为0,则无需添加MTU。
将Endpoint修改为了127.0.0.1:3333,表示将wireguard连接的端口改为上述终端中UDPspeeder放出的端口。

点击连接查看是否有流量,如果有流量,则表示加速器搭建成功了,接下来就可以进行远程了。

串联测试

如果你用的是parsec,只需要在内网被控机器与终端机器上都安装parsec并且登录,就直接能够走加速器连接了。

如果你用是moonlight,需要手动新增一个地址为你内网被控机器上wireguard的ip地址。

不管你用的串流软件是什么,请将自行调整码率到5-15之间,这样的串流效果最佳。


外网串流电脑加速器实现方案
http://ccffee.fun/2023/07/24/外网串流电脑加速器实现方案/
作者
ccffee
发布于
2023年7月24日
许可协议