在博客群里有大量朋友在 Shadowsocks Android 端配置 KCP 上出现问题,我在这里开一篇博文详细说一下怎么配置 Shadowsocks Android 客户端上的 KCP。
首先下载安装最新的 Shadowsocks Android:https://github.com/shadowsocks/shadowsocks-android/releases
和 Kcptun Plugin:https://github.com/shadowsocks/kcptun-android/releases
确保你正确安装好服务端的 Shadowsocks 和 Kcptun,确保在不开启 Kcp 时能正常的使用 Shadowsocks 服务。
配置 Kcptun Server 可以看这里:Kcptun Server一键安装脚本
如果安装成功,将你的推荐参数复制下来:
服务器IP: 10.10.10.10 端口: 554 加速地址: 127.0.0.1:8388 crypt: none mode: fast2 ...... 手机端参数可以使用: key=very fast;crypt=none;mode=fast;mtu=1350;sndwnd=512;rcvwnd=512;datashard=10;parityshard=3;dscp=0;nocomp
注意:配置之前请先更新到最新的 Shadowsocks Android 客户端和 Kcptun Plugin
现在打开你的 Shadowsocks Android 客户端,开始配置:
- 服务器,填写你的服务器 IP 地址,我这里应该填写 10.10.10.10,即“服务器 IP”;
- 远程端口,填写你的 Kcptun 服务端端口,我这里应该填写 554,即“端口”;
- 本地端口,使用默认值 1080;
- 密码,填写你的 Shadowsocks 密码;
- 加密方法,选择你 Shadowsocks 的加密方法。
然后开启插件 kcptun
配置一栏填写 “手机端参数”,原样填写即可。
这几个参数:datashard、parityshard、nocomp、key、crypt,配置的时候需要保证客户端和服务端一致。
剩下的参数,比如:sndwnd、rcvwnd 等,你可以计算一下然后按喜好填写。
所有配置完毕。
好吧,pc上的Shadowsocks用kcp用了一段时间了,所以一直像在android版本的Shadowsocks上也使用kcp来加速。虽然android版已经支持kcp了,但是我这一直没连接成功,只要android上开启了kcp加速,就无法连网。今天才发现无法连网的原因。
分析:
Shadowsocks官方给的服务器参数是:
sudo kcptun -l :53 -t 127.0.0.1:8388 --key MyPassword --crypt none --mtu 1024 --sndwnd 1024 --rcvwnd 1024 --mode fast --nocomp
注意:" --crypt none " ,意思是通信是不加密的。
我kcp的服务器端参数是:
sudo kcptun -l :29900 -t 127.0.0.1:9005 -key MyPassword -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2
这样,就没有设置 -crypt 参数。所以,我kcp server端使用的应该是默认加密,因此,我的pc的客户端和android的客户端也应该设置为使用默认的加密方式(直接不配置 -crypt参数即可) 。 而这也是我android shadowsocks 使用kcp后无法连网的原因。
我pc的kcp客户端参数:
sudo kcptun -l :29900 -t 127.0.0.1:9005 -key MyPassword -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2
Android Kcp客户端的参数(端口就是你kcp server设置的端口):
--key MyPassword --mtu 1400 --sndwnd 2048 --rcvwnd 2048 --mode fast2
注意:MyPassword是我kcp server端的密码,所以,你需要替换成你自己的。
2017年2月15日更新
shadowsocks android版本最新的是测试版4.0.1,把kcp专门弄成了一个插件,所以,需要分别从play上下载shadowsocks的android版本和kctun插件。
shadowsocks android新版本的配置:
(1)设服务器配置如下:
我这里的kcp服务器是没有开启密码和加密功能,所以下面没有这两个参数:
./server_linux_amd64 -l :29900 -t 127.0.0.1:9005 --crypt none --nocomp --datashard 10 --parityshard 3 --mtu 1350 --sndwnd 512 --rcvwnd 512 --dscp 46 --mode fast2 > kcptun.log 2>&1 &
(2)shadowsocks android 配置:
A.安装好kcptun插件后,会在shadowsocks的文件设置中看到"Plguin",然后点击"disable",就会有"Configure",这里就是填写kcp的参数:
mtu=1350;nocomp;rcvwnd=1024;parityshard=3 ;nodelay =1 ;resend=5 ;mode =manual ;interval =20 ;crypt=none;autoexpire= 20; acknodelay ; sockbuf= 4194304 ;nc= 1;datashard=10; dscp=46 ;keepalive=10; sndwnd=1024
注意:
这次插件化后,参数的格式变了,使用 key=value的的形式来添加配置参数。如果这个参数是boolean值类型,类似于acknodelay 这种参数,如果写了参数名,则表示为true,没写则表示为false。
需要关闭udp转发,原因貌似由于shadowsocks的bug,如果开启了udp转发,无法打开网页,但是测试能连通,这个问题折腾了我好久,后来看issue才知道的。
截图如下:
B.配置kcp服务器地址和端口
这里填写kcp服务器地址和端口的地方就是和平时添加shadowsocks的服务器和端口一样,截图如下:
++++++++++++++++Over+++++++++++
下面就可以开心的使用kcp加速啦,哈哈!
文本出自:
https://blog.kuoruan.com/111.html
http://www.dabu.info/android-shadowsocks-use-kcp-speed-up.html
文章评论
你复制我文章里的配置信息,wordpress默认把双横线转换为单横线了,建议关闭wordpress的将文本转换为全角符之类的。
@大步 谢谢提醒,一会儿我研究下。还请多提宝贵意见。
按照这个方法还是不行啊,安卓还是提示无互联网连接
@sampane 您好:
建议通过以下2步先定位,是服务器端问题,还是Android设备问题后,再看如何解决。
1、先在Android设备上,在无kcp情况下测试ss是否正常。
2、在电脑上分别测试,单独ss和使用kcp情况下是否正常。