首先需要一台服务器,使用搬瓦工VPN或者阿里云等确认服务器端口8388(ss默认端口,其他端口请随意)是否开启,未开启请先开启
升级python版本
python2.7比较稳定,但是因为在linux机器上用yum安装的默认是2.6.6版本的,所以需要升级到2.7。
一、安装过程
1. 先安装相应的依赖
yum -y install gcc openssl-devel bzip2-devel
如果没安装好这些依赖的,后面还要重新走编译流程,别问我为什么知道 。
2. 下载软件包
cd
wget https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz
3. 解压安装包
tar xvzf Python-2.7.15.tgz
4. 安装
cd Python-2.7.15
./configure --enable-optimizations
make && make altinstall
在检测脚本中加上enable-optimizations优化,主要是在这个版本上能启用PGO优化,让Python在运行时能变得更快,详细参考[2]。make 加altinstall参数,避免覆盖原来安装在/usr/bin/python 的版本。
5. 查看安装是否成功
/usr/local/bin/python2.7 -V
-->
Python 2.7.15
6. 建立软连接,使系统默认python指向2.7版本
mv /usr/bin/python /usr/bin/python2.6.6
ln -s /usr/local/bin/python2.7 /usr/bin/python
7. 解决yum不支持python2.7的问题
sed -i 's/python/python2.6.6/' /usr/bin/yum
或者直接用vi编辑/usr/bin/yum把头部的python换成2.6.6。ps:编辑前记得备份。
which yum
sudo vim /usr/bin/yum
安装shadowsocks
首先是安装。
yum install python-setuptools && easy_install pip
当然,shadowsocks有各种版本。如果系统的软件仓库中没有shadowsocks,可以转而使用其他版本的。例如,使用pip安装python版本的shadowsocks:
pip install shadowsocks
- shadowsocks软件包附带两个命令,
ssserver
和sslocal
。一个用于服务端配置,一个用于客户端配置。详细情况可以运行man shadowsocks
来查看。
配置shadowsocks
shadowsocks有两种配置方法,一种是命令行参数配置,一种是配置文件。先来说说命令行配置吧。
命令行参数配置
命令行参数如下:
参数名 | 参数意义 |
---|---|
-s | 服务器地址 |
-p | 服务器端口号 |
-k | 服务器密码 |
-m | 服务器加密方式 |
-t | 服务器超时时间 |
-c | 配置文件路径 |
–fast-open | 快速打开模式,仅Unix/Linux系统可用 |
–workers | 工作者数量 |
每次运行shadowsocks都将一大堆参数传进去是件很麻烦的事情。所以一般情况下都是采用配置文件的方式来配置的。然后通过-c
参数将配置文件路径传入。
配置文件
shadowsocks的配置文件是一个json形式的文件,各参数的意义和命令行参数意义相同。
sudo vim /etc/shadowsocks/config.json
复制粘贴下列内容到config.json
{
"server":"my_server_ip",
"server_port":8388,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"mypassword",
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}
服务器地址就写服务器的ip地址,不要写127.0.0.1。端口号可以自己写,但是不要占用其他服务的端口。本地地址和本地端口是客户端使用的,服务端可以不用理会。密码尽量采用复杂一点的密码,以保证安全性。加密方式使用aes-256-cfb
就可以了。如果服务器是Linux系统的话,打开fast_open。
配置文件编辑完毕之后,就可以运行shadowsocks了。前台运行:
ssserver -c /etc/shadowsocks/config.json
后台运行和停止:
ssserver -c /etc/shadowsocks/config.json -d start
ssserver -c /etc/shadowsocks/config.json -d stop
以上都是在root用户下运行的。以root方式运行可能会有一些安全问题。所以一般都是使用普通用户运行:
ssserver -c /etc/shadowsocks/config.json --user nobody -d start
以上都需要自己手动运行命令来启动shadowsocks。要让shadowsocks在系统启动时自动运行,需要在/etc/rc.local
中添加命令。
sudo ssserver -c /etc/shadowsocks/config.json --user nobody -d start
shadowsocks优化
需要服务器是Linux 3.5及以上。
提高最大连接数
编辑/etc/security/limits.conf
文件,添加以下两行:
* soft nofile 51200
* hard nofile 51200
然后,在启动shadowsocks服务器之前,先设置一下ulimit:
ulimit -n 51200
调整内核参数
调整内核参数的目标是:
- 尽可能重用连接和端口号
- 尽可能增大队列和缓冲区
- 为高延迟和高流量选择合适的TCP拥塞算法
下面是一个生产服务器的配置(/etc/sysctl.conf
),在我的搬瓦工服务器上有些不能使用,可能需要自己编译内核模块。
fs.file-max = 51200
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
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 = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mem = 25600 51200 102400
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 -p
来重载配置。
参考资料
- https://www.cnblogs.com/harrymore/p/9024287.html
- https://github.com/shadowsocks/shadowsocks/wiki/Configuration-via-Config-File
- https://shadowsocks.org/en/config/advanced.html
- https://github.com/shadowsocks/shadowsocks/wiki/Shadowsocks-使用说明
- https://www.linuxbabe.com/linux-server/setup-your-own-shadowsocks-server-on-debian-ubuntu-centos
- https://blog.csdn.net/u011054333/article/details/52496303