shadowsocks – libev 服务端的部署
在VPS上部署shadowsocks,推荐使用C语言编写的基于libev的shadowsocks-libev的服务端。下面介绍在Linux系统的VPS上安装并配置的方法。Linux请采用近期的发行版,不要过老。本文基本是照着github上的readme翻译的,给那些英文苦手一点帮助。本篇只提供部分安装方法,其他方式请参考github上原repo的readme。
由于shadowsocks-libev变动频繁,请以shadowsocks-libev的Github页面的readme为准,如有问题可至issue页面查找有无类似问题,或者发issue提问:
一、安装SHADOWSOCKS服务端
方法1. APT从repo安装。
Ubuntu 14.04/16.04 版本需要先添加作者的PPA:
Ubuntu 16.10及以上版本则可以直接从Ubuntu的官方repo安装,无需上述步骤。
接下来更新软件列表并安装即可。
方法2. 使用脚本自动编译deb安装,适用于Debian (>=8) / Ubuntu 14.04 (Trusty) / 16.04 (Xenial) / 16.10 / Higher
(会自动编译安装所有依赖包,并同时安装simpleobfs plugin)
方法3. 手动编译安装(Ubuntu 16.04 / Debian 8及以上),在你需要从最新master源码编译时候可以使用这种方式。
先通过git下载源码:
安装必须的包:
Debian 8的用户,注意需要从Debian Backports安装libsodium(最低版本v1.0.8)。
注意:新版本需要debhelper版本大于等于10,不满足的请使用Backports安装新版debhelper:
然后生成deb包并安装,一步步执行(留意是否出错 如果出错需要检查系统或者之前的步骤):
其他Unix-like的系统,特别是Debian-based的Linux发行版如: Ubuntu, Debian or Linux Mint
先从最近的源码编译安装libmbedtls和libsodium
安装依赖包:
# Debian / Ubuntu
sudo apt-get install --no-install-recommends gettext build-essential autoconf libtool libpcre3-dev asciidoc xmlto libev-dev libc-ares-dev automake
# CentOS / Fedora / RHEL
sudo yum install gettext gcc autoconf libtool automake make asciidoc xmlto c-ares-devel libev-devel
# Arch
sudo pacman -S gettext gcc autoconf libtool automake make asciidoc xmlto libev c-ares
编译:
二、配置与启动
1、配置文件为:/etc/shadowsocks-libev/config.json,格式说明:
其中:
server:主机域名或者IP地址,尽量填IPserver_port:服务器监听端口password:密码method:加密方式 所有支持的加密方式请参照官方文档。这里本人推荐只使用支持AEAD的加密方式,包括以下五种: aes-128-gcm/aes-192-gcm/aes-256-gcm/chacha20-ietf-poly1305/xchacha20-ietf-poly1305
timeout:连接超时时间,单位秒。要适中。
注意引号。
2、控制启动、停止、重启:
由于目前大部分新的linux发行版都已经支持systemd,因此,可以统一使用如下命令
需要前台运行时候,执行ss-server命令运行,具体用法如下:
一个例子如:
查看shadowsocks是否正确启动并监听相应端口,看到有ss-server进程LISTEN正确的端口就表示成功:
服务器优化
1. 开启TCP Fast Open:
需求: 系统内核版本≥3.7,shadowsocks-libev≥3.0.4。
修改 /etc/sysctl.conf ,加入如下一行:
执行如下命令使之生效:
配置文件 /etc/shadowsocks.json 增加一行:
2. 其他优化以及配置单边/双边加速
不过官方说明里面的TCP流控使用了hybla:
这里推荐使用bbr而不是hybla。bbr需要内核版本不小于4.9,如果内核版本不够,需要更换内核。注意换内核操作不当可能导致vps无法开机,如果发生问题,有救援模式的可能还能救一下,否则只能找客服处理;KVM的通常更换内核没有问题,OpenVZ是不支持更换内核的。具体的更换内核和开启bbr的步骤参考这里:
再推荐一个一键脚本:
然后换完内核开启BBR之后,可以再换一个魔改版的BBR,优化了参数:
注意,OpenVZ的VPS可能无法修改大部分的属性,因此如果想要优化网速需要考虑:
1. 使用kcptun双边加速;
2. 通过linux kernel library来实现,同样是一键脚本: