CentOS 7 Shadowsocks优化

1. 增加TCP连接数量(针对大量TCP连接场合)

编辑limits.conf

vi /etc/security/limits.conf

增加以下两行(设定最大文件打开数为51200)

* soft nofile 51200
* hard nofile 51200

如果只需临时增加此上限,使用以下命令:

ulimit -n 51200

2. 修改sysctl.conf配置文件,优化TCP参数(针对大量TCP连接场合)

vi /etc/sysctl.conf

在最后添加以下内容

# max open files
fs.file-max = 51200
# max read buffer
net.core.rmem_max = 67108864
# max write buffer
net.core.wmem_max = 67108864
# default read buffer
net.core.rmem_default = 65536
# default write buffer
net.core.wmem_default = 65536
# max processor input queue
net.core.netdev_max_backlog = 4096
# max backlog
net.core.somaxconn = 4096

# resist SYN flood attacks
net.ipv4.tcp_syncookies = 1
# reuse timewait sockets when safe
net.ipv4.tcp_tw_reuse = 1
# turn off fast timewait sockets recycling
net.ipv4.tcp_tw_recycle = 0
# short FIN timeout
net.ipv4.tcp_fin_timeout = 30
# short keepalive time
net.ipv4.tcp_keepalive_time = 1200
# outbound port range
net.ipv4.ip_local_port_range = 10000 65000
# max SYN backlog
net.ipv4.tcp_max_syn_backlog = 4096
# max timewait sockets held by system simultaneously
net.ipv4.tcp_max_tw_buckets = 5000
# TCP receive buffer
net.ipv4.tcp_rmem = 4096 87380 67108864
# TCP write buffer
net.ipv4.tcp_wmem = 4096 65536 67108864
# turn on path MTU discovery
net.ipv4.tcp_mtu_probing = 1

3. 编译并启用hybla模块(系统自带的跳过本节)

查看系统可用算法,如果有显示hybla就表示系统自带

sysctl net.ipv4.tcp_available_congestion_control

3.1 安装开发工具:

yum -y groupinstall "Development Tools"
yum -y install ncurses-devel ncurses

3.2 下载同版本内核并解压

查看当前系统的内核版本

uname -r

https://www.kernel.org/pub/linux/kernel/v3.0/ 下载相同内核版本(本例为linux-3.19.1)的源码到任意目录(比如/root/mykernel),解压文件。

mkdir /root/mykernel
cd /root/mykernel
wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.19.1.tar.gz
tar xzvf linux-3.19.1.tar.gz

3.3 编译hybla模块

复制系统当前配置文件:

cd /root/mykernel/linux-3.19.1
zcat /proc/config.gz > .config

进行内核配置:

make menuconfig

进入配置界面后,箭头键移动光标用回车逐级选择:

Networking suport - Networking options - TCP advanced congestion control - TCP-Hybla congestion control algorithm

选中TCP-Hybla congestion control algorithm后,按下M设置为模块;设置完成后移动光标选择Save再Exit退出。

接下去进行模块编译:

make modules

会在/root/mykernel/linux-3.19.1/net/ipv4/目录生成tcp_hybla.ko模块。

注意:千万不能运行命令make modules_install,否则将带来严重的后果,它会删除你系统中的所有模块,只安装刚刚编译的模块。

3.4 设置开机自动加载hybla模块

复制tcp_hybla.ko模块到系统特定位置,就可以实现开机自动加载:

mkdir -p /lib/modules/3.19.1-x86_64-linode53/kernel/net/ipv4
cd /lib/modules/3.19.1-x86_64-linode53/kernel/net/ipv4
cp /root/mykernel/linux-3.19.1/net/ipv4/tcp_hybla.ko .

3.5 开启DigitalOcean等KVM自带的hybla模块

添加开机自动运行脚本

vi /etc/sysconfig/modules/hybla.modules

输入以下内容

#!/bin/sh
/sbin/modprobe tcp_hybla

保存退出,添加该文件可执行属性

chmod +x /etc/sysconfig/modules/hybla.modules

4. 修改/etc/sysctl.conf 让开机自动设置hybal为优先(针对高延迟网络环境)

vi /etc/sysctl.conf

在最后加入以下内容

# for high-latency network
net.ipv4.tcp_congestion_control=hybla

5. 开启 TCP Fast Open 支持(服务端和客户端Linux内核版本必须新于 3.7)不推荐

在客户端和服务器端的 Shadowsocks 配置文件里加入 “fast_open”: true

修改服务端配置文件(客户端配置文件参照修改)

vi /etc/sysctl.conf

在最后加入以下内容

# turn on TCP Fast Open on both client and server side
#net.ipv4.tcp_fastopen = 3
上一篇
下一篇