kcptunの設定

ubuntu 20.04になると、Kcptunのパッケージがある。Shadowsocks-libevのプラグインではないが、一緒に使用することができる。
# apt install kcptun
下記とman kcptun-serverを参考に設定した。
https://shadowsocks/en/index.html
プラグインには、環境変数で引数が渡されているので、シェルスクリプトをつくる。
# cd /etc/shadowsocks-libev
# cat > kcptun.sh
#!/bin/sh
kcptun-server -c /etc/shadowsocks-libev/kcptun.json -l “:$SS_REMOTE_PORT” -t “127.0.0.1:$SS_LOCAL_PORT”
# chmod a+x kcptun.sh
ポート以外の設定は、kcptun.jsonに入れておく。ポートを記載するとコマンドラインの引数が上書きされてしまうので、不可。logのファイル出力は、permissionの関係だと思うがうまくいかなかった。
shadowsocksのconfig.jsonに”plugin”:”/etc/shadowsocks-libev/kcptun.sh”をセットしておく。
plugin_optsも環境変数SS_PLUGIN_OPTIONSに渡されるだけなので、使用しない。
クライアントの関係で、shadowsockのpasswordとkcptunのkeyは同じにした。
$SS_REMOTE_PORTのUDPを開けておく。
# ufw app info SS
# ufw allow SS
altus側のmtuを調べたら、1472だった。
# ping -s 1470 yahoo.co.jp

Andoridのクライアントは、Max Lvのshaowssocksとkcptunを使用した。
Galaxy S10の場合、両方ともallow background acitivityをonにしておかないと、起動しなかったり、中断することがある。crypt=none以外だとなぜか接続できなかった。keyは設定しないとshadowsocksのパスワードと同じになる。
mtuがWifiだと1500、mobileだと1300だったので、1300に設定した。
dscp=46はexpedited forwardだが、セットしても差は感じられない。
下記を参考に、sockbuf=16777217;parityshard=1;rcvwnd=1024にしてみた。
https://github.com/xtaci/kcptun/blob/master/README.md
気持ち速くなったと思いたい。高速化の実感はないがレスポンスの実感はよいかも。
UDPなので、GFWにどこまで有効かな。でもUDP通信だとmobile networkでは繋がらないようだ。

Arch linuxもパッケージがあり、サービスとして起動できるようになっている。
# pacman -S kcptun
# vi /etc/kcptun/config.json
# ufw allow PORT/udp
# systemctl start kcptun-server@config
# journalctl -u kcptun-server@config | tail -20
kcptun経由の有無でshadowsocksの速度を比較してみた。wifi環境だと通信状態は良いので、経由すると速度は約30%低下した。mobile環境ではそもそも繋がらなかった。ちなみにobfsを経由すると約10%速度が低下した。shadowdocksだけではmobile環境では接続できないので、ブロックされているのだろう。obfsを経由しても受信エラーが起こって速度が激減している。

コメント