0%

KCP + UDP2RAW 防止断流

相信很多人都使用了 SS + KCP 进行科学上网了

KCP 会大量向服务器发送UDP 消耗更多流量获取更快的网速

不过有时KCP用着用着会没有网然后断一段时间

这可能是受运营商限制,当被检测到UDP流量过多,会受到运营商的限制导致断流

这里介绍一下 windows下 SS+KCP+UDP2RAW 解决遭运营商限UDP流量的方法

需要用到的工具

都可以在github上下载

shadowsocks

windows ss 客户端

https://github.com/shadowsocks/shadowsocks-windows

shadowsocks-kcptun (可选)

windows ss 客户端 kcptun插件

可使用kcptun客户端 或者这款 ss的插件版

https://github.com/shadowsocks/kcptun

kcptun

windows 客户端 & server 服务端

https://github.com/xtaci/kcptun

udp2raw-multiplatform

windows udp2raw 客户端

https://github.com/wangyu-/udp2raw-multiplatform

udp2raw-tunnel

udp2raw 服务端

https://github.com/wangyu-/udp2raw-tunnel

网络拓扑

SS

client -> ss client -> ss server -> server

SS + KCP

client -> ss client -> kcp client -> kcp server -> ss server -> server

SS + KCP + UDP2RAW

client -> ss client -> kcp client -> udp2raw client -> udp2raw server -> kcp server -> ss server -> server

部署

Server

shadowsocks

ssserver -d start -c /etc/shadowsocks.json

1
2
3
4
5
6
7
8
9
10
{
"server_port": 4430,
"password": "{ss-password}",
"method": "aes-256-cfb",
"plugin": "",
"plugin_opts": "",
"plugin_args": "",
"remarks": "",
"timeout": 5
}

kcptun

以实际解压路径为准
监听8400 udp端口 发送数据包到 ss的4430 tcp端口
/usr/local/kcptun/server_linux_amd64 -c /etc/kcptun.json 2>&1| tee -a /var/log/kcptun.log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"listen":":8400",
"target":"127.0.0.1:4430",
"crypt":"salsa20",
"mode":"fast2",
"key":"{kcptun-password}",
"nocomp":true,
"keepalive":10,
"nodelay":0,
"mtu":1350,
"dscp":0,
"sockbuf":4194304,
"nc":1,
"resend":2,
"parityshard":3,
"rcvwnd":4096,
"interval":20,
"sndwnd":4096,
"datashard":10
}

udp2raw

以实际解压路径为准
监听4096 tcp端口 发送数据包到kcptun的8400 udp端口
/usr/local/udp2raw/udp2raw_amd64 -s -l0.0.0.0:4096 -r127.0.0.1:8400 -a -k "{udp2raw-password}" 2>&1| tee -a /var/log/udp2raw.log

Client

udp2raw

以实际解压路径为准
监听本地 30001 udp端口 发送到 {serve-ip}的4096 tcp端口
"D:\udp2raw_mp_nolibnet.exe" -c -l0.0.0.0:30001 -r{server-ip}:4096 -k "{udp2raw-password}"

kcptun

  • 可用shadowsocks kcptun插件

    服务器地址:127.0.0.1
    服务器端口:30001 与客户端udp2raw 监听本地的30001 端口一致
    密码:{ss-password} 与服务器ss设置的密码一致
    加密:aes-256-cfb 与服务器ss设置的加密一致
    插件程序:./client_windows_amd64.exe 路径为shadowsocks-kcptun 下载解压的路径
    插件选项:crypt=salsa20;keepalive=10;nodelay=0;mtu=1350;nocomp;mode=fast3;dscp=0;sockbuf=4194304;nc=1;resend=2;parityshard=3;rcvwnd=4096;interval=20;key={kcptun-password};sndwnd=4096;datashard=10 其中[crypt] [nocomp] [key] [datashard] [parityshard] [smuxver] 要和服务器配置保持一致,没填就表示默认

  • 如果用的是客户端
    "D:\client_windows_amd64.exe" -l :30001 -r 127.0.0.1:30001 --crypt salsa20 --key {kcptun-password} --nocomp

shadowsocks

  • shadowsocks kcptun 插件
    就是上面的图片配置
  • kcp用的是客户端
    如下图
    服务器地址:127.0.0.1
    服务器端口:30001 与客户端udp2raw 监听本地的30001 端口一致
    密码:{ss-password} 与服务器ss设置的密码一致
    加密:aes-256-cfb 与服务器ss设置的加密一致

总结

这样配置之后kcp就没出现过断流了
kcp不仅可以加速ss 也可以加速ssh