• 本站在不影响浏览的前提下添加了少量广告,请允许本站广告可显示,感谢~
  • 如果有必要,请使用Telegram关注https://t.me/getssr_info
  • 关于国内某个软件代理商代理的CorelDRAW系列软件,如果各位需要正版请访问corel官方网站,不要访问带有china的网站!!!反正话是放在这里了,听不听随你
  • 如果遇到文章图片不显示请联系管理员处理,谢谢
  • 欢迎访问寡人的吐槽胜地,我们真的只是吐槽,不谈技术,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 版权声明:大部分文章是从网上复制的!并不表示全部都是从网上复制的!

ShadowsocksR 多用户版服务端安装教程(SS-Panel后端)

技术类 大变态 8年前 (2016-06-27) 2909次浏览 已收录 2个评论

注:多用户版需配合 ss-panel 等前端使用,查看 SS-Panel 教程。

这篇文章主要说明 ShadowsocksR 后端的安装教程,这属于后端教程,前端教程请看这里,新手扩展篇请看这里(教程都是配套的,建议放在一起看!)

如果你看不太懂,那么你需要看这个:SS-Panel 前后端详细演示安装 视频教程

SS-Panel 教程特别声明!!!!!!!!!!!!!!!!!!!

此教程为多用户版,适合站长。如果你是个人使用,请查看单用户版教程:单用户版教程

以下命令均以 root 用户执行,或 sudo 方式执行。

以下部分内容可能需要 VIM 操作,不懂的可以看一下这个VIM 小白教程


说明一下新手步骤,安装依赖 → 下载源码 → 修改数据库配置 → 设置脚本权限并运行脚本!

没了,就这么简单,不要想的那么复杂。

首先下载Putty,然后输入 IP 和端口(默认 22)后点击 Open 连接 VPS。

然后登陆 VPS,第一次登陆会提示你一个信息框,点是(Yes)就行了。

账号都是 root(小写),密码一般在控制台有生成或更改的地方。输入密码的时候不会显示出来,但是实际是在输入的。

然后就可以输入下面的代码,一步一步来!一行一行来!

bwg-vpnjc1

基本库安装

Centos 系统执行这个:

yum install python-setuptools
easy_install pip
yum install git

Ubuntu/Debian 系统执行这个(推荐这两个系统,对新手友好):

apt-get update
apt-get install python-pip
apt-get install git

如果要使用 salsa20 和 chacha20 算法,请安装 libsodium(这个模块在不断更新可能本文章里的不是最新版,在这里看最新版本,并替换下面代码的版本号) :

apt-get install build-essential
wget https://github.com/jedisct1/libsodium/releases/download/1.0.10/libsodium-1.0.10.tar.gz
tar xf libsodium-1.0.10.tar.gz && cd libsodium-1.0.10
./configure && make -j2 && make install
ldconfig

如果曾经安装过旧版本,亦可重复用以上步骤更新到最新版,仅 1.0.4 或以上版本支持 chacha20-ietf

安装 cymysql

pip install cymysql

获取源代码

git clone -b manyuser https://github.com/breakwa11/shadowsocks.git

执行完毕后此目录会新建一个 shadowsocks 目录,其中根目录的是多用户版(即数据库版)子目录中的是单用户版。

根目录即 /shadowsocks 文件夹

子目录即 /shadowsocks/shadowsocks 文件夹

服务端配置

进入根目录:

cd shadowsocks
cp mysql.json usermysql.json

shadowsocks 目录内,打开文件vi usermysql.json

"host": "127.0.0.1", //前端 mysql 域名/IP
"port": 3306, //mysql 端口
"user": "ss", //mysql 用户名
"password": "pass", //mysql 密码
"db": "shadowsocks", //数据库名
注意:这里的数据库信息除了 host ,其他的必须和 SS-Panel 完全一致,服务端启动的时候会读取数据库信息!至于 host ,如果你的服务端和前端(SS-Panel)在一个 VPS 上,那就写 localhost 或者 127.0.0.1,如果不在一起,请写前端(SS-Panel)所在 VPS 的 ip 或者域名!
还有一条要注意的,如果服务端和前端(SS-Panel)不在一个 VPS 上,那么数据库链接就属于远程链接了,这时候需要开启数据库用户的远程链接功能!
开启方法:在数据库——用户——编辑权限——登录信息中修改 Host 为任意主机“%”

