Sunday, January 8, 2017

ShadowsocksR单端口多用户配置方法

此文更新于2017-02-21,如你早于这个时间部署,可能要升级后端

如果你要尝试这个新功能,首先把服务端和客户端均更新到最新,客户端C#需要4.0.5版或以上,SSR-android需要3.3.3版本或以上。

第一部分:直接修改服务端配置文件大法,仅适用于使用单用户配置的情况
首先是服务端的配置
服务端把协议(protocol)配置为 auth_aes128_md5 或 auth_aes128_sha1,然后在协议参数(protocol_param)配置所有可用的用户id及其密码,示例如下:

        "protocol": "auth_aes128_sha1",
        "protocol_param": "64#12345:breakwa11,233:zhihuyaowan",

含义:
在#前面的表示每个用户的最大客户端数,照着写这个值或者不填都可以,但必须有#号。在#后,以英文逗号分隔所有的用户,而英文冒号的前面是用户的id,注意这个id必须是范围在 1~2147483647之间,后面的是用户的密码,密码不能有特殊符号,建议仅使用数字和大小写字母

然后是客户端的配置(此处配置同样适合下文的其它配置模式
客户端方面非常简单,需要使用用户id为12345的连接,那么在客户端的协议参数(protocol_param)里面填写 12345:breakwa11 就行了,如果使用id为233的同理,其它参数服务端怎么配置的就怎么写

那既然多用户可以单端口了,那能不能做得更像一个网站?完全可以的,如果是http的话,服务端安装一个nginx之类,把端口开在8080(监听127.0.0.1),然后SSR的端口开在80,同时在SSR的user-config.json里修改参数 "redirect" : "127.0.0.1:8080", 这时,直接用浏览器打开,就可以直接看到你开的网站了,而改成用SSR客户端连接就成了服务端了。不过注意的是这时候最好要开相应的混淆哦ヽ(´▽`)ノ

目前这个是刚出的功能,还在测试中,后端和面板还没有相应的支持,也没有流量控制等,建议几个人自己合玩的时候可以这样用,特别地在某些学校或公司这个功能非常好用的哦。

第二部分:使用mudbjson模式配置(适合单服务器多人合用或试用服务器)
2017-02-21更新:
现mudbjson模式多用户已支持,简要说明如下:
首先先创建对应的用户id,如果这个id大于65535,那么此用户仅用于多用户模式,小于等于65535时会同时监听这个端口。然后创建多用户端口,相应的protocol_param里就填写"#"就行了,以下是配置示例:

[
    {
        "d": 0,
        "enable": 1,
        "method": "aes-128-cfb",
        "obfs": "tls1.2_ticket_auth_compatible",
        "passwd": "vwHF%35j",
        "port": 12345,
        "protocol": "auth_aes128_sha1",
        "protocol_param": "#",
        "transfer_enable": 1125899906842624,
        "u": 0,
        "user": "12345"
    },
    {
        "d": 0,
        "enable": 1,
        "method": "aes-128-cfb",
        "obfs": "tls1.2_ticket_auth_compatible",
        "passwd": "E&iWmlxu",
        "port": 10001,
        "protocol": "auth_sha1_v4",
        "transfer_enable": 536870912,
        "u": 0,
        "user": "10001"
    },
    {
        "d": 0,
        "enable": 1,
        "method": "aes-128-cfb",
        "obfs": "tls1.2_ticket_auth_compatible",
        "passwd": "4~fGiKeY",
        "port": 100002,
        "protocol": "auth_sha1_v4",
        "transfer_enable": 10737418240,
        "u": 0,
        "user": "100002"
    }
]


在以上例子中,端口12345是多用户端口(可看成一个公共用户,但无法直接使用),有两个子用户,一个是10001,一个是100002,而10001用户,既可以使用10001端口,也能通过多用户方式使用12345端口。而100002用户只能使用端口12345。在使用端口12345时,实际的使用流量会统计到10001或100002上。注意的是用户10001在配置客户端使用多用户端口12345的话,配置密码为"vwHF%35j",即除了协议参数均填写此端口的配置,仅协议参数改为"10001:E&iWmlxu"即可。

其它:在使用mujson_mgr.py脚本添加协议参数时请使用-G且参数使用英文双引号包起来
如有不明白可留言问

第三部分:使用面板支持(适合站长多服务器下使用)
2017-01-24更新:
现在已经有支持此单端口多用户的面板及相应的后端,具体参见 https://github.com/esdeathlove/ss-panel-v3-mod

2017-02-21更新:
如果使用老面板,包括sspanel和WHMCS等,后端更新到最新后,那么可以在user-config.json内,修改或添加如下字段
"additional_ports" : {
    "6666": {
        "passwd": "pubpassword",
        "method": "aes-128-ctr",
        "protocol": "auth_aes128_md5",
        "protocol_param": "#",
        "obfs": "tls1.2_ticket_auth_compatible",
        "obfs_param": ""
    }
},
其中6666是那个端口(如果要设置多个,就additional_ports内再添加一个,注意逗号分隔),protocol必须为auth_aes128_md5或auth_aes128_sha1,protocol_param只需且必须写一个#。(直接复制以上内容时记得修改密码配置)

第四部分:高级端口转发
如果设置多个多用户端口,想设置不同端口不同的转发规则以最大化伪装为其它服务,例如开了80端口和443端口作为多用户端口(以additional_ports方式作为示例):
"additional_ports" : {
    "80": {
        "passwd": "pubpassword",
        "method": "aes-128-ctr",
        "protocol": "auth_aes128_md5",
        "protocol_param": "#",
        "obfs": "tls1.2_ticket_auth_compatible",
        "obfs_param": ""
    },
    "443": {
        "passwd": "pubpassword",
        "method": "aes-128-ctr",
        "protocol": "auth_aes128_md5",
        "protocol_param": "#",
        "obfs": "tls1.2_ticket_auth_compatible",
        "obfs_param": ""
    }
},
同时本地的nginx/apache开启端口1080和1443,那么在user-config.json里修改如下参数:
"redirect" : ["*:80#127.0.0.1:1080", "*:443#127.0.0.1:1443"],

配置好后,直接访问80或443端口,将是个正常的网站,用SSR去连接则为代理服务。
其它:nginx的rewrite规则默认会使用监听的端口,这时会导致rewrite有问题,需要指定一下端口号

125 comments:

  1. 越来越DIO
    (⁄ ⁄•⁄ω⁄•⁄ ⁄)

    ReplyDelete
  2. 小姐姐车技越来越接近秋名山车神了

    ReplyDelete
  3. 赞!不知性能如何

    ReplyDelete
  4. 我爱姐姐,真高手!

    ReplyDelete
  5. 非常感谢,辛苦分享的SSR。谢谢

    ReplyDelete
  6. 像一层伪装,非ssr访问,是http或https服务。ssr访问是翻墙

    ReplyDelete
  7. 这个功能很棒,点赞

    ReplyDelete
  8. 那1000002连接的时候到底密码是哪个呢?端口填哪个呢?

    ReplyDelete
    Replies
    1. 只能用12345端口,密码写12345的,同时要写上协议参数

      Delete
    2. 那这个东西个人觉得在某种程度上就没意思了。拿来共享给一般朋友的时候本来希望通过这个实现隐藏真实端口的并且单独统计流量的,看样子不行了。而且给别人用的时候这个各种参数配置越来越麻烦了。。。。。

      Delete
    3. 你在开玩笑吧?真实端口怎么可能隐藏?而且这里本来就是单独统计流量啊。至于说麻烦,直接扫码或复制一下SSR链接不就好了,为什么要自己填呢

      Delete
  9. 1. "transfer_enable": 10737418240 是干什么 ?
    2.100002用户只能使用端口12345。没看出配置的差别……为什么100002不能使用100002端口

    ReplyDelete
    Replies
    1. 因为没有100002这种端口

      Delete
    2. transfer_enable是可以使用的总流量,单位是字节

      Delete
    3. 能不能不限制流量呢?自用服务器只是分享几个朋友,这里写0?还是写个永远用不到的流量lol

      Delete
    4. 默认值1125899906842624等于1024T或1P,如果你每秒10M不停的用,也要跑三年,如果每秒1M,那得跑三十年。如果写0,那么等于禁用了

      Delete
  10. 稍微尝试了一下,提出两点想法:
    1.如果知道密码但是不知道协议参数,第三方能否对数据包进行解密?
    2.能否让各用户使用不同的密码?(懒癌末期)

    ReplyDelete
    Replies
    1. 目前主要在探索可行性和隐匿性,密码学上的安全性如果要考虑的话有点麻烦,所以现在的实现是可以解密大部分数据,但关键的认证和偏移无法解密,除非知道协议参数的密码
      协议参数上的密码各用户不同,端口上设置的加密密码只能每人都一样

      Delete
  11. 在不打算让用户使用公共端口之外的端口时,我发现把配置文件删到只剩下d,enable,transfer_enable,u,user这几个也可以用,所以能不能新增一种添加用户的方式,使得添加用户时只需要输入协议参数,可用流量和用户id?
    大姐姐辛苦了...

    ReplyDelete
    Replies
    1. 你如果用命令来添加,那你只需要指定端口,其它全部默认值给你填好,密码随机(所以这种添加方式一直都有,你为什么要手动改)

      Delete
    2. 大概明白你的意思了,这东西优先级很低,要么你做了发PR,要么等我做完别的再说

      Delete
  12. This comment has been removed by the author.

    ReplyDelete
  13. "protocol_param": "#10001:breakwa11,100002:zhihuyaowan",这里#前面不填数字默认的是多少个用户?后面写多少就是多少?2147483647?
    更新的三段总结一下,不知理解是否正确。
    第一段:特征是passwd:vwHF%35j、port:12345和协议参数.两个用户10001和100002,每个用户必要填协议参数才行;
    第二段:特征是user:10001、passwd:E&iWmlxu和port:10001。用户10001除了可以使用第一段中的方法,也可以在客户端更改端口和密码,不填协议参数。因为id小于65535,端口port:10001存在。
    第三段:特征是user:100002、passwd:4~fGiKeY和port:100002。虽然形式上和第二段相似,但是因为“id大于65535,那么此用户仅用于多用户模式,小于等于65535时会同时监听这个端口”这个条件,所以用户ID为100002的不能像10001用户一样被监听,不存在port:100002这个端口。
    ID小于等于65535的用户,设置的端口一定要和ID一致吧。
    不知理解是否有偏差?

    ReplyDelete
    Replies
    1. #号前面不填默认是64,后面的port想写多少就多少

      10001用户如果使用端口10001,就要按照10001的配置使用auth_sha1_v4协议

      配置文件中ID只是为了方便记忆和针对性使用命令用的,如果你需要的话。ID本身没有任何意义,程序里只管唯一的编号port。也建议直接用-p命令,不需要使用-u

      你的其它理解应该都是正确的

      Delete
  14. 能不能实现查看用户打开的连接???

    ReplyDelete
    Replies
    1. 服务端可以显示每个连接的连接信息,但如果要具体到哪个用户,服务端还没做这个功能,之后会补充

      Delete
  15. 看了大大的单端口多用户,非常开心,大大辛苦了,我按照您的要求设置了2个用户,可以通过最新的3.3.3安卓客户端在填写了协议参数后同时连接使用,但是我发现在路由器上的客服端却没有协议参数填写的地方,以前那种通过直接填写密码登录的方式已经连接不上了,请问是不是路由器的客服端也要更新?以后登录的方式都需要通过协议参数填写的方式连接?在使用一天以后我的两个账户中的一个不能连接了,另一个却使用的很好,不知道为什么?求大大解答!谢谢!

    ReplyDelete
  16. 看了大大的单端口多用户,非常开心,大大辛苦了,我按照您的要求设置了2个用户,可以通过最新的3.3.3安卓客户端在填写了协议参数后同时连接使用,但是我发现在路由器上的客服端却没有协议参数填写的地方,以前那种通过直接填写密码登录的方式已经连接不上了,请问是不是路由器的客服端也要更新?以后登录的方式都需要通过协议参数填写的方式连接?在使用一天以后我的两个账户中的一个不能连接了,另一个却使用的很好,不知道为什么?求大大解答!谢谢!

    ReplyDelete
    Replies
    1. 路由器版本你需要等开发者更新,使用多用户的端口时,必须都要填写协议参数

      不能连接的问题你查看一下log看看,因为文章里的配置文件示例那两个用户的可使用流量一个是1G,一个是0.5G,你照抄的话会导致很快超流量就会停止

      Delete
    2. 我是用您的第一种方法添加的就是 "protocol": "auth_aes128_sha1",
      "protocol_param": "64#12345:breakwa11,233:zhihuyaowan",这个样子好像没有流量限制吧?查看了下日志,也没看出来所以然,就直接重新安装了,还是按照老样子设置的2个用户,又能够正常连接了,先看看吧,如果过2天又有一个用户无法连接的话,再来请教您!谢谢~

      Delete
  17. 为什么BitTorrent Sync同步不了客户端呢

    ReplyDelete
  18. {
    "server": "0.0.0.0",
    "server_ipv6": "::",
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "timeout": 120,
    "udp_timeout": 60,
    "obfs": "tls1.2_ticket_auth_compatible",
    "obfs_param": "",
    "dns_ipv6": false,
    "connect_verbose_info": 0,
    "redirect": "",
    "fast_open": false
    [
    {
    "d": 0,
    "enable": 1,
    "method": "chacha20",
    "obfs": "http_simple",
    "passwd": "12345678",
    "port": 8080,
    "protocol": "auth_aes128_sha1",
    "protocol_param": "#80:fuckgfw,20170116:fuckgfw",
    "transfer_enable": 1125899906842624,
    "u": 0,
    "user": "8080"
    },
    {
    "d": 0,
    "enable": 1,
    "method": "chacha20",
    "obfs": "http_simple",
    "passwd": "123456789",
    "port": 80,
    "protocol": "auth_sha1_v4",
    "transfer_enable": 5368709120000,
    "u": 0,
    "user": "80"
    },
    {
    "d": 0,
    "enable": 1,
    "method": "chacha20",
    "obfs": "http_simple",
    "passwd": "1234567890",
    "port": 20170116,
    "protocol": "auth_sha1_v4",
    "transfer_enable": 107374182400000,
    "u": 0,
    "user": "20170116"
    }
    ]
    }

    能帮我看下我这个配置文件哪里有错么?没碰过linux,以前就靠着google搭了个一键包ssr,实在是有点吃力。我用python mujson_mgr.py -a -p 这样子弄了3个端口,80,8080,20170116。用./tail.sh显示错误 delimiter: line 14 column 1 (char 317)
    谢谢了

    ReplyDelete
    Replies
    1. 你搞错了,后文说的是mudbjson方式,需要使用命令行添加用户,请看wiki
      配置文件中不支持写后文的内容

      Delete
    2. 这样子啊,完全用python mujson_mgr.py来完成配置?那你这个配置示例是哪个文件里呢?

      Delete
    3. 啊,找到了,谢谢,我先试试

      Delete
    4. "d": 1877367
      "u": 142252,
      这两行是什么含义呢?
      谢谢

      Delete
    5. 上传和下载的字节数

      Delete
    6. 嗯嗯,谢谢了
      win版和安卓版用同一个配置同时连接成功了
      还有一个问题,我开了3个端口,80,8080,20170117
      8080是设置成多用户端口,20170117只能用8080连接,但是80端口可以同时用8080和80端口连,用80端口连接时,可以不填协议参数是这个意思吧?但是我实际测试时,直接用80端口连接不成功,不管加不加参数,反倒是我另外开了个9020端口,没有加入第一个多用户端口8080的协议配置中,直接成功了。

      Delete
    7. 检查你的80端口有没有异常,包括防火墙,及LOG有没有错误,以及配置正不正确

      Delete
  19. This comment has been removed by the author.

    ReplyDelete
  20. 2017-01-17 18:43:21 INFO asyncdns.py:324 dns server: [('108.61.10.10', 53)]
    2017-01-17 18:43:21 INFO shell.py:80 ShadowsocksR 3.0.2 2017-01-08
    2017-01-17 18:43:21 INFO db_transfer.py:227 current process RLIMIT_NOFILE resource: soft 512000 hard 512000
    2017-01-17 18:43:21 ERROR db_transfer.py:244 Traceback (most recent call last):
    File "/root/shadowsocksr/db_transfer.py", line 237, in thread_db
    rows = db_instance.pull_db_all_user()
    File "/root/shadowsocksr/db_transfer.py", line 351, in pull_db_all_user
    import cymysql
    ImportError: No module named cymysql

    昨天晚上还没问题,今天准备部署nginx加SSR试试,还没安装LNMP,刚部署完SSR测试出这个问题,求解~感觉步骤和昨天一样没区别啊

    ReplyDelete
    Replies
    1. 麻烦看看wiki,你步骤少了

      Delete
    2. 找到问题了,wiki里这段
      shadowsocksr目录内,对config.py里以下内容进行相应修改:

      我改了apiconfig.py
      应该是改userapiconfig.py

      Delete
    3. 又来麻烦你了,有个疑问,我nginx监听8888端口,然后user-config.json设置redirect 127.0.0.1:8888,这里正常了,但是userapiconfig.py里面设置的适配mudbjson,那我应该用什么面板呢?刚看了下你blog,是目前没面板只是端口能够自适应SSR代理或者http访问的意思?

      Delete
    4. 又出一个奇怪的问题,如果我设置多用户端口8080,同时设置里重定向127.0.0.1:8888这个nginx端口,一切正常,网页能访问,SSR代理也能连上正常使用。但是换80端口,完全同样设置,就只能访问网页,SSR无法连接,win客户端显示错误。这个太奇怪了-_-nginx监听的是8888端口。问题太多都不好意思了,感谢

      Delete
    5. wiki已修正,mudbjson没有面板

      Delete
  21. 明白了那暂时不用纠结nginx的事了,先用着后端,ps wiki你json多用户版还没改

    ReplyDelete
    Replies
    1. 什么东西没改?你是指这文章里的内容吗?还是哪里有错误?

      Delete
    2. 你wiki里面,那段
      shadowsocksr目录内,对config.py里以下内容进行相应修改:

      json版多用户教程里还没有修改,只改了数据库多用户教程

      Delete
  22. 抱歉又来了,我找到80端口没法访问的问题了,我习惯用http_simple混淆,服务器配置了http_simple之后,客户端设置http_simple没法连,但是我无意间设置成了http_post,一下就连上了。这个是bug?还是对http_simple混淆不提供支持了?

    ReplyDelete
  23. 测试了一圈,只有80需要选http_post,同设置其他端口选http_simple没问题,而且80端口延迟是其他端口延迟一倍,win客户端显示用其他端口延迟是113,80是233。好奇怪的感觉

    ReplyDelete
    Replies
    1. 说明你的80和443都出现了限制了

      Delete
    2. 谢谢,这两天打扰了,LNMP+SSR现在一切正常。
      刚测了下速,其他端口能稳定播放Youtube 4K,80端口只能1080p,看来是我这里运营商问题咯?

      Delete
  24. cilent中协议参数可以留空吗(Shadowsocks server非自搭,提供商只提供了协议和混淆方式可以)

    ReplyDelete
  25. 80端口建站和走ssr,原本网站主页能正常打开自打配置完nginx.conf后ssr正常但主页却不行了 姐给看看
    server {
    listen 8080;
    server_name _;

    location / {
    proxy_pass http://127.0.0.1:8080;
    }
    }

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. 信息不足,无法判断

      Delete
    3. 是2个文件,你少改一个
      vi /usr/local/nginx/nginx.conf
      vi /usr/local/nginx/vhost/域名.conf

      Delete
  26. 请问如果安装 sspanel mod,那userapiconfig.py里是不是应该改为sspanl而不是mudbjson?

    ReplyDelete
    Replies
    1. 不是,需要用mod版本的后端

      Delete
  27. 厉害了,这么强赶紧试试

    ReplyDelete
  28. Word 天,好想跟他们说,来抓我呀来抓我呀,我在野区等你们,哈哈哈哈

    ReplyDelete
  29. 请问少女能给个选项限制流速吗?

    ReplyDelete
    Replies
    1. 感谢 美少女 @Breakwa11 转眼就有流速控制了

      Delete
  30. {
    "d": 0,
    "enable": 1,
    "method": "chacha20",
    "obfs": "tls1.2_ticket_auth",
    "passwd": "jackyweiwlsx!",
    "port": 80,
    "protocol": "auth_aes128_md5",
    "protocol_param": "16#8387,qicai,1688:test,65536:simon,8080:love,443:jacky,8388:wlsxpc,8338:wlsxphone,65535:oters",
    "transfer_enable": 1125899906842624,
    "u": 0,
    "user": "1"
    },
    {
    "d": 0,
    "enable": 1,
    "method": "chacha20",
    "obfs": "tls1.2_ticket_auth",
    "passwd": "jackyweiwlsx.",
    "port": 8388,
    "protocol": "auth_aes128_md5",
    "transfer_enable": 1125899906842624,
    "u": 0,
    "user": "wlsxpc"
    },


    配置后只能用8388的端口,用80的端口上不去,不知道是不是客户端设置哪里有问题……协议参数写8388:wlsxpc还是不行,密码用jackyweiwlsx!和jackyweiwlsx.都连接不了

    ReplyDelete
    Replies
    1. 求教一下破娃姐姐,我该怎么做

      Delete
    2. 配置方式简化了,见更新的文章内容

      Delete
    3. 找到原因了,我另一个VPS正常,不行的那个是之前折腾了Apache导致端口被占用

      Delete
  31. This comment has been removed by the author.

    ReplyDelete
  32. This comment has been removed by the author.

    ReplyDelete
  33. 破娃姐姐,additional_ports是针对单端口多用户的吗?数据库多端口用户是否需要添加?我该怎么做?

    ReplyDelete
    Replies
    1. 只有数据库的方式才需要这个

      Delete
    2. 我用的是老面板sspanelv2,如果我有200个端口用户,需要针对每个端口都添加additional_ports吗?谢谢回答,么么哒!

      Delete
    3. 你没懂这个端口的意思,你先搞清楚什么叫单端口多用户

      Delete
  34. This comment has been removed by the author.

    ReplyDelete
  35. 请问少女

    "additional_ports" : {
    "80": {
    "passwd": "pubpassword",
    "method": "aes-128-ctr",
    "protocol": "auth_aes128_md5",
    "protocol_param": "#",
    "obfs": "tls1.2_ticket_auth_compatible",
    "obfs_param": ""
    },
    "443": {
    "passwd": "pubpassword",
    "method": "aes-128-ctr",
    "protocol": "auth_aes128_md5",
    "protocol_param": "#",
    "obfs": "tls1.2_ticket_auth_compatible",
    "obfs_param": ""
    }
    },


    这一段可以提供完整的mudb使用的sample吗,测试了很多次都不成功,谢谢。

    ReplyDelete
    Replies
    1. mudb不使用这个,直接添加支持这协议的用户就行了,文章有说

      Delete
    2. 了,感谢少女~

      Delete
  36. Q1:认真看了用mudbjson配置示例,有点想不明白:为什么第一段是公共用户,无法直接使用,想不明白。是哪个参数决定了公共用户和子用户?

    Q2:请问enable参数有什么作用,仅仅是表示该用户是否可用?我看见mujson_mgr.py里只有增删改查用户,option里也没有用户可用与否的参数,感觉有些奇怪嘛

    ReplyDelete
    Replies
    1. 协议参数有#表示这是单端口多用户配置的公共端口
      enable表示是否开启这个用户,目前没有使用参数去修改,要停用直接删了这个用户就好了,或直接手工改enable

      Delete
    2. 感谢小仙女的回复
      请问如何批量删除/清空全部用户?我用以下命令:
      sudo python ./mujson_mgr.py -c
      之后 -l 出来还是那么多用户,只能用 -d -u "username" 逐个删,难道我理解错 -c 的意思了?

      Delete
    3. -c 是清空已用流量,要删除用户就一个一个删

      Delete
  37. 请问少女有时间能考虑增加包加速吗? 这样就可以废掉不用安装 kcptun xsocks 一个程序直接无敌了 XDDDD

    ReplyDelete
  38. This comment has been removed by the author.

    ReplyDelete
  39. 請教一下:你看我這樣操作對嗎

    我用ss-panel v2 + SSR最新後端,能對接。然後我修改user-config的"additional_ports"為下面

    "additional_ports" : {
    "6666": {
    "passwd": "mm",
    "method": "aes-128-ctr",
    "protocol": "auth_aes128_md5",
    "protocol_param": "#",
    "obfs": "tls1.2_ticket_auth_compatible",
    "obfs_param": ""
    }
    },
    "timeout": 120,
    "udp_timeout": 60,
    "dns_ipv6": false,
    "connect_verbose_info": 0,
    "redirect": "",
    "fast_open": false
    }

    測試id:15 pw為12345的用戶。SSR客戶端輸入6666端口,密碼輸入mm。協議參數輸入15:12345,客戶端啟動后上不了google。我上述操作是否有誤……

    ReplyDelete
    Replies
    1. 看起来是对的,ID如果就是那个用户的端口号的话

      Delete
    2. 原來是端口號!我以為輸入panel的id號……改為端口號之後成功了 :)

      Delete
  40. This comment has been removed by the author.

    ReplyDelete
  41. 少女你好,我是通过命令来创建用户的,一共两个用户,公共用户 bbb,普通用户 ddd。执行命令后 mudb.json 的内容是:
    [
    {
    "d": 0,
    "enable": 1,
    "method": "chacha20-ietf",
    "obfs": "tls1.2_ticket_auth",
    "passwd": "aaa",
    "port": 666,
    "protocol": "auth_chain_a",
    "protocol_param": "#",
    "transfer_enable": 9007199254740992,
    "u": 0,
    "user": "bbb"
    },
    {
    "d": 0,
    "enable": 1,
    "method": "chacha20-ietf",
    "obfs": "tls1.2_ticket_auth",
    "passwd": "ccc",
    "port": 100000,
    "protocol": "auth_chain_a",
    "transfer_enable": 9007199254740992,
    "u": 0,
    "user": "ddd"
    }
    ]
    在客户端里的 密码写 aaa,协议参数写 ddd:ccc,端口写 666,IP 加密协议混淆都没写错,但就是连不上,服务器(阿里 CentOS7 )没有防火墙,用 netstat 可以看到 666 端口已开,ssserver.log 也没有报错,最后两句是
    server_pool.py:128 starting server at [::]:666
    server_pool.py:154 starting server at 0.0.0.0:666
    以前都是用一键脚本,没试过通过 Git 安装和用这个模式,求解。

    ReplyDelete
    Replies
    1. 文章说的是协议参数写用户ID,即端口号,而不是用户名

      Delete
    2. 换成【端口:用户密码】还是不行,想不明白,难道 mudbjson 模式不是配合 wiki 中的 Server Setup(manyuser with mudbjson) 教程来配置的?我的配置步骤很简单:
      git clone -b manyuser https://github.com/shadowsocksr/shadowsocksr.git
      cd ./shadowsocksr
      bash initcfg.sh
      vim ./userapiconfig.py
      修改 API_INTERFACE = 'mudbjson' 后配置用户
      sudo python ./mujson_mgr.py -a -u "bbb" -k "aaa"\
      -p 666 -m "chacha20-ietf" -O "auth_chain_a" -o "tls1.2_ticket_auth" -G "#";\
      sudo python ./mujson_mgr.py -a -u "ddd" -k "ccc"\
      -p 100000 -m "chacha20-ietf" -O "auth_chain_a" -o "tls1.2_ticket_auth";
      ./logrun.sh
      配置完了之后,情况就如前面所说。客户端密码写 aaa,协议参数写 100000:ccc,端口写 666,完全连不上,谷歌到的文章都没有人提过类似问题,难道我是个例?请小仙女指教。

      Delete
    3. 命令行方式运行是单用户,不支持多用户,文章从来没有说过可以命令行运行配置

      Delete
    4. 1、你好,因为我看到你在上面回复别的提问说:“你搞错了,后文说的是mudbjson方式,需要使用命令行添加用户,请看wiki。配置文件中不支持写后文的内容”,所以我才以为mudbjson模式配置单端口多用户是要用命令添加用户。
      2、log 前面有了,我提供完整版本的吧:
      2017-06-06 13:42:01 INFO util.py:85 loading libcrypto from libcrypto.so.10
      2017-06-06 13:42:01 INFO asyncdns.py:324 dns server: [('100.100.2.136', 53), ('100.100.2.138', 53)]
      2017-06-06 13:42:01 INFO shell.py:72 ShadowsocksR 3.3.3 2017-06-03
      2017-06-06 13:42:02 INFO db_transfer.py:236 current process RLIMIT_NOFILE resource: soft 512000 hard 512000
      2017-06-06 13:42:02 INFO db_transfer.py:203 db start server at port [80] pass [密码] protocol [auth_chain_a] method [chacha20-ietf] obfs [tls1.2_ticket_auth]
      2017-06-06 13:42:02 INFO server_pool.py:127 starting server at [::]:80
      2017-06-06 13:42:02 INFO server_pool.py:153 starting server at 0.0.0.0:80
      我是想单个 80 端口能够转发多个 id 大于 65535 的多个用户。

      Delete
    5. 而且本文提到mudbjson是关于添加用户和转发端口的,而wiki里https://github.com/breakwa11/shadowsocks-rss/wiki/Server-Setup(manyuser-with-mudbjson)关于mudbjson配置后运行与停止写的是./logrun.sh和./stop.sh,所以我才会把两篇文章对应起来

      Delete
    6. 请提供 -v 参数运行的模式下的LOG以及客户端具体配置

      Delete
    7. 上一条你没有继续质疑我的命令,我就当没问题了,依旧是执行上面的命令,只是最后的 ./logrun.sh 换成 ./logrun.sh -v (应该是这个意思吧),得到
      2017-06-06 20:41:44 INFO util.py:85 loading libcrypto from libcrypto.so.10
      2017-06-06 20:41:44 INFO asyncdns.py:324 dns server: [('100.100.2.136', 53), ('100.100.2.138', 53)]
      2017-06-06 20:41:44 INFO shell.py:72 ShadowsocksR 3.3.3 2017-06-03
      2017-06-06 20:41:44 INFO db_transfer.py:236 current process RLIMIT_NOFILE resource: soft 512000 hard 512000
      2017-06-06 20:41:44 INFO db_transfer.py:203 db start server at port [80] pass [aaa] protocol [auth_chain_a] method [chacha20-ietf] obfs [tls1.2_ticket_auth]
      2017-06-06 20:41:44 INFO server_pool.py:127 starting server at [::]:80
      2017-06-06 20:41:44 INFO server_pool.py:153 starting server at 0.0.0.0:80
      似乎没有多出什么信息,我再给一下生成的 mudb.json (我是用命令添加用户的)内容:
      [
      {
      "d": 0,
      "enable": 1,
      "method": "chacha20-ietf",
      "obfs": "tls1.2_ticket_auth",
      "passwd": "aaa",
      "port": 80,
      "protocol": "auth_chain_a",
      "protocol_param": "#",
      "transfer_enable": 9007199254740992,
      "u": 0,
      "user": "bbb"
      },
      {
      "d": 0,
      "enable": 1,
      "method": "chacha20-ietf",
      "obfs": "tls1.2_ticket_auth",
      "passwd": "ccc",
      "port": 100000,
      "protocol": "auth_chain_a",
      "transfer_enable": 9007199254740992,
      "u": 0,
      "user": "ddd"
      }
      ]
      而且端口已开:
      # netstat -lntp
      Active Internet connections (only servers)
      Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
      tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1966/sshd
      tcp6 0 0 :::80 :::* LISTEN 15409/python2.7
      客户端:
      服务器端口:80
      密码:aaa
      加密:chacha20-ietf
      协议:auth_chain_a
      协议参数:100000:ccc
      混淆:tls1.2_ticket_auth

      麻烦了

      Delete
    8. ./logrun.sh -v 是错的,必须python server.py -v
      LOG仍然不完整,启动LOG和连接LOG不要只发一个
      如果你知道麻烦,那为什么不直接找人给你在服务器上配置,在这里问已经问了半个多月了,半个多月可以这么浪费掉我服了

      Delete
  42. Anonymous5/6/17 15:36

    单端口单用户,本地Apache已开启8080端口,config.json里面的
    "server_port": 80,
    "redirect": ["*:80#127.0.0.1:8080"],
    设置成这个样子
    之后远端访问80端口的时候,后台转发到127.0.0.1:8080的时候报错
    ERROR tcprelay.py:1033 [Errno 10049] Unknown error
    ERROR tcprelay.py:1035 remote error, when connect to 127.0.0.1:8080

    我感觉比较奇怪,怎么就不能转发到这呢?
    我用浏览器走127.0.0.1:8080也能正常的访问到我Apache挂的网页啊

    还是说单用户单端口不适用这个转发功能?

    ReplyDelete
  43. 像第一部分,是不是每次配置文件修改完,都需要重新启动shadowsocksR的进程,还是进程可以实时读取

    ReplyDelete
    Replies
    1. mudb.json可以,或数据库可以,就user-config.json和dns.conf和系统host不可以,改这三个只能重新启动SSR进程

      Delete
  44. 请问, mudbjson模式如果限制用户连接数?

    ReplyDelete
    Replies
    1. "protocol_param": "64#12345:breakwa11,233:zhihuyaowan",
      协议参数设置似乎无效

      Delete
    2. 你两是同一人?到底认真看了文章没?

      Delete
  45. 大佬,请允许我这个菜鸡请教一个问题,我用的就是一个多用户的脚本,请问账号配置是有一个趋于完美的固定搭配呢,还是随便选择?对速度有没有啥影响? port:8989,method:chacha20,protocol:origin,obfs:plain,像这样的搭配有没有啥问题?

    ReplyDelete
  46. Anonymous1/10/17 14:20

    请问,如果用SSR进行端口转发到nginx,会不会出现性能问题?

    ReplyDelete
  47. 想问下破娃 我已经修改了mudb.json文件是不是还要在哪里修改一些才能启动 还是修改文件后直接再开启服务呢

    ReplyDelete
  48. 破娃 我想问下我用了port_password:{}这样的话是开启不同端口的不同密码,我还想在不用端口再弄个像你上面的多用户的话 下面的混淆参数协议怎么改呢?如果一改是不是变成3个端口有一样的用户呢?

    ReplyDelete
  49. This comment has been removed by the author.

    ReplyDelete
  50. 问破娃一个关于mudbjson的问题。
    2017-11-14 23:32:19 WARNING udprelay.py:477 IOError sendto 某用户IP地址:0 by user VPS某端口
    2017-11-14 23:32:19 ERROR shell.py:50 [Errno 22] Invalid argument
    我这有这样的情况,ssserver.log里这2行日志成组出现。但是用这个端口的人反馈说能正常使用(环境是爱疯手机上的potatso lite),求指点

    ReplyDelete