前段时间研究了下多台中转服务器加速境外 SS 服务器方案,用的是 KCP
加速,当然没啥要求也可以用 iptables
端口转发,需要注意的是 kcptun 只支持单端口加速,如果需要加速多个端口,需要新建多条规则,KCP 还可以和 BBR 共同使用。
kcptun 简介
kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP + UDP 流。而 KCP 是一个快速可靠协议,能用比 TCP 浪费 10%-20% 的带宽的代价,换取平均延迟降低 30%-40%,延迟最大能能降低三倍。由于 kcptun 使用 Go 语言编写,内存占用低(能在 64M 内存服务器上稳定运行),而且适用于所有平台,包括 ARM 平台。
kcptun 安装
注意服务端和客户端的版本最好一致,如果不一致可以去 kcptun 的项目地址中下载对应你系统的最新版。
服务端
- 这里采用一键脚本部署,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
- 上面的命令运行后,会有一系列参数设置项供选择,大部分回车选择默认即可,少部分需要自己设置,具体如下
- 端口:默认是
29900
,kcptun 客户端连接服务端使用的端口,可以保持默认,添加多条规则时需要修改 - 加速的地址:默认为本机
127.0.0.1
,加速其他服务器,需要填写其公网IP - 加速的端口:需要加速的端口,例如 Shadowsocks 服务端口
- 密码:自己设置,不要使用默认密码,由于 kcptun 客户端连接
- 加密方式选择:建议默认 aes,较强的加密方式会影响网速
- 加速模式:默认 fast 即可,越快越浪费带宽
- MTU:默认 1350 即可
- sndwnd:发送窗口大小,与服务器的上传带宽大小有关,这项与 rcvwnd 的比例会影响加速效果,可以暂时设置为默认的512,不要大于你的本地宽带
- rcvwnd:接收窗口大小,与服务器的下载带宽大小有关,可以暂设置为默认的 512 或 1024,不要大于你的本地宽带
- 数据压缩:y,关闭数据压缩,可以一定程度上提升传输效率
- 其他参数保持默认即可……
- 常用功能及命令
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/
- Windows 客户端
图形界面:https://github.com/dfdragon/kcptun_gclient/releases
Windows 32位下载:windows-386
,64位下载:windows-amd64
将下载好的 kcptun 客户端解压,拖入 kcptun_gclient 目录中,点击右上角的浏览按钮,选择client_windows_xxx.exe
的路径,最后根据服务端生成的配置信息,填写启动即可。 - Linux 客户端
根据你的系统架构下载对应的包,这里以 amd64 CentOS 7 举例,下载我打包好的 kcpclient 客户端,将目录中的client_linux_amd64
替换为最新的版本,编辑client-config.json
文件,修改为你的 kcptun 服务端连接信息,赋予.sh
和client_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 的话,还可以配置负载均衡。