ss-jc14-01

配置文件 config.json:

文件 config.json 复制一份到 user-config.json,然后编辑:

cp config.json user-config.json

vi user-config.json

“method”:”aes-256-cfb”, //修改成您要的加密方式的名称
“protocol”: “auth_sha1_compatible”, //修改成您要的协议插件名称
“obfs”: “tls1.0_session_auth_compatible”, //修改成您要的混淆插件名称

如果需要修改协议插件和混淆插件,请根据单用户版服务端页面的选项对照说明修改参数。

默认是兼容模式,原版也可以用,SSR 开启插件也可以用!

id //用户 id数据库字段说明:

email //用户邮箱
pass //用户密码
passwd //ss 密码
t //最后使用的时间
u //已上传流量
d //已下载流量
transfer_enable //可用流量(总量)
port //ss 端口
switch //保留字段
enable //启用或禁用 ss 帐号(1 启用,0 禁用)
type //保留字段
last_get_gift_time //保留字段
last_rest_pass_time //保留字段

ShadowsocksR 多用户板服务端默认开启 UDP 的

服务端运行与停止

进入根目录:

cd shadowsocks

运行:

python server.py

这句运行代码主要用于调试,关闭 ssh 后 ss 后端自动关闭,所以正式使用请使用下面的脚本运行!如果需要停止请按Ctrl+C键终止程序。

这时可查看有运行情况,检查有没有错误。如果服务端没有错误,而连接不上,需要检查 iptables 或 firewall(centos7)的防火墙配置

通过脚本运行

脚本位于./shadowsocks 目录。cd ./shadowsocks

增加脚本可执行权限(执行一次就好)

chmod +x *.sh

后台运行 但不记录日志(ssh 窗口关闭后也继续运行)

./run.sh

后台运行 且 记录日志(ssh 窗口关闭后也继续运行)

./logrun.sh

查看 SS 日志(用 logrun.sh 脚本启动才会打开日志)

./tail.sh

停止运行

./stop.sh

注:通过脚本运行默认日志会保存在根目录的 ssserver.log,可手动查看。

如果日志文件太大,需要清理,可以用下面这个命令 清空 日志文件。

cat /dev/null > ssserver.log

更新源代码

如果代码有更新可用本命令更新代码

进入 shadowsocks 目录

cd shadowsocks

执行

git pull

成功后重启 ss 服务

网站建好了,但是没有人气怎么办?去我的Shadowsocks 网站页面提交你的网站信息吧!

开机启动

一些人可能需要开机启动,我就一起写上吧。

首先设置开机启动文件的权限,并打开该文件。

Centos 系统:

chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local

Ubuntu/Debian 系统:

chmod +x /etc/rc.local
vi /etc/rc.local

然后在 exit 0 这一句代码(只有 ubuntu/debian 有这个 exit 0)的前面加上 下面这句代码(如果你的 Shadowsocks 文件夹不在 root 目录下,请自行修改路径)

sudo bash /root/shadowsocks/run.sh

然后按 ESC 键 退出 vi 编辑模式,然后输入 :wq 保存并退出该文件,就完成了。

其它异常

无法连接 Shadowsocks 服务端,并且没提示错误或者提示 IP 被占用

如果 Shadowsocks 服务端没有提示错误,或者提示 IP 被占用,并且使用./stop.sh 和./run.sh 脚本重启后,依旧无法连接 Shadowsocks,请重启当前 VPS(这个问题我猜测可能是./stop 脚本并不能完全关闭 Shadowsocks 所有连接,导致无法解决问题。正好 Shadowsocks 服务端默认随机启动,所以重启 VPS 可以解决这个问题。如果你知道原因或者其他更好的解决办法请在下面留言)。

Shadowsocks 无法连接到数据库!MYSQL:2003

经过我多次实验,发现这个问题都是出现在 Shadowsocks 后端和数据库不在一个 VPS 上,这就说明了是数据库所在 VPS 的错误,先开放数据库的远程连接“%”,这个上面服务端配置里说的有方法。然后再打开你 iptables 防火墙配置文件(多半问题都是出现在这里,3306 数据库端口没有对外开放)。

Debian7 的方法(其他的系统请谷歌 iptables 防火墙规则文件位置)

首先打开防火墙规则文件.

