shadowsocks多用户科学上网并实现流量控制
操作系统:Debain 7
2018-12-30更新,每天每隔6小时重启shadowsocks
2018-10-1更新,增加对ipv6的支持
首先,你得有一台能访问外网的vps,假设你已经有了。如果没有的话,可以看这里,然后安装上操作系统。然后,安装python-pip
su root
输入密码
apt-get install python-pip
pip install shadowsocks
小提示:在国内使用pip
时可以使用
pip install -i 国内源(如http://pypi.douban.com/simple/)模块名
加速下载。如果提示需要升级,则根据提示的命令升级即可,如果此过程有其它错误,可上网搜一下解决方案。然后在/etc/
目录下新建一个shadowsocks.json
文件
vim /etc/shadowsocks.json
里面填入下面的内容
{
"fast_open": "false",
"local_address": "127.0.0.1",
"local_port": 1080,
"method": "rc4-md5",
"port_password": {
"8381": “passwd1”,
"8382": "passwd2"
},
"server": "xxx.xxx.xxx.xxx",
"timeout": 300
}
xxx.xxx.xxx.xxx
为你服务器的ip,如果只需要一个账号,把8382那行删除,并且把上一行最后面的逗号删除,如果需要添加多个账号,在8382后面添加上逗号(注意中英文),并在8382下面一行以同样的方式添加一行,注意最后一个不需要逗号。8381,8382是自己设置的端口,可以自己随便换,但是范围要在1024-65535,1024以下的默认是给系统用的,但是也最好别和这些相同 。然后让这段程序在后台执行。
ssserver -c /etc/shadowsocks.json -d start
如果启动失败,请仔细检查shadowsocks.json
里面的内容是否写错。如果此过程如果报错信息跟下面类似
INFO: loading config from ss.json
2016-12-14 22:47:50 INFO loading libcrypto from libcrypto.so.1.1
Traceback (most recent call last):
File “/usr/local/bin/sslocal”, line 11, in
sys.exit(main())
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/local.py”, line 39, in main
config = shell.get_config(True)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py”, line 262, in get_config
check_config(config, is_local)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py”, line 124, in check_config
encrypt.try_cipher(config[‘password’], config[‘method’])
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 44, in try_cipher
Encryptor(key, method)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 83, in init
random_string(self._method_info[1]))
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 109, in get_cipher
return m[2](method, key, iv, op)
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py”, line 76, in init
load_openssl()
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py”, line 52, in load_openssl
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,)
File “/usr/lib/python2.7/ctypes/init.py”, line 375, in getattr
func = self.getitem(name)
File “/usr/lib/python2.7/ctypes/init.py”, line 380, in getitem
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /usr/lib/x86_64-Linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup
请参考这里。然后,我们把上面那个命令加入到开机自启中。我介绍两种方法。其中一种就是往/etc/rc.local
这个文件中写入开机需要执行的命令。但是有可能在/etc/
下面并没有rc.local
这个文件。我们可以手动添加。(Debian 7有而Debian 9没有,大多数最新的发行版都没有了rc.local
这个文件,而稍微老一点的都有这个文件)
cd /etc/
vim rc.local
然后添加下面的内容
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
再给它增加可执行的权限
chmod a+x /etc/init.d/rc.local
启动
systemctl daemon-reload
systemctl start rc-local
如果提示conmand not found
,执行
apt-get install systemd
Debian默认是没有sudo
的,为此,我们可以安装sudo
apt-get install sudo
然后在rc.local
中exit 0
前面写入
sudo /usr/local/bin/ssserver -c /etc/shadowsocks.json -d start
另一种方法是:将shadowsocks
脚本放到/etc/init.d/
下,并在开机时自动启动。
vim /etc/init.d/shadowsocks
里面加入下面内容
#!/bin/sh
### BEGIN INIT INFO
# Provides: shadowsocks
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start shadowsocks
# Description: start shadowsocks
### END INIT INFO
start(){
sudo /usr/local/bin/ssserver -c /etc/shadowsocks.json -d start
}
stop(){
sudo /usr/local/bin/ssserver -c /etc/shadowsocks.json -d stop
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
stop
start
;;
*)
echo "Usage: $0 {start|reload|stop}"
exit 1
;;
esac
增加执行权限
chmod a+x shadowsocks
然后执行
cd /etc/init.d/
update-rc.d shadowsocks defaults
如果没错误的话,在/etc/init.d/rc3.d/
应该有一个以S
开头,含有shadowsocks
的文件。现在,开机应该会自动启动shadowsocks,我们可以重启之后使用
ssserver -c /etc/shadowsocks.json -d start
查看是否开机自启了。注意:请用sudo,或者su的身份执行上面的命令。如果出现
ERROR already start at pid xx
则说明shadowsocks已经开机自启了。
2018-12-30更新 每隔6小时重启shadowsocks,避免由于开机无法自己启动,以管理员权限编辑/etc/crontab文件
vim /etc/crontab
在里面加入如下内容
0 0 * * * root ssserver -c /etc/shadowsocks.json -d resrart
0 6 * * * root /usr/local/bin/ssserver -c /etc/shadowsocks.json -d resrart
0 12 * * * root /usr/local/bin/ssserver -c /etc/shadowsocks.json -d resrart
0 18 * * * root /usr/local/bin/ssserver -c /etc/shadowsocks.json -d resrart
2018-10-1更新
对于教育网用户来说,通常只是对ipv4流量收费,每个月20G看看直播就没了,而ipv6免费,因此我们可以用我们的服务器(要有ipv6地址)进行中转,进而实现校园网免流。这是利用ss中转实现免流的原理(见part0部分)。首先,测试你的网络是否支持ipv6。如不支持,那么这部分对你而言就没有什么用处了。其次,需要vps要有ipv6地址,对于搬瓦工而言,kvm架构的是没有ipv6地址的,可以按这个教程让搬瓦工具有ipv6地址。最后,只需要将上文配置文件中的
"server":"xxx.xxx.xxx.xxx",
改为
"server":"::",
即可,就能实现同时对ipv4和ipv6同时监听,然后重启ss
ssserver -c /etc/shadowsocks.json -d restart
要使用ipv6访问我们的服务器,从而实现免流,我们只需要将后面配置文件中的ipv4地址改为ipv6地址即可,若是手机版的shadowsocks,若需要访问纯ipv6网站(如北邮人,六维空间不支持国外ipv6访问)还要将ipv6路由勾上,并将路由改为全局。
接下来就是多用户流量管理,首先查看是否安装了git
git --version
如果没有
apt-get install git
安装bsp
git clone https://github.com/edboffical/bsp.git
cd bsp
chmod 775 install
./install
运行 bsp --version
,显示版本号,则安装成功。接下来,修改配置文件
vim /etc/byte/byte_ss.json
里面的内容如下
{
"port_limit": {
"8381": "1000",
"8382": "1000"
},
"ress_cmd": "ssserver -c /etc/shadowsocks.json -d restart",
"ssconf_path": "/etc/shadowsocks.json",
"update_time": "3600"
}
很容易看出 ssserver -c /etc/shadowsock.json -d restart
就是重启shadowsocks的命令,/etc/shadowsocks.json
就是配置文件所在位置。上述意思就是当端口8381的流量或者8382的流量超过1000m时,自动执行shadowsocks重启命令,并会删除配置文件shadowsocks.json
中的8381,8382两个端口所在那一行,每隔3600s执行一次检测,这样,便实现了多用户流量控制。请务必至少保留一个端口。然后,启动
bsp -r
bsp --start
可以先把限制设置小一点,测试是否有效果,如果没有效果,试试在配置文件中的ssserver
前面加入sudo
试试,然后把这个动作写到开机启动中。
vim /etc/rc.local
在sudo /usr/local/bin/ssserver -c /etc/shadowsocks.json -d start
后面加入
sudo bsp -r
sudo bsp --start
本人在测试时将bsp -r
删掉,发现开机时无法执行bsp --start
这条命令
这时服务器上的工作基本就算完了,接下来就是在客服端做相关配置。
shadowsocks下载地址
安卓
windows
ios
图形化的设置很简单,不多说了,可以参考这里
说一下,Linux下的配置,同服务器一样,安装好shadowsocks
,将
sslocal -s xxx.xxx.xxx.xxx-p 8382 -k "passwd" -l 1080 -t 600 -m rc4-md5
写到一个脚本里面,并增加执行(x)权限,请将上面的换相关的东西换成你自己的配置。加入到rc.local
中或者在图形界面设置里面找到开机自启项,将这个脚本添加到里面。
最后是Linux浏览器的设置,在chrome里面,先找一个免费的vpn挂上,搜索插件SwitchyOmega
设置如下rules list url :https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
然后点击Download Profile Now,再Applay changes即可,上网时选择Auto-Switch即可实现自动翻墙
如果在这个过程中遇到了其它问题,欢迎在评论区留言,或者Google一下,也欢迎把具体的解决方法留在评论区,以供后来者参考
欢迎转载,不需注明出处,就说是你写的
参考:
- https://wiki.archlinux.org/index.php/Shadowsocks_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
- http://blog.51cto.com/qujunorz/1868602
- http://forum.ubuntu.org.cn/viewtopic.php?f=86&t=481439
- https://blog.csdn.net/fly542/article/details/8248020
- https://stackoverflow.com/questions/44797694/where-is-rc-local-in-debian-9-debian-stretch?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
- http://www.firemail.wang:8088/forum.php?mod=viewthread&tid=9088
- https://blog.xavierskip.com/2015-02-02-shadowsocks-init/
- https://blog.csdn.net/tuzhenlei/article/details/79005926
- https://blog.csdn.net/lambert310/article/details/52412059
- https://askubuntu.com/questions/988266/systemctl-command-not-found-on-ubuntu-16-04?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
- https://www.denpe.com/debian-autorun/
- https://www.bandwagonhost.net/2161.html
- https://blog.csdn.net/DesmondCobb/article/details/75600559
Приветик всем, я тут новенький “352”
всем привет 789
hi 🙂 bross 🙂
i am from Italy hello. Can you help me translate? /rardor
@rardSmuff Hello, I don’t understand Italian, maybe you can try Google Translate, or use Google Chrome, Google Chrome has a translation function