首先更新系统和安装编译环境
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
至此,服务器端可设置已完成!
本教程参考网上现有教程所写,基本上照搬网上现有教程。主要是存档供自己以后方便配置,所有操作都经过本人亲自测试有效。