SS我就不打全了,懂的都懂。
自己搭建了一个SS服务器以后,自然而然的会同身边的朋友共享。自然,身边的朋友一起用,大部分服务器配置都可以毫无压力的支撑。但倘若一传十十传百,最后成百上千的人一起用一个服务器,那就撑不住了。
当时你可以隔一段时间换一次密码,但是后面的麻烦事也不少(要同步更新不同设备上的设置,身边的朋友来问你新设置)。
几天我研究了一下,为ss服务器增加了多用户即为每个用户设置独立的连接数限制的方法,这样能够比较完美的解决同朋友共享服务器的问题了。
这里默认你已经知道怎么按照通常的方法安装和配置SS了。如果你不了解的话,网络上的文章很多的。
多用户的实现
多用户的实现比较简单,Python和Go实现的服务器自带多用户支持。通常的配置我们一般是这么写
{
"server": "::",
"server_port": "8888",
"password": "yourpassword"
// Other configs
}
只需要将配置文件按照下面的方式进行修改就可以实现多用户了。
{
"server": "::",
"port_password": {
"8881": "password1",
"8882": "password2",
"8883": "password3"
}
// other configs
}
就可以了。之后不同的用户可以通过不同的端口访问,而每个端口都有独立的密码。
限制用户连接
我在网上调查了一下实现限制用户连接的方法,很多都提到了通过iptables
来进行设置。但是这种方法太过复杂,很容易出问题。后来我找到一个ss的补丁,可以比较好的解决这个问题。补丁地址是falssen/PySocket。
这个工程提供了一些其他的功能,但是我们这里只关注Limit_Clients
文件夹下的socket.py
这个文件。这个文件的原理是利用Python包导入的机制,用自定义的socket.py
来替换默认的socket
包,并在socket
接口中植入一些新的功能。
按照READMe.md
的提示安装好socket.py
文件,然后修改文件中white_list
和black_list
两个变量。例如我自己使用的1017
端口,我不希望添加限制,则将white_list
设置为
white_list = [1017]
我给朋友们用的是[1018]端口,我希望这个端口的连接数不要超过40个,则将black_list
设置为
black_list = {1018:40}
注意
现在的程序在一些条件下可能会出现Bug,关于Bug的问题,我在原工程中创建了一个Issue来说明,你们可以参考Issue #14来看看能否解决你遇到的问题。
网友评论