ShadowsocksR MudbJSON版的多端口单用户配置

  • By 毕勤
  • Mon 25 February 2019

网上最早的也最权威的关于SSR单端口多用户的配置是破娃酱写的,虽然文章已经被删了,但用archive还是可以看到的,只是文章有些地方写的还不够细致,容易产生误解。最近自己刚好也在尝试这个配置,重新记录并说明一下,方便以后查看。

首先明确一下,这里只讨论MudbJson版的单端口多用户配置,机场用的SSPanel不在此讨论范围。其实MudbJson是一个非常适合少数几个人一起搭建小机场的配置方式,在保证多用户特性的情况下没有多余的附加组件,可以给不同用户数设置限速和限流量等参数,即使有多个服务器节点存在,也只需要在各个服务期间同步一个json文件就可以了。

单端口多用户的目的是什么?是集中服务器的端口使用,避免大量开放端口,一个服务器同时开放几百个TCP端口同时都还有不小的数据量,这不用分析都可以猜到是干啥的。而把端口隐藏到443,995这样的常用服务端口上并配合一定的混淆,相对会增加一点探测难度。

先直接看配置文件:

[
{
"d": 0,
"enable": 1,
"method": "none",
"obfs": "tls1.2_ticket_auth",
"passwd": "JKlzs)9j",
"port": 995,
"protocol": "auth_chain_b",
"protocol_param": "#",
"transfer_enable": 9007199254740992,
"u": 0,
"user": "995"
},
{
"d": 16668442,
"enable": 1,
"method": "none",
"obfs": "tls1.2_ticket_auth",
"passwd": "R=KA2VmQ",
"port": 100002,
"protocol": "auth_chain_b",
"transfer_enable": 9007199254740992,
"u": 673936,
"user": "100002"
}
]

先建立一个默认的用户,为了方便,我们默认吧用户ID和用户端口写成一样的,这里就是995用户,这个用户最明显的特征,就是protocol param是“#”,这样的参数用于标识这是个默认用户,但这个用户是不可用的,因为protocol param只写个“#”是无效的。

然后再新建一个用户,用户ID大于65535,同样的端口也大于65535,因为大于65535的端口都是不存在的,所以表示这是个单端口多用户账户,这个用户的加密混淆这些东西可以和默认用户一样也可以随便写,因为这些都是被忽略的。除了用户端口,密码之外,一切都使用默认用户的配置。

所以,这里的100002用户,需要使用默认用户的端口、密码、协议、混淆方式来连接SSR服务器,后面添加的其他用户也是一样,那么连密码都一样的话怎么区分不同的用户呢?那就需要使用protocol param了,protocol param就是这个用户的ID和密码的组合,即 100002:R=KA2VmQ。使用auth_chain_*协议的话,即使使用相同的密码,但只要protocol param不同,不同用户间的数据也是不可互相解密的。