自己搭建了一个 SS 服务器以后,自然而然的会同身边的朋友共享。自然,身边的朋友一起用,大部分服务器配置都可以毫无压力的支撑。但倘若一传十十传百,最后成百上千的人一起用一个服务器,那就撑不住了。 当然你可以隔一段时间换一次密码,但是后面的麻烦事也不少(要同步更新不同设备上的设置,身边的朋友来问你新设置)。 几天我研究了一下,为 ss 服务器增加了多用户即为每个用户设置独立的连接数限制的方法,这样能够比较完美的解决同朋友共享服务器的问题了。
这里默认你已经知道怎么按照通常的方法安装和配置 SS 了。如果你不了解的话,网络上的文章很多的。
1 多用户的实现
多用户的实现比较简单,Python 和 Go 实现的服务器自带多用户支持。通常的配置我们一般是这么写
1 | { |
只需要将配置文件按照下面的方式进行修改就可以实现多用户了。
1 | { |
就可以了。之后不同的用户可以通过不同的端口访问,而每个端口都有独立的密码。
Further Reading: Reference
2 限制用户连接
我在网上调查了一下实现限制用户连接的方法,很多都提到了通过iptables
来进行设置。但是这种方法太过复杂,很容易出问题。后来我找到一个 ss 的补丁,可以比较好的解决这个问题。补丁地址是falssen/PySocket。 这个工程提供了一些其他的功能,但是我们这里只关注Limit_Clients
文件夹下的socket.py
这个文件。这个文件的原理是利用 Python 包导入的机制,用自定义的socket.py
来替换默认的socket
包,并在socket
接口中植入一些新的功能。 按照 > 有很多朋友不知道这里要怎么处理 socket.py 文件。其实并不复杂。用READMe.md
的提示安装好socket.py
文件which
命令查看一下 ss 脚本安装的位置,一般情况下是/usr/local/bin/
,那么你只需要把socket.py
文件放到/usr/local/bin
下面就行。这一操作的原理是,python 在导入包时总是先检查当前目录。注意,如果修改了socket.py
文件,需要重启进程才能生效。
然后修改文件中white_list
和black_list
两个变量。例如我自己使用的1017
端口,我不希望添加限制,则将white_list
设置为
1 | white_list = [1017] |
我给朋友们用的是[1018]端口,我希望这个端口的连接数不要超过 40 个,则将black_list
设置为
1 | black_list = {1018:40} |
3 注意
注意方法的实质是限制接入的客户端 IP 数量,因此,处在同一路由器下面的多台设备也会被识别为一台。
4 更多阅读
- Shadowsocks 中继:从 IPv4 到 IPv6: 目前防火墙越加越高,遇到重大事件的时候,很多梯子都会挂掉。不过,有个好消息是,因为 IPv6 网络在国内的普及率还不高,因此 IPv6 还没有被特别针对。如果你有 IPv6 资源(一般教育网支持 IPv6),可以将 Shadowsocks 通信从 IPv4 转化成 IPv6 再出去,会更加安全可靠一些。
- Shadowsocks 性能优化
- Shadowsocks 上手配置