KCP 是一個(gè)快速可靠協(xié)議,能以比 TCP浪費(fèi)10%-20%的帶寬的代價(jià),換取平均延遲降低 30%-40%,且最大延遲降低三倍的傳輸效果。純算法實(shí)現(xiàn),并不負(fù)責(zé)底層協(xié)議(如UDP)的收發(fā),需要使用者自己定義下層數(shù)據(jù)包的發(fā)送方式,以 callback的方式提供給 KCP。連時(shí)鐘都需要外部傳遞進(jìn)來,內(nèi)部不會(huì)有任何一次系統(tǒng)調(diào)用。
1. 先下載Kcptun
mkdir kcptun
cd kcptun
wget https://github.com/xtaci/kcptun/releases/download/v20160701/kcptun-linux-amd64-20160701.tar.gz
tar -zxf kcptun-linux-amd64-20160701.tar.gz
提醒:wget時(shí)根據(jù)本地系統(tǒng)下載。32位下載 kcptun-linux-386-*.tar.gz,64位下載 kcptun-linux-amd64-*.tar.gz
2.創(chuàng)建 start.sh
vi /root/kcptun/start.sh
寫入以下內(nèi)容:
./server_linux_amd64 -l :29900 -t 127.0.0.1:8388 -key test -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2 > kcptun.log 2>&1 &
server_linux_amd64 對(duì)應(yīng)服務(wù)端文件名,請(qǐng)對(duì)應(yīng)修改。
-l 表示 Kcptun 的服務(wù)端監(jiān)聽端口,用于接收外部請(qǐng)求和發(fā)送數(shù)據(jù),默認(rèn) 29900; -t 表示要加速的地址,我這里設(shè)置的是我服務(wù)器的 Shadowsocks 端口;
-key 是 Kcptun 的驗(yàn)證密鑰,服務(wù)端和本地必須一致才能通過驗(yàn)證,請(qǐng)自行設(shè)置;
-mode 為加速模式,默認(rèn) fast,這里使用 fast2。
3.創(chuàng)建 stop.sh
vi /root/kcptun/stop.sh
寫入以下內(nèi)容:
#!/bin/sh
PID=`ps -ef | grep server_linux_amd64 | grep -v grep | awk '{print $2}'`
if [[ "" != "$PID" ]]; then
echo "killing $PID"
kill -9 $PID
fi
4.創(chuàng)建 restart.sh
#!/bin/sh
cd /root/kcptun/
echo "Stopping Kcptun..."
sh stop.sh
sh start.sh
echo "Kcptun started."
添加開機(jī)啟動(dòng):
echo "sh /root/kcptun/start.sh" >> /etc/rc.d/rc.local
上面是服務(wù)器端配置,下面配置客戶端
1. 先下載客戶端文件,以windows為例
http://download.csdn.NET/detail/per_son/9583356 kcptun64位下載
http://download.csdn.Net/detail/per_son/9583352 kcptun32位下載
由于 Kcptun 是控制臺(tái)程序,所以我選擇使用 vbs 腳本,來達(dá)到后臺(tái)運(yùn)行的目的:新建 run.vbs
Dim RunKcptun
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
'獲取文件路徑
currentPath = fso.GetFile(Wscript.ScriptFullName).ParentFolder.Path & "\"
'軟件運(yùn)行參數(shù)
exeConfig = "client_windows_amd64.exe -l :12948 -r 10.10.10.10:29900 -key test -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46"
'日志文件
logFile = "kcptun.log"
'拼接命令行
cmdLine = "cmd /c " & currentPath & exeConfig & " > " & currentPath & logFile & " 2>&1"
'啟動(dòng)軟件
WshShell.Run cmdLine, 0, False
'等待1秒
'WScript.Sleep 1000
'打印運(yùn)行命令
'Wscript.echo cmdLine
Set WshShell = Nothing
Set fso = Nothing
'退出腳本
WScript.quit
本地監(jiān)聽端口為 12948;服務(wù)器 IP 地址 10.10.10.10 端口 29900;驗(yàn)證密鑰和服務(wù)端一致。其他參數(shù)說明見上面服務(wù)端配置的說明。
v20160616 新增參數(shù):-conn,使用多線程連接。可嘗試添加 -conn 4 以使用4線程連接服務(wù)器。
新建 stop.bat
taskkill /f /im client_windows_amd64.exe
把stop.bat 和 run.vbs 放到kcptun解壓的那個(gè)文件里,雙擊 run.vbs 運(yùn)行程序,使用 stop.bat 來停止程序,kcptun.log 為輸出的日志信息。
然后是Shadowsocks 客戶端配置
在客戶端中新建服務(wù)器:
服務(wù)器 IP 填寫:127.0.0.1
服務(wù)器端口填寫:12948
正確填寫你的 Shadowsocks 密碼,加密方式,協(xié)議和混淆方式。
切換到該服務(wù)器上,測(cè)試是否正確運(yùn)行。
專注數(shù)字化方案建設(shè),推動(dòng)智慧企業(yè)生態(tài)圈的升級(jí)發(fā)展