centos部署shadowsocks/shadowsocks-libev

首先更新系统和安装编译环境

yum update -y
yum groupinstall "development tools" -y

shadowsocks 下载及编译

git clone https://github.com/madeye/shadowsocks-libev.git 
cd shadowsocks-libev
./configure
make && make install
ps:最好自己fork一份源码,原因你懂的.可能这中间还有一些错误提示,比如缺少openssl,我们只需要
yum install openssl-devel -y

程序会被安装至/usr/local/bin/下,该路径已存在于系统变量中,所以可以直接使用程序名运行。

/usr/local/bin/ss-local
/usr/local/bin/ss-tunnel
/usr/local/bin/ss-server
/usr/local/bin/ss-redir

如何使用

在使用shadowsocks的时候,你可以随时输入命令ss-server -h查看使用帮助

运行服务端

加密方式可选择:

encrypt method: table, rc4, rc4-md5,aes-128-cfb, aes-192-cfb, aes-256-cfb,bf-cfb, camellia-128-cfb, camellia-192-cfb,camellia-256-cfb, cast5-cfb, des-cfb, idea-cfb,rc2-cfb, seed-cfb, salsa20 and chacha20

选择加密方式的时候请注意客户端是否支持,同时官方不推荐rc4,des-cfb,table,salsa20-ctr这四种加密方式。

命令行运行

前台运行服务端:

ss-server -s [yourip] -p [Server Port] -k [password] -m [encryption methods]

后台运行服务端:

nohup ss-server -s [Server IP] -p [Server Port] -k [Password] -m [encryption methods] &
使用配置文件运行

注意,config.json需要自己创建,并且需要绝对路径

使用-c 指定配置文件, -f 创建守护进程:

vim config.json

将下面的配置写入config.json

# 注释版配置
{
    "server":"servier_ip",   # 服务器IP
    "server_port":10086,     # ss服务器所使用的端口号,建议设置为10000以上
    "password":"password",   # ss服务器密码,轻易不要分享
    "timeout":60,            # 超时时间,建议设置为60
    "method":"rc4-md5"         # 加密方式,需要和客户端配合设置}

# 复制粘贴版

{
    "server":"servier_ip",
    "server_port":10086,
    "password":"password",
    "timeout":60,
    "method":"rc4-md5"}

然后执行 ss-server -c config.json -f /tmp/ss.pid 即可!

写入开机脚本

echo "/usr/local/bin/ss-server -c /home/***/config.json -f /tmp/ss-server.pid" >> /etc/rc.local

为了安全起见(非必需),我们使用非root用户运行ss,如何实现呢?

# 如果没有非root用户# 我们现在就新建一个普通用户useradd laogao# 为laogao创建密码passwd laogao
> 输入两次密码# 切换用户至laogaosu - laogao# 在主目录创建第一个配置文件,配置格式请参考`使用配置文件运行`一节vim ~/config1.json# 保存完毕即可立即运行/usr/local/bin/ss-server -c ~/config1.json -f /tmp/ss1.pid# 设置开启自启动# 我们先切换至root用户su - root# 接着在启动脚本里加入启动命令# 指定ss以用户laogao的权限运行# 执行下面的命令时一定注意文件路径是否正确echo "su - laogao -c "/usr/local/bin/ss-server -c /home/laogao/config1.json -f /tmp/ss1.pid"" >> /etc/rc.local

更高级的运行方式

 使用supervisor托管shadowsocks ,本文不做探讨

多用户(实例)运行

可能大家都注意到了,在上一节我们提到了config1.json是第一个配置文件,这是为什么呢?

没有错,我们还可以创建配置文件2—-config2.json,并以同样的方式运行。

这样,我们的一个服务器就可以对外提供两种,端口不同、密码不同、加密方式也可能不同的shadowsocks服务,然后共享给不同的基友,是不是很方便啊。

需要注意的是,多个配置文件一定要注意的是,配置的端口和pid文件一定是不同的!而密码及加密方式,甚至服务器IP都没有限制。

例子如下(注意端口不能相同)

config1.json

{
    "server":"1.1.1.1"
    "server_port":11111,
    "password":"test1",
    "timeout":100,
    "method":"aes-256-cfb"}

config2.json

{
    "server":"2.2.2.2
    "server_port":22222
    "password":"test2",
    "timeout":100,
    "method":"rc4-md5"
}


# 多实例运行例子:
/usr/local/bin/ss-server -c ~/config1.json -f /tmp/ss1.pid
/usr/local/bin/ss-server -c ~/config2.json -f /tmp/ss2.pid

# 查看进程
ps -ef|grep ss-server


xxx      1344     1  0 20:12 ?        00:00:00 ss-server -c /home/xxx/config1.json -f /tmp/1.pid
xxx      1491     1  0 20:24 ?        00:00:00 ss-server -c /home/xxx/config2.json -f /tmp/2.pid

至此,服务器端可设置已完成!

本教程参考网上现有教程所写,基本上照搬网上现有教程。主要是存档供自己以后方便配置,所有操作都经过本人亲自测试有效。