Windows下三分钟搭建Shadowoscks服务器端

之前在V2EX上有人问为啥没人做个在Windows上一键运行Shadowsocks服务器端的程序,我只想说……这是因为没人关注我的libQtShadowsocks项目啊!(脑补暴走漫画表情)

所以本文要来告诉这些想要帮别人的“小白”,轻轻松松只要三分钟,无痛@#@%#*(什么鬼?)让Shadowsocks服务端在你的Windows机器上跑起来!不用自己编译,不用安装什么Python、.Net的。

先上步骤,内情在后面再叙。

  1. 下载最新的shadowsocks-libqss(Fedora下软件包名为shadowsocks-libQtShadowsocks)
  2. 准备好config.json文件(范例文件点此,点Raw另存为config.json就能下载下来了),server字段填写”0.0.0.0″(如果走IPv6线路,填”::”),加密方式可以改成更新潮的”chacha20″(老旧的Shadowsocks客户端可能不支持chacha20加密)
  3. 要shadowsocks-libqss.exe以server mode运行需要加上-S参数,你可以从命令行提示符去运行。或者,更简单的,用我写好的bat脚本(点此查看,点Raw按钮另存为bat脚本即可)
  4. 将shadowsocks-server.bat与shadowsocks-libqss.exe, config.json放在同一个文件夹下,执行shadowsocks-server.bat即可

停止运行?关掉就可以了。下次再运行?执行shadowsocks-server.bat脚本就好了。修改配置文件?别用自带的记事本和写字板,去下载一个Notepad++吧,免得格式乱套了。

“内情”

使用的这个程序shadowsocks-libqss本身是libQtShadowsocks项目的一部分,最初始的目的是演示如何在Qt程序里调用libQtShadowsocks,后来则成为一个命令行式的客户端/服务端了。因为本身libQtShadowsocks就兼具客户端和服务端的功能,两者的区别很不大,如果拆成两个程序反而奇怪。

所以默认情况下shadowsocks-libqss会读取当前文件夹下的config.json文件,并以客户端模式启动。使用-c可以指定配置文件,而-S参数则使其以服务端模式运行。

配置文件config.json的格式和其他Shadowsocks版本一样,双向兼容~~(说了无痛>.<)

简单说一下相比其他文章提到的其他版本,shadowsocks-libqss的优势在哪里吧。shadowsocks-libev在Windows下编译比较麻烦,如果你下载第三方编译的版本,总是有点不放心不是?(当然,你下载的是我编译的shadowsocks-libqss,如果你不放心就别下拉倒)。shadowsocks-go已经很久没有实质更新了。shadowsocks-csharp-server支持的加密方式很少而且依赖.Net…主线的python版本依赖Python环境,而且要支持Salsa20和ChaCha20的话还要装libsodium,值得注意的还有shadowsocks-libqss的CPU、内存占用小。

最后,我的博客不是反映问题的地方,有问题请报到libQtShadowsocks的issues列表!

05 March 2015 Update:
从1.4.2版起,服务器地址填写::表示同时监听所有IPv4和所有IPv6地址,和shadowsocks-libev一致。之前的版本填写::仅监听所有IPv6地址。

