前段时间买了个vps.主要是为了科学上网及linux练手.使用了shadowsocks来科学上网.后来听说kcptun可以对shadowsocks加速,所以又折腾了一下.
Shadowsocks现在是科学上网的主选.在windows,Linux及Mac平台下都有对应的图形化程序可以直接使用.所以配置容易.
KCP 是一个快速可靠协议,能以比 TCP 浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果
kcptun是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP+UDP 流,分为服务端和客户端,都需要使用命令行模式来配置.所以有点麻烦.
shadowsocks
shadowsocks的原理是通过把http连接转换成socks5连接来进行科学上网的.
一般的网络连接有四种协议
http通常浏览器都使用mail收发邮件使用ftp上传下载socks目前有v4和v5两个版本
shadowsocks的作用就是把本来通过http协议的请求通过socks协议进行发送,然后把收到的响应转发到指定的端口(默认是1080).
全局和自动代理
全局模式就是拦截所有的http,全通过socks连接.但这样不够效率,而且浪费服务器端的流量,所以大多都选择自动代理模式.也就是只有需要科学上网的时候才使用shadowsocks来代理连接.
除了mac可以自动配置系统代理外,在Linux和window平台都需要在配置完shadowsocks之外还要配置浏览器.
通常浏览器使用代理插件时需要pac文件来判断是否需要代理.如果需要就使用配置的代理,也就是我们配置的shadowsocks,否则就是直接连接.
也就是说自动代理是浏览器端是可以选择把请求直接发送或交给shadowsocks来处理.而全局模式就是浏览器发送的任何请求都会被shadowsocks给拦截并处理.
shadowsocks的配置
shadowsocks的配置是可以保存在一个json文件中的.目前的图形化程序都是加载json文件来配置的.如
|
|
很简单的几项.
local
接收和发送http连接的ip地址和端口.通常ip是127.0.0.1也就是本机,端口通常为1080,有的图形化程序不能设置端口
浏览器或系统代理会把需要科学上网的请求发送到这个端口上,并监听这个端口获取响应.
server
需要把socks请求发送的服务器地址及端口
password及method
加密方式及密码.这两个由服务器决定
简单的来说就是shadowsocks提供了一个本地的入口local,通过这个入口接收所有需要科学上网的请求,然后把请求通过method加密,附带password发送到server的server_port端口,并接收响应.
kcptun
原理
详细原理请自行google
安装
服务器端
一般服务器都是Linux系统的,需要使用ssh方式连接.windows下需要使用Xshell或puttyssh来连接,mac和linux可以直接使用ssh命令
ssh -p [服务器的ssh端口] [帐号]@[服务器地址]
连接到服务器后使用的是命令行.
最简单的安装方式就是使用别人配置好的脚本自动化安装,需要分别输入以下指令,每个命令输入后按回车执行.执行完比后再输入下一条.
此方式需要root权限.可以用su临时切换成root帐户
wget https://raw.githubusercontent.com/kuoruan/kcptun_installer/master/kcptun.shchmod +x ./kcptun.sh./kcptun.sh
这三行命令的意思是从网上下载kcptun.sh脚本,给这个脚本设置可执行权限,然后执行这个脚本.
执行这个脚本后会自动安装kcptun服务端及相关软件.然后进行配置.
打开这个脚本可以看到具体的安装方式
- 服务端的下载地址
https://api.github.com/repos/xtaci/kcptun/releases,脚本会根据下载地址查找最新的版本,及下载地址列表,然后根据系统的版本决定具体的下载链接 - 把服务端下载到本地并解压,把其中的服务端保存在
/usr/share/kcptun目录下. - 下载并安装
json解析软件.脚本使用的是https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64或jq-linux32,根据服务器版本决定 - 使用默认的配置来配置
kcptun - 使用
json解析器读取默认配置.并写入安装目录,默认保存为config.json - 下载并安装
supervistor来管理kcptun
个人觉得这个脚本用起来已经很方便了.不过可以不使用默认配置,而是改为自己的配置.免得安装完以后再配置一次
- 修改默认配置为你自定义的配置
- 使用
scp命令把改好的脚本上传至服务器,或把脚本放在网上然后让服务器通过wget下载 - 让脚本可执行,并执行脚本
客户端
- 从
https://github.com/xtaci/kcptun/releases/tag/v20161222下载客户端.目前的机型都用带amd-64的.386是给虚拟机和老式机型使用的.linux平台下载带linux的. - 解压后
client开头的就是客户端,如client_linux_amd64 - 官网上提供了简单的客户端命令行配置。但建议客户端也使用
json文件来配置。client_linux_amd64 -c kcptun.json,kcptun.json是配置文件 - 建议写个脚本。开机运行。如
startKcp.sh
|
|
配置
在服务端安装脚本中定义了一个DEFAULT的数组就是默认配置数据。对应的是下面初始化参数的各项属性。写成的json文件如下
|
|
服务端与客户端使用配置格式是一样的。其中需要自己配置的就几项
- 端口
linsten_port,target_ip,target_port
| 属性 | 客户端 | 服务器 |
|---|---|---|
| listener_port | 与shadowsocks交互的端口 | 对外的端口 |
| target_ip | 服务器的IP | 本机 |
| target_port | 服务器的端口(listen_port) | 与shadowsocks交互的端口 |
key和crypt,密码和加密方式。key是密码,crypt为加密方式,常用的有ase,ase-128。mode加速模式。从低到高分别是default,noraml,fast,fast2,fast3,越高越耗费带宽mtu,sndwnd,rcdwnd,UDP包的设置.在100M带宽下建议使用以下设置,其它带宽客户端的sndwnd,rcdwnd按比例设置12服务端: -mtu 1400 -sndwnd 2048 -rcvwnd 2048客户端: -mtu 1400 -sndwnd 256 -rcvwnd 2048 -dscp 46
客户端的连接
- 浏览器,如果不是Mac则需要使用插件配置代理.代理设置为
sock5,地址为127.0.0.1,端口为shadowsocks的local_port,默认是1080 shadowsocks,需要根据服务端设置密码及加密方式,地址为127.0.0.1,端口为kcptun的listener_portkcptun,地址为服务器地址,端口为服务器kcptun的listener_port