增强限制用户 IP 数/设备数

支持限制连接 IP 数的后端

若使用中转,需确保后端能够正确获取到用户的真实 IP,否则将无法进行限制

后端

v2ray

trojan

ss

ssr

支持限制连接设备数的后端

只有 ssr 的协议单端口设计了此项功能,其他协议不支持

后端

ssr

什么是增强限制用户的 IP 数/设备数

普通的限制方式只能做到单节点下进行限制,因为节点之间并不互相通信,A 节点无从得知用户是否在访问 A 以外的其它节点。

soga 在 v2.1.4 版本增强了该功能,可做到所有节点进行限制用户同时连接的 IP 数/设备数。

一、安装 redis

只需在任意一台服务器安装一个 redis 即可,需开启公网访问,并设置密码

CentOS

yum install epel-release -y
yum install redis -y

Ubuntu/Debian

apt install redis-server -y

配置 redis

CentOS

# 清空 redis 配置文件
echo "" > /etc/redis.conf
# 设置 redis 公网可访问
echo "bind 0.0.0.0" >> /etc/redis.conf
# 设置 redis 端口,建议设置一个随机端口
echo "port 12345" >> /etc/redis.conf
# 设置 redis 密码,为确保安全,请设置一个较长的随机密码
echo "requirepass fgsdfgasgdfui" >> /etc/redis.conf

Ubuntu/Debian

# 清空 redis 配置文件
echo "" > /etc/redis/redis.conf
# 设置 redis 公网可访问
echo "bind 0.0.0.0" >> /etc/redis/redis.conf
# 设置 redis 端口,建议设置一个随机端口
echo "port 12345" >> /etc/redis/redis.conf
# 设置 redis 密码,为确保安全,请设置一个较长的随机密码
echo "requirepass fgsdfgasgdfui" >> /etc/redis/redis.conf

启动 redis 并设置开机自启

systemctl start redis
systemctl enable redis

二、配置 soga

配置名

默认值

说明

redis_enable

false

是否开启 redis 缓存

redis_addr

redis 地址,格式:aaa.com:12345

redis_password

redis 密码

redis_db

0

redis 数据库编号,默认 0,无需更改

conn_limit_expiry

60

缓存在线 IP 的时间,单位:秒

redis_enable=true
redis_addr=aaaa.com:12345
redis_password=xxxx
redis_db=0
conn_limit_expiry=60
# 若面板不支持限制用户连接数,还需设置此项,表示每名用户最多同时连接多少IP/设备
user_conn_limit=2

三、常见问题

redis 服务掉线会不会影响用户使用

不会影响用户正常使用,但是增强限制 IP 数/连接数就会失效,会退回到单节点限制,直到 redis 服务再次可访问,此过程为自动切换,无需关心。你需要确保的就是 redis 服务能正常访问。

conn_limit_expiry 具体含义是什么

该值为缓存在线 IP/设备的时间,单位:秒。简单解释:当用户IP数/设备数刚好达到限制后,想切换 IP/设备使用时,大约需要等待的时间(从之前连接的IP/设备断开后开始计算)。

该值不宜设置得过小,60 作为默认值可能不一定合适,请根据你的实际情况进行调整。

我有多个面板/多种后端,需要安装多个 redis 吗

不需要,redis 默认配置下有 16 个数据库编号可以使用,编号分别是 0-15,将编号分开即可。

我有多个面板/多种后端,怎么让他们一起全局限制

数据库编号可以理解为全局限制的分组,需要哪些一起限制,将它们放进一个分组即可。