语の国

架设高性能shadowsocks服务器

August 27, 2015

Tags:performanceshadowsocks

系统环境:Ubuntu 14.04.3 LTS
内核版本:Linux 3.18.1-x86_64-linode50 x86_64

TCP优化

首先你需要一台XEN/KVM架构VPS,我用的是Linode。为了方便,我直接使用root账号进行操作。

hybla模块

先检查你的系统有没有安装hybla拥塞控制算法模块,如果有的话就不用安装了。

sysctl net.ipv4.tcp_available_congestion_control | grep hybla

1.查看系统版本:

root@localhost:~# uname -a
Linux localhost 3.18.1-x86_64-linode50 #1 SMP Tue Jan 6 12:14:10 EST 2015 x86_64 x86_64 x86_64 GNU/Linux

2.下载内核
我的内核版本是3.18.1,然后去kernel.org下载系统对应的内核,之后下载并解压:

wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.18.10.tar.gz
tar zxvf linux*

3.安装编译器

#for Ubuntu/Debian
apt-get install -y build-essential libncurses5-dev

#for CentOS
yum install -y ncurses-devel make gcc bc

4、配置内核编译文件

cd linux*
zcat /proc/config.gz > .config

编辑.config,找到CONFIG_TCP_CONG_CUBIC=y,如下图

在下面添加一行CONFIG_TCP_CONG_HYBLA=y,并更改CONFIG_DEFAULT_TCP_CONGhybla

然后编译

make

这个会比较慢,我的linode用了大约20分钟

5.准备编译内核模块

cd net/ipv4/
mv Makefile Makefile.old
vim Makefile

然后复制下面的内容,注意要把下面的KDIR修改为你自己下载的内核的根目录

obj-m := tcp_hybla.o
KDIR := /root/download/linux-3.18.1
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

6.编译模块

cd /root/download/linux-3.18.1
make modules

7.测试模块

cd /root/download/linux-3.18.1/net/ipv4
insmod ./tcp_hybla.ko
sysctl net.ipv4.tcp_available_congestion_control

如果安装成功,会有显示

net.ipv4.tcp_available_congestion_control = hybla cubic reno

安装锐速

锐速是TCP底层优化软件,经过我的测试,我的日本Linode的下载速度(wget)从1-3MB/S提升到40MB/S。可以非常有效的优化服务器的网络优化。需要注意的是锐速只支持有限的内核版本,需要先在这里查询

PS,linode可以非常方便的修改系统版本,我也是才知道的Σ(`L_` ),如下图:

在确认内核版本后,就可以安装了,安装过程很简单

wget http://dl.serverspeeder.com/d/ls/serverSpeederInstaller.tar.gz
tar zxvf serverSpeederInstaller.tar.gz
./serverSpeederInstaller.sh

修改文件句柄数限制

修改/etc/security/limits.conf,加入

* soft nofile 51200
* hard nofile 51200

修改/etc/pam.d/common-session,加入

session required pam_limits.so

修改/etc/profile,加入

ulimit -SHn 51200

最后重启服务器,执行ulimit -n,会返回51200

优化内核参数

以下内容摘自shadowsocks-wiki

新建 /etc/sysctl.d/local.conf 这个文件并添加下面的内容:

fs.file-max = 51200

net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.rmem_default = 65536
net.core.wmem_default = 65536
net.core.netdev_max_backlog = 4096
net.core.somaxconn = 4096

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

然后运行sysctl --system

安装Shadowsocks

apt-get install python-pip
pip install shadowsocks

运行Shadowsocks

ssserver -p 443 -k password -m aes-256-cfb --user nobody -d start

通过优化的Shadowsocks:


优化之后的Shadowsocks可以直接跑满我家里的宽带,看720P视频完全流畅。