在 Tiny Core Linux 中搭建 UDP 隧道客户端并打包系统

前言

之前介绍过利用 udp2raw-tunnel 项目搭建 UDP 隧道配合 OpenVPN 的方式代理网络实现网络游戏加速的方法,但是其过程太过繁琐,并且有一定的条件限制。

如果我们将客户端环境封装起来,就可以免去繁琐的步骤,哪怕在网吧等场所也能便捷的进行部署,对于广泛使用 Windows 的普通用户也不需要自己折腾。这也是之后又发过的一篇 Tiny Core Linux 安装教程的意义。

在 TCL 中搭建环境

前提:你需要根据这篇文章安装 Tiny Core Linux(TCL)虚拟机,然后我们以刚装好的 TCL 虚拟机开始一步步搭建环境。

首先我们将需要的东西下载到虚拟机中,所需的软件安装下来。我们总结一下所需内容:

  1. udp2raw 客户端
  2. UDPspeeder 客户端
  3. iptables

我们为了避免使用 scp 或者 rsync 等工具通过宿主机上传输文件的麻烦(其实也没那么麻烦,但是安装多余的工具会占用空间,到头来还要卸载掉),可以直接用 wget 从相关项目的 release 页面下载进去(请访问相关项目 release 页面复制最新下载链接):

# 下载 udp2raw-tunnel
tc@box:~$ wget https://github.com/wangyu-/udp2raw-tunnel/releases/download/20180111.1/udp2raw_binaries.tar.gz
# 下载 UDPspeeder
tc@box:~$ wget https://github.com/wangyu-/UDPspeeder/releases/download/v2%4020171125.0/speederv2_binaries.tar.gz

而第三个用 TCL 自带的包管理工具安装即可:

tc@box:~$ tce-load -wi iptables

解压下载的两个压缩包,除 speeder*_x86 和 udp2raw_x86 以外,其余解压出来的版本全部删除(其余架构版本不需要,还占用空间)。

所需要的全部内容都已经有了,这时候我们让它们开机启动即可。当然我们开机启动前要使用正确的命令参数,参数中有一些可能变化和动态的东西,例如服务器 ip 和认证密码。不然你打包以后发给别人使用,别人还要从命令脚本中修改参数以修改这些变量,岂不是太死板了?所以我们创建一个 config 文件,第一行写入 ip:port 第二行写入密码:

tc@box:~$ cat config
8.8.8.8:4096
password1

如上,这是一个 config 文件的例子。注意:不要颠倒两行的值的意义,也不要加空行,待会我们会用 Shell 常用的手段解析这个配置文件,当然是格式越简陋越好。

创建 run_speeder.sh 脚本:

#!/usr/bin/env sh

/home/tc/speederv2_x86 -c -l0.0.0.0 -r 127.0.0.1:2222 --mode -f2:4 -q1

创建 run_udp2raw.sh 脚本:

#!/usr/bin/env sh

config=/home/tc/config
/home/tc/udp2raw_x86 -c -l0.0.0.0:2222 -r `awk 'NR == 1' "$config"` -a -k "`awk 'NR == 2' "$config"`" --raw-mode faketcp --cipher-mode xor

这个脚本用 akw 截取配置文件指定行内容当做参数,是一直简单的“解析配置文件”的方式。这样我们修改 config 文件就可以修改其中的变量,不需要修改脚本去调整参数。
所以:如果你想将 speeder 脚本中也让参数可配置,也可以采取同样的方式,通常需要改的是 mode 参数,但不过以我的经验,调优以后几乎不需要再更改

最后我们需要将这两个脚本开机启动,通常这种简单脚本的自启方式官方比较推荐的是自带的将命令添加至 /opt/boot*.sh 脚本中。所以我们编辑 /opt/bootlocal.sh 文件(用 root 权限),添加下面两行:

# 1. UDPspeeder 脚本自启
/home/tc/run_speeder.sh &
# 2. udp2raw 脚本自启(延迟 15 秒)
sleep 15; /home/tc/run_udp2raw.sh &

这些都完成以后,使用系统自带的重启方式重启(右键菜单,Exit -> Reboot -> OK),之后开机就会自动完成隧道环境的搭建。

PS: 延迟 15 秒是因为 udp2raw 启动需要等待本机 ip 获取到以后,为了确保它成功启动所以进行延时(当然我也尝试过在网络配置脚本以后启动,但是修改经常在重启以后被重置,所以放弃了:()。

最后:如果你按照这些做了以后,并且确保 config 文件没有编写错误,一定能成功运行起来隧道环境。如果有问题,可以重定向输出到文件中,看其中报错内容进行调试。在这之前,可以使用 ps 命令查看 udp2raw 和 UDPspeeder 两个进程是否正在运行。

使用方法

进入 TCL 虚拟机使用 ifconfig 命令查看 ip 地址,然后修改成 OpenVPN 客户端的 remote 配置项即可。

备份系统

按照上一篇 TCL 安装教程,备份虚拟机文件即可。在我这里打包以后有 22M 大小。

最后

共享一个我自己打包好的环境系统快照:下载地址。其中程序文件、脚本、配置文件等都在 tc 用户目录下。