vi /etc/iptables.rules

删掉原来的 3306 规则(ACCEPT 和 DROP),然后加上这个规则。

-A INPUT -P tcp -m tcp --dprot 3306 -j ACCEPT

然后重载 iptables 配置文件

iptables-restore < /etc/iptables.rules

Centos6

首先打开防火墙规则文件。

vi /etc/sysconfig/iptables

删掉原来的 3306 规则(ACCEPT 和 DROP),然后加上这个规则。

-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

然后重启 iptables

/etc/init.d/iptables restart

ss-jc14-03


服务端运行提示/日志正常,客户端填写也正确,但是依然无法连接!

这种情况一般都是防火墙搞的鬼(Debian/Ubuntu 基本排除,多出现在 Centos 系统)。

iptables -L

看一下有没有什么东西阻止了 ss 端口,或者说是没有允许/开放 ss 的端口。

如果你看不明白,你可以先关闭防火墙,试一试是不是防火墙的问题导致的无法连接。

/etc/init.d/iptables stop

如果关闭后 SS 链接正常,那就是防火墙的问题,你可以随后慢慢排除防火墙规则。也可以直接 iptables -F 清空防火墙,但是我不建议这么做,一不小心就需要重装服务器了。


如果你的服务端 python 版本在 2.6 以下,那么必须更新 python 到 2.6.x 或 2.7.x 版本


如果运行一段时间后,你发现服务器无法连接,同时 ssh 连上去后,执行

netstat -ltnap | grep -c CLOSE_WAIT

显示的数值很大(超过 50 是严重不正常),那么请修改服务器的最大连接数,如果是 ubuntu/centos 均可修改

/etc/security/limits.conf

添加两行:

soft nofile 32768 
hard nofile 131072

然后重启机器生效(详细的看这个Linux 上的 shadowsocks 服务端优化方法

如果还是出现大量的 too many open files 错误,可以通过执行以下命令确定占用大量文件数的进程:

lsof -n >|awk '{print $2}'|sort|uniq -c |sort -nr|more

转载自 ShadowsocksR 官方 Github 文档:https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup(manyuser)


本站大部分资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费内容,请在下载后 24 小时之内自觉删除,若作商业用途请购买正版;如果有版权争议,请发送邮件至 master@digac.cc(请留下写明原因和文章链接),我们将及时处理,谢谢!

喜欢 (0)
大变态
关于作者:
头像
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 头像
    请教一下这个错误怎么解决 我是对接后端 本地的ssr对接后端成功 第二个对接成功,但是第三个就失败了 提示数据库错误,但是我检查了数据库账号密码,都是正确的 IPv6 support 2016-12-19 16:41:28 INFO util.py:85 loading libcrypto from libcrypto.so.10 2016-12-19 16:41:28 INFO asyncdns.py:324 dns server: [('xxx.61.10.10', 53)] 2016-12-19 16:41:28 INFO asyncdns.py:324 dns server: [('xxc.61.10.10', 53)] 2016-12-19 16:41:30 ERROR db_transfer.py:548 Traceback (most recent call last): File "/root/shadowsocks/db_transfer.py", line 541, in thread_db rows = db_instance.pull_db_all_user() File "/root/shadowsocks/db_transfer.py", line 236, in pull_db_all_user cur.execute("SELECT `node_group`,`node_class`,`node_speedlimit`,`traffic_rate`,`mu_only` FROM ss_node where `id`='" + str(get_config().NODE_ID) + "' AND (`node_bandwidth`<`node_bandwidth_limit` OR `node_bandwidth_limit`=0)") File "/usr/lib/python2.6/site-packages/cymysql/cursors.py", line 133, in execute self.errorhandler(exc, value) File "/usr/lib/python2.6/site-packages/cymysql/cursors.py", line 35, in errorhandler self.connection.errorhandler(self, errorclass, errorvalue) File "/usr/lib/python2.6/site-packages/cymysql/connections.py", line 118, in errorhandler raise errorvalue InternalError: (1054, u"Unknown column 'mu_only' in 'field list'")
    centos lover2016-12-19 16:43 回复 Linux | Chrome 55.0.2883.77
    • 头像
      只是提示数据库密码错误?提示是2002还是2003?
      fuck2016-12-20 11:30 回复 Windows 7 | Chrome 49.0.2623.75