用户名  找回密码
 立即注册
帖子
热搜: 活动 交友 discuz

SS服务端如何设置客户端单账号同时登陆数量?

[复制链接]

13

主题

268

回帖

597

积分

高级会员

积分
597
发表于 2015-9-28 22:05:00 | 显示全部楼层
除非给SS加上用户认证流程,现在这样的ss很难做到限制IP地址的。
回复

举报

11

主题

580

回帖

1241

积分

金牌会员

积分
1241
发表于 2015-9-28 22:18:30 | 显示全部楼层
编译iptables模块,对端口连接ip记录,输出保存记录,模块限制多少个ip连接。
这个是真实有的!
回复

举报

10

主题

204

回帖

442

积分

中级会员

积分
442
 楼主| 发表于 2015-9-28 22:21:02 | 显示全部楼层
ss没办法加认证的,因为要保证从第一个字节开始就是混淆的,这个feature已经被作者reject掉了。

记录IP也没办法保证,现在电信 移动 长宽 都共享IP,还有很多因素orz
回复

举报

90

主题

1693

回帖

3740

积分

论坛元老

积分
3740
发表于 2015-9-28 22:21:07 | 显示全部楼层

liuchao0130 发表于 2015-10-3 21:23

一群扯淡的 ,不会做装会做  全扯。。我也是醉了。。根本就无法实现好吧

不懂装懂难道不是你?
154375446 发表于 2015-10-3 10:53

编译iptables模块,对端口连接ip记录,输出保存记录,模块限制多少个ip连接。
这个是真实有的! ...

限制端口并发数很简单,IPTABLES就能搞定了,假设你要限制端口8989的IP最大连接数为5,两句话命令:
iptables -I INPUT -p tcp --dport 8989 -m connlimit --connlimit-above 5 -j DROP
iptables -I OUTPUT -p tcp --dport 8989 -m connlimit --connlimit-above 5 -j DROP

保存IPTABLES规则即可,其他端口以此类推。

限速的话可以用TC完成。
回复

举报

71

主题

914

回帖

2095

积分

金牌会员

积分
2095
发表于 2015-9-28 21:40:00 | 显示全部楼层

破论坛早晚出事 发表于 2015-9-28 21:23

所以求大牛出来解答

限制端口并发数很简单,IPTABLES就能搞定了,假设你要限制端口8989的IP最大连接数为5,两句话命令:
iptables -I INPUT -p tcp --dport 8989 -m connlimit --connlimit-above 5 -j DROP
iptables -I OUTPUT -p tcp --dport 8989 -m connlimit --connlimit-above 5 -j DROP

保存IPTABLES规则即可,其他端口以此类推。

限速的话可以用TC完成。
回复

举报

1

主题

14

回帖

37

积分

新手上路

积分
37
发表于 2015-9-28 23:28:34 | 显示全部楼层

破论坛早晚出事 发表于 2015-9-28 21:23

所以求大牛出来解答

命令基于centos系统
回复

举报

10

主题

204

回帖

442

积分

中级会员

积分
442
 楼主| 发表于 2015-9-28 22:21:00 | 显示全部楼层

破论坛早晚出事 发表于 2015-10-8 18:06

我去。厉害,但是怎么自动限制SS端口呢?每一个人端口不同,手动添加要累死啊 ...

这个我就爱莫能助了,要程序上才能实现吧。
回复

举报

9

主题

564

回帖

1191

积分

金牌会员

积分
1191
发表于 2015-9-28 22:22:00 | 显示全部楼层

liuchao0130 发表于 2015-10-8 18:28

一个IP的最大连接数 是IP数吗??  你限制为5你知道是什么意思吗??

限制该端口每个IP发起的连接数
回复

举报

23

主题

354

回帖

831

积分

高级会员

积分
831
发表于 2015-9-29 03:30:12 | 显示全部楼层

liuchao0130 发表于 2015-10-8 18:29

你懂,那你来个合理的解决方法呀~~

我的方案都是卖钱的,你有钱可以来找我

部分代码在这
.....
if (passOnlinenum[KEY] === undefined || passOnlinenum[KEY] === null) {
    inbound[KEY] = 0;
    outbound[KEY] = 0;
    passIP[KEY] = [];
    passIP[KEY].push(curIP);
    passOnlinenum[KEY] = 1;
    passSession[curIP] = 0;
    var getusername = KEY.split(';');
    utils.info("New User: " + getusername[0] + " Online[" + passOnlinenum[KEY] + "]  From: " + curIP);
} else

{

    if (passIP[KEY].indexOf(curIP) === -1) {
        if (passOnlinenum[KEY] >= 2) { //max IP
            if (connection) {
                connection.destroy();
            }
            utils.info("Login Rejected (Maximum Number of Sessions Reached): " + KEY + "   From: " + curIP) return;
        }
.....

思路就是这个,也不是什么高级货,不过看得懂看不懂就看你水平了

你实现不了不代表别人不行从头看到尾
说用iptables的,有可能没用过多服务器多用户,iptables解决不了这问题
说自己重写python的,不懂py不敢枉下结论

限制同时连接的客户个数,涉及到用户连接状态的认证,就是程序得确认用户当前连接还是没连接?,连接了几个?而这个对于现有已经定型的ss来说是很困难的,因为,它本身设计的就是没有连接状态。

所以以上讨论的绝大部分思路是死胡同。

现在的解决办法是前面加一个类似ra的门槛限制同时进入的不同ip个数,但是效果距离使用ra认证未批恩那样相差还很远,原因就是ss没有持续的连接状态,没有办法绝对的确认用户是否在线,如果要做到精确,会涉及到频繁轮询所有的服务器连接信息,这对于有大量服务器和大量用户端口的多用户系统来说会变的很麻烦,最终会得不偿失。
回复

举报

90

主题

1693

回帖

3740

积分

论坛元老

积分
3740
发表于 2015-9-28 22:21:00 | 显示全部楼层

buzz 发表于 2015-10-9 16:19

从头看到尾
说用iptables的,有可能没用过多服务器多用户,iptables解决不了这问题
说自己重写python的,不 ...

这个说法点中要害
SS目的就不是商业化,初衷个人使用,后衍变成分布式
像这位说的1是认证以及握手,2是认证中心节点(NAS+radius)或者轮询服务器
我补充一个3握手阶段是用明文还是加密?如果这都要加密和混淆,那干脆复用端口也做了吧,变身SS扶墙
哪位做一个符合以上特征的SS协议出来,带我飞飞飞飞飞飞飞飞
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2025-2-26 07:39 , Processed in 0.023672 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表