前段时间研究了下多台中转服务器加速境外 SS 服务器方案,用的是 KCP 加速,当然没啥要求也可以用 iptables 端口转发,需要注意的是 kcptun 只支持单端口加速,如果需要加速多个端口,需要新建多条规则,KCP 还可以和 BBR 共同使用。

kcptun 简介

kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP+UDP 流。而 KCP 是一个快速可靠协议,能以比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。由于 kcptun 使用 Go 语言编写,内存占用低(能在 64M 内存服务器上稳定运行),而且适用于所有平台,包括 ARM 平台。

项目地址:
KCP协议
kcptun

kcptun 安装

注意服务端和客户端的版本最好一致,如果不一致可以去 kcptun 的项目地址中下载对应你系统的最新版。

服务端

  1. 这里采用一键脚本部署,SSH 连接服务器执行以下命令,CentOS 系统需要关闭防火墙或者放行相应端口
# CentOS 7+ / Debian 8+ / Ubuntu 16+
wget --no-check-certificate https://github.com/kuoruan/shell-scripts/raw/master/kcptun/kcptun.sh
chmod +x ./kcptun.sh
./kcptun.sh
  1. 上面的命令运行后,会有一系列参数设置项供选择,大部分回车选择默认即可,少部分需要自己设置,具体如下
  • 端口:默认是 29900,kcptun 客户端连接服务端使用的端口,可以保持默认,添加多条规则时需要修改
  • 加速的地址:默认为本机 127.0.0.1,加速其他服务器,需要填写其公网IP
  • 加速的端口:需要加速的端口,例如 Shadowsocks 服务端口
  • 密码:自己设置,不要使用默认密码,由于 kcptun 客户端连接
  • 加密方式选择:建议默认 aes,较强的加密方式会影响网速
  • 加速模式:默认 fast 即可,越快越浪费带宽
  • MTU:默认 1350 即可
  • sndwnd:发送窗口大小,与服务器的上传带宽大小有关,这项与 rcvwnd 的比例会影响加速效果,可以暂时设置为默认的512,不要大于你的本地宽带
  • rcvwnd:接收窗口大小,与服务器的下载带宽大小有关,可以暂设置为默认的 512 或 1024,不要大于你的本地宽带
  • 数据压缩:y,关闭数据压缩,可以一定程度上提升传输效率
  • 其他参数保持默认即可......
  1. 常用功能及命令
supervisorctl start kcptun  # 启动
supervisorctl stop kcptun  # 停止
supervisorctl restart kcptun  # 重启
supervisorctl status kcptun  # 状态
./kcptun.sh uninstall  # 卸载

客户端

这里只例举 Windows 和 Linux 客户端,其他见 kuptun 项目
kcptun:https://github.com/xtaci/kcptun/releases/

  1. Windows 客户端
    图形界面:https://github.com/dfdragon/kcptun_gclient/releases
    Windows 32位下载:windows-386,64位下载:windows-amd64
    将下载好的 kcptun 客户端解压,拖入 kcptun_gclient 目录中,点击右上角的浏览按钮,选择 client_windows_xxx.exe 的路径,最后根据服务端生成的配置信息,填写启动即可。

  2. Linux 客户端
    根据你的系统架构下载对应的包,这里以 amd64 CentOS 7 举例,下载我打包好的 kcpclient 客户端,将目录中的 client_linux_amd64 替换为最新的版本,编辑 client-config.json 文件,修改为你的 kcptun 服务端连接信息,赋予 .shclient_linux_amd64 文件执行权限,最后执行 bash start.sh 即可,如果要添加多条规则,新建多个 client-config.json 文件然后重启 kcpclient 即可 bash restart.sh

kcpclient:https://github.com/Fog-Forest/scripts/tree/main/kcptunclient

服务器架构

比较推荐使用一台中转服务器加速,直接加速效果可能不好,两台中转服务器成本太高

两台中转服务器加速

国内服务器部署 kcptun 客户端连接香港 kcptun 服务端,香港服务器部署 kcptun 服务端以及 BBR,加速境外服务器指定端口

一台中转服务器加速

有两种方案:
1. 中转服务器和境外服务器都部署 BBR,直接使用 iptables 端口转发即可
2. 境外服务器部署 BBR 和 kcptun 服务端,中转服务器部署 kcptun客户端,连接 kcptun服务端

直接加速

境外服务器部署 BBR 和 kcptun 服务端,用户端部署 kcptun 客户端,连接 kcptun 服务端即可

总结

使用 KCP 和端口转发的加速方案,提速效果明显,能够降低延迟,但是配置较为繁琐,如果有多台境外服务器用于 SS 的话,还可以配置负载均衡。

参考:https://ssr.tools/588


Never give up your dreams.