Shadowsocks优化

下面介绍的几种方法,前面几种我亲自试过,确实能在一定程度提高速度。锐速和net-speeder这两种我没用过,搬运别人博客的内容。

1.修改内核参数

只测试了KVM架构的VPS,将下面参数复制到/etc/sysctl.conf里面,保存生效,执行sysctl -p

# max open files
fs.file-max = 1024000
# 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
# fastopen in server and client
net.ipv4.tcp_fastopen = 3
# 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
# for high-latency network
net.ipv4.tcp_congestion_control = hybla
# forward ipv4
net.ipv4.ip_forward = 1

其中最后的hybla是为高延迟网络(如美国,欧洲)准备的算法,需要内核支持,测试内核是否支持,在终端输入:

sysctl net.ipv4.tcp_available_congestion_control

如果结果中有hybla,则证明你的内核已开启hybla,如果没有hybla,可以用命令modprobe tcp_hybla开启。

对于低延迟的网络(如日本,香港等),可以使用htcp,可以非常显著的提高速度,首先使用modprobe tcp_htcp开启,再将

net.ipv4.tcp_congestion_control = hybla

改为

net.ipv4.tcp_congestion_control = htcp

建议亚洲VPS用户使用这个算法。

2.增加系统描述符的最大数

编辑/etc/security/limits.conf文件,添加以下两行:

* soft nofile 51200
* hard nofile 51200

启动shadowsocks之前,还可以执行以下命令:

ulimit -n 51200

修改

vi /etc/profile

文件,加入

ulimit -SHn 1024000

然后重启服务器执行

ulimit -n

,查询返回1024000即可。

3.加密层面

安装M2Crypto 这个可以提高SS的加密速度,安装办法:

apt-get install python-m2crypto

使用CHACHA20加密算法

首先,安装libsodium,让系统支持chacha20算法。
Debian/Ubuntu

apt-get install build-essential
wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar xf LATEST.tar.gz && cd libsodium*
./configure && make && make install
ldconfig

然后修改ss加密方式:
vi /etc/shadowsocks.json “method”:”aes-256-cfb”改成”method”:”chacha20″,

重启Shadowsocks

4.网络层面

此外,选择合适的端口也能优化梯子的速度,广大SS用户的实践经验表明,检查站(GFW)存在一种机制来降低自身的运算压力,即常用的协议端口(如http,smtp,ssh,https,ftp等)的检查较少,所以建议SS绑定这些常用的端口(如:21,22,25,80,443),速度也会有显著提升。
如果你还要给小伙伴爬,那我建议开启多个端口而不是共用,这样网络会更加顺畅。

防火墙设置(如有有防火墙的话)

自动调整MTU

iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

开启 NAT (记得把 eth0 改成自己的网卡名,openvz 的基本是 venet0 )

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

开启 IPv4 的转发

sysctl -w net.ipv4.ip_forward=1

打开 443 端口

iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p udp --dport 443 -j ACCEPT

5.1 锐速

锐速是一款非常不错的TCP底层加速软件,可以非常方便快速地完成服务器网络的优化,配合 ShadowSocks 效果奇佳。目前锐速官方也出了永久免费版本,适用带宽20M、3000加速连接,个人使用是足够了。如果需要,先要在锐速官网注册个账户。

然后确定自己的内核是否在锐速的支持列表里,如果不在,请先更换内核,如果不确定,请使用 手动安装

确定自己的内核版本在支持列表里,就可以使用以下命令快速安装了。

一键安装速锐破解版

wget -N --no-check-certificate https://github.com/91yun/serverspeeder/raw/master/serverspeeder.sh && bash serverspeeder.sh

一键卸载

chattr -i /serverspeeder/etc/apx* && /serverspeeder/bin/serverSpeeder.sh uninstall -f

设置

Enter your accelerated interface(s) [eth0]: eth0
Enter your outbound bandwidth [1000000 kbps]: 1000000
Enter your inbound bandwidth [1000000 kbps]: 1000000
Configure shortRtt-bypass [0 ms]: 0
Auto load ServerSpeeder on linux start-up? [n]:y #是否开机自启
Run ServerSpeeder now? [y]:y #是否现在启动

执行lsmod,看到有appex0模块即说明锐速已正常安装并启动。

至此,安装就结束了,但还有后续配置。
修改vi /serverspeeder/etc/config文件的几个参数以使锐速更好的工作

accppp="1" #加速PPTP、L2TP V-P-N;设为1表示开启,设为0表示关闭
advinacc="1" #高级入向加速开关;设为 1 表示开启,设为 0 表示关闭;开启此功能可以得到更好的流入方向流量加速效果;
maxmode="1" #最大传输模式;设为 1 表示开启;设为 0 表示关闭;开启后会进一步提高加速效果,但是可能会降低有效数据率。
rsc="1" #网卡接收端合并开关;设为 1 表示开启,设为 0 表示关闭;在有些较新的网卡驱动中,带有 RSC 算法的,需要打开该功能。
l2wQLimit="512 4096" #从 LAN 到 WAN 加速引擎在缓冲池充满和空闲时分别能够缓存的数据包队列的长度的上限;该值设置的高会获得更好的加速效果,但是会消耗更多的内存
w2lQLimit="512 4096" #从 WAN 到 LAN 加速引擎在缓冲池充满和空闲时分别能够缓存的数据包队列的长度的上限;该值设置的高会获得更好的加速效果,但是会消耗更多的内存

重读配置以使配置生效/serverspeeder/bin/serverSpeeder.sh reload

查看锐速当前状态/serverspeeder/bin/serverSpeeder.sh stats

查看所有命令/serverspeeder/bin/serverSpeeder.sh help

停止/serverspeeder/bin/serverSpeeder.sh stop

启动/serverspeeder/bin/serverSpeeder.sh start

重启锐速/serverspeeder/bin/serverSpeeder.sh restart

5.2  net-speeder

net-speeder 原理非常简单粗暴,就是发包翻倍,这会占用大量的国际出口带宽,本质是损人利己,不建议使用。

(1) Ubuntu/Debian 下安装依赖包

apt-get install libnet1
apt-get install libpcap0.8
apt-get install libnet1-dev
apt-get install libpcap0.8-dev

(2) Centos 下安装依赖包
需要配置 epel 第三方源。下载 epel :http://dl.fedoraproject.org/pub/epel/ 。例如,Centos 7 x64:

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-75.noarch.rpm
rpm -ivh epel-release-75.noarch.rpm
yum repolist

然后安装依赖包:

yum install libnet libpcap libnet-devel libpcap-devel

(3) 下载官方的 tar.gz 压缩包。解压安装运行:

wget http://net-speeder.googlecode.com/files/net_speeder-v0.1.tar.gz
tar zxvf net_speeder-v0.1.tar.gz
cd net_speeder
chmod 777 *
sh build.sh -DCOOKED

首先你需要知道你的网卡设备名,可以使用 ifconfig 查看。假设是eth0,那么运行方法是:

./net_speeder eth0 “ip”

关闭 net-speeder

killall net_speeder

哦,对了,作者已经将 net-speeder 迁移到 GitHub 了,感兴趣的可以关注、贡献。

 

参考文章:

[1].shadowsocks optimize

[2].科学上网之 Shadowsocks 安装及优化加速

发表评论

电子邮件地址不会被公开。 必填项已用*标注