centos7 部署shadowsocks服务端详细教程

首先需要一台服务器,使用搬瓦工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软件包附带两个命令,ssserversslocal。一个用于服务端配置,一个用于客户端配置。详细情况可以运行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来重载配置。

参考资料

猜你喜欢

转载自blog.csdn.net/hopewtc/article/details/81083455