44 responses to “Windows下三分钟搭建Shadowoscks服务器端”

  1. vincent avatar
    vincent

    本地win7搭建代理服务器,但是还需要跳转一层代理?这种哟没什么好的解决方法?

  2. fuckyou avatar

    我成功了 谢谢楼主 哇哈哈 自由万岁

  3. 水果 avatar
    水果

    可以使用instsrv.exe+srvany.exe将应用程序安装为服务
    cmd
    d:\instsrv.exe shadowsocks d:\srvany.exe
    然后 注册表
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\shadowsocks
    添加Parameters项 新建以下几个字符串值。
    名称 Application 值为你要作为服务运行的程序地址。
    名称 AppDirectory 值为你要作为服务运行的程序所在文件夹路径。
    名称 AppParameters 值为你要作为服务运行的程序启动所需要的参数。
    cmd
    sc start shadowsocks
    完成

  4. 神马都要问 avatar
    神马都要问

    一次安装成功,请问一下我远程服务器要怎么退出登录,这个代理服务才不会掉线,我注销登录就没有了

    1. librehat avatar

      你要让它在后台运行,不太清楚Windows Server怎么操作 :(

  5. 于飞 avatar
    于飞

    我开了以后QQ等软件可以联网但是打不开网页,是不是dns的问题呢?改怎么自定义dns呢?谢谢!

  6. MG avatar

    这个能不能加混淆参数啊?

  7. feng avatar
    feng

    奇怪,我在一台可以上网的win2008上,按你所的操作了。把EXE,bat,json都放在一起。然后我本机配了一个服务器,并且用pac模式启动了,可是我去连内网的服务器还是不行。。。

  8. slamslam avatar
    slamslam

    http_proxy 是ss服务器的proxy还是我的proxy

  9. s's avatar
    s’s

    这个很叼,一开就能用了

  10. ck avatar
    ck

    老板的这个软件太赞了,比python版的ss server好用多了,那个python版的很卡,经常打印出连接超时或者发生错误的log信息,还是这个号用,推荐!

  11. Zain avatar
    Zain

    经过我的一番测试,这个服务端在一个人用的时候很爽,用的人多了就很容易崩掉,推荐个人服务器使用,感谢博主的分享,辛苦了!

  12. rootedclub avatar

    这是我见过的最便捷的方法了。
    测试了一下都OK
    就是发现一个问题:在全局模式下不能正常的工作,不知道是什么原因。

  13. Zing avatar
    Zing

    博主能给个config.json的说明么,如果我是要把外国服务器的SS转发给局域网使用,而且那个SS服务器是有密码的,能用这个么,该怎么写config。

  14. 王花郎 avatar

    感谢分享,已在使用!

  15. whisper avatar
    whisper

    很好用,不过有个问题了,用一会儿后,VPS端的bat文件就会已停止工作,这是什么原因呢?KVM架构,winserver2012

  16. HUANG Renjing avatar
    HUANG Renjing

    大大,我搭建成功了,有版本可以监控人数么?

  17. HUANG Renjing avatar
    HUANG Renjing

    大大,什么情况下,建立成功呢?

  18. HUANG Renjing avatar
    HUANG Renjing

    我这提示:
    one-time message authentication for header failed.
    Can’t parse header: wrong encryption method or password?
    是怎么回事呢?

    1. q120 avatar
      q120

      加密方式 要加 “” 比如”rc4-md5″

  19. john avatar
    john

    你好,部署到服务器上后,使用Safari连接,服务器端会显示如下信息,请问如何解决,好像是浏览器不知道该加密方式或者是密码错误。

    浏览器使用代理时,是选择socks还是使用http?用户名和密码如何输入?

    One-time message authentication for header failed.
    Can’t parse header. Wrong encryption method or password?

    The Best wish for you!

  20. […] windows服务器三分钟搭建:https://www.librehat.com/three-minutes-to-set-up-shadowsocks-server-on-windows/ […]

  21. wyf avatar
    wyf

    Initialising ciphers…
    RC4-MD5 (rc4-md5) initialised.
    Running in server mode.
    TCP server listen at port 8388
    Connecting p.api.pc120.com:80 from 27.129.137.36:54021
    Connecting p.api.pc120.com:80 from 27.129.137.36:54028
    Connecting p.api.pc120.com:80 from 27.129.137.36:54180
    Connecting p.api.pc120.com:80 from 27.129.137.36:54185
    Connecting 192.168.29.1:80 from 27.129.137.36:54207
    Remote socket error: Connection timed out
    Connecting p.api.pc120.com:80 from 27.129.137.36:54220
    大神 我按你的说明做的 连接后客户端不通 服务端出现这个是什么意思

    1. oijo avatar
      oijo

      pc120.com 貌似是毒霸的域名,关闭毒霸后试试,

  22. oijo avatar
    oijo

    用快捷方式 在链接后加个参数比较方便启用。…libqss.exe 在快捷方式 的‘目标’最后直接加参数就行了,还不用要求在同一个文件夹

    1. librehat avatar

      快捷方式也可以。不过不是每个人都喜欢快捷方式这种途径的(比如我就不喜欢在桌面上放太多快捷方式)

      1. oijo avatar
        oijo

        Just add & to the command line.

        If you need it running as a service, use libev port
        作者如是说,第一个&不知道放哪里。第二个看着好麻烦。
        我的处理方法是,用win10的虚拟桌面,放到桌面2就行了。
        ( ´(00)`)

  23. 小鱼虾 avatar
    小鱼虾

    我刚测试安装存在以下问题,
    1. 我服务器支持IPv6,如果客户端仅仅ipv4网,是否客户端也可以走我的ipv6网. 也就是说客户端也可以访问ipv6的网站等等. 目前我把本地服务器地址配置成ipv6地址,客户也还是走的ipv4网.
    2.当客户端配置与我服务器端不匹配时,我服务器端就停止运行了,这样实在存在问题,任意一个客户配置错误,我服务器就不工作了?例如客户端打开udp转发或加密方式不配等
    3.另外请教个问题,加密方式chacha20服务器端是否还需要特殊配置?我服务器端是否需要或者输入多个加密方式?

    1. librehat avatar

      有问题请报到GitHub项目的issues页面,谢谢。

      ChaCha20不需要特别配置,加密方式一栏填chacha20就可以了。目前shadowsocks-libqss在Windows下的稳定性确实有点问题,正在解决中。如果是生产环境的配置,建议使用主线Python版本做服务器。

  24. Xperia avatar
    Xperia

    有没有软件 或者插件 可以对无法访问网站 自动使用代理刷新重试并且加入代理规则的呢,依靠更新缓慢的代理规则 实在麻烦

  25. Xperia avatar
    Xperia

    从vps下载慢 上传很快什么原因? vps自身是上下50mbps带宽的

  26. xperia avatar
    xperia

    怎么也打不开网页,端口监控显示已经连接上。

    1. xperia avatar
      xperia

      可以了 不能开udp转发

      1. librehat avatar

        Windows平台的限制

  27. xperia avatar
    xperia

    好像是无法解析域名,请问怎么办?

    1. librehat avatar

      DNS劫持或者污染了,你得先搞定DNS,网上很多教程破除DNS污染的

  28. xperia avatar
    xperia

    bat运行后是黑屏?
    我怎么还是翻不出来
    win下面真是麻烦

    1. librehat avatar

      有几个版本是默认只输出错误信息,所以可能是黑的什么都没有。

      1. basin avatar
        basin

        Update to v1.81 today. Changed the -S option for server mode.
        But found all connection details are shown in the command. How I can go back to only show error info. Thank you!

        1. librehat avatar

          You can’t. The error signal is merged into info.

  29. Mingzhi avatar
    Mingzhi

    我特意跑上来点个赞,各种方便好用
    虽然我的目的是反向翻回GFW…cpu占用率很低,用了老的p4笔记本搭建了服务器,在国外成功翻回来看乐视的体育直播

    1. librehat avatar

      诶,多谢了。不过话说你用老的P4跑的什么版本的Windows?(Vista or 7?)

      1. mingzhi avatar
        mingzhi

        p4可以跑的是windows 7 32bit, vista很多地方太反人类了,远程桌面及其不舒服。 windows7 把各种特效关掉,装上不知道哪里拆下来的2g内存,做个shadowsocks服务器效果杠杠的。

  30. vzch avatar
    vzch

    咱是关注了的,特地跑来点个赞