CentOS下shadowsocks-libev一键安装脚本

技术 秋水逸冰 1681733浏览 1182评论

本脚本适用环境:
系统支持:CentOS
内存要求:≥128M
日期:2018 年 06 月 01 日

关于本脚本:
一键安装 libev 版的 Shadowsocks 最新版本。该版本的特点是内存占用小(600k左右),低 CPU 消耗,甚至可以安装在基于 OpenWRT 的路由器上。
友情提示:如果你有问题,请先参考这篇《Shadowsocks Troubleshooting》后再问。

默认配置:
服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成)
密码:自己设定(如不设定,默认为 teddysun.com)
加密方式:自己设定(如不设定,默认为 aes-256-gcm)

Shadowsocks for Windows 客户端下载:
https://github.com/shadowsocks/shadowsocks-windows/releases

使用方法:
使用root用户登录,运行以下命令:

wget --no-check-certificate -O shadowsocks-libev.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-libev.sh
chmod +x shadowsocks-libev.sh
./shadowsocks-libev.sh 2>&1 | tee shadowsocks-libev.log

安装完成后,脚本提示如下:

Congratulations, Shadowsocks-libev server install completed!
Your Server IP        :your_server_ip
Your Server Port      :your_server_port
Your Password         :your_password
Your Encryption Method:your_encryption_method

Welcome to visit:https://teddysun.com/357.html
Enjoy it!

卸载方法:
使用 root 用户登录,运行以下命令:

./shadowsocks-libev.sh uninstall

其他事项:
客户端配置的参考链接:https://teddysun.com/339.html

安装完成后即已后台启动 Shadowsocks-libev ,运行:

/etc/init.d/shadowsocks status

可以查看进程是否启动。
本脚本安装完成后,会将 Shadowsocks-libev 加入开机自启动。

使用命令:
启动:/etc/init.d/shadowsocks start
停止:/etc/init.d/shadowsocks stop
重启:/etc/init.d/shadowsocks restart
查看状态:/etc/init.d/shadowsocks status

更多版本 Shadowsocks 安装:
ShadowsocksR 版一键安装脚本(CentOS,Debian,Ubuntu)
Shadowsocks Python 版一键安装脚本(CentOS,Debian,Ubuntu)
Debian 下 Shadowsocks-libev 一键安装脚本
Shadowsocks-go 一键安装脚本(CentOS,Debian,Ubuntu)
Shadowsocks 一键安装脚本(四合一)

更新日志

2018 年 06 月 01 日:
1、新增:配置文件新增 fast_open 字段,并根据系统的内核版本,判断大于 3.7.0 时启用,否则不启用;
2、修正:在使用 /etc/init.d/shadowsocks restart 命令重启服务端时,偶尔出现的 “bind: Address already in use” 问题;
3、修正:移除配置文件中的 local_address 字段;
4、修改:不再默认使用 root 用户启动,改为使用 nobody 用户启动服务端 ss-server;
5、升级:mbedtls 到版本 2.9.0;
6、修改:启动脚本中的 -u 参数(即同时启用 TCP 和 UDP 模式),改到配置文件里配置为 “mode”: “tcp_and_udp”;
7、修改:配置文件的内置 NameServers 为 8.8.8.8,默认是从 /etc/resolv.conf 中取得。

2018 年 02 月 07 日:
1、修改:将默认端口从 8989 改为从 9000-19999 之间随机生成。

2017 年 09 月 16 日:
1、修正:Shadowsocks-libev 版 v3.1.0 使用 libc-ares 替换 libudns 依赖包,解决了依赖问题;
2、升级:mbedtls 到版本 2.6.0。

2017 年 07 月 22 日:
1、修正:默认加密方式从 aes-256-cfb 改为 aes-256-gcm(官方原版客户端支持该加密方式);
2、新增:安装时可选 16 种加密方式的其中之一。如下所示:

aes-256-gcm
aes-192-gcm
aes-128-gcm
aes-256-ctr
aes-192-ctr
aes-128-ctr
aes-256-cfb
aes-192-cfb
aes-128-cfb
camellia-128-cfb
camellia-192-cfb
camellia-256-cfb
chacha20-ietf-poly1305
chacha20-ietf
chacha20
rc4-md5

2017 年 02 月 24 日:
1、恢复: 通过 Github API 自动获取 Shadowsocks-libev 的最新 release 版本的功能(v3.0.3)。

2017 年 02 月 13 日:
1、更新:升级版本到 3.0.2。

2017 年 02 月 12 日:
1、更新:升级版本到 3.0.1(请下载最新的脚本来安装)。

2016 年 11 月 05 日:
1、新增:判断是否已安装,若已安装,则获取版本号与最新版比较,然后可以升级覆盖安装;
2、修正:未安装时获取最新版本号的问题。

2016 年 09 月 23 日:
1、修正:偶尔自动获取版本号失败的问题;
2、新增:自动判断如果 VPS 存在 IPv6 地址,则在配置文件里添加监听 IPv6 地址。

2016 年 09 月 17 日:
1、重构代码,自动获取 Github 上最新版来安装,不再手动修改版本号;
2、自动检测本机是否已经安装,若已安装则正常退出(若要安装新版,则需先卸载);
3、改为下载 tar.gz 包来安装,不用依赖 unzip 命令。

2016 年 09 月 12 日:
1、更新:升级版本到 2.5.2。

2016 年 09 月 11 日:
1、更新:升级版本到 2.5.1。

2016 年 08 月 29 日:
1、更新:升级版本到 2.5.0;
2、修正:由于安装时文件名的更新,卸载时文件名改为一致。

2016 年 07 月 14 日:
1、更新:升级版本到 2.4.7。

2016 年 07 月 05 日:
1、修正:新增的依赖 xmlto、asciidoc;
2、修正:由于安装时文件名的更新,卸载时文件名改为一致。

2016 年 05 月 12 日:
1、新增:在 CentOS 7 下的防火墙规则设置。

2015 年 08 月 01 日:
1、新增:自定义服务器端口功能(如不设定,默认为 8989)。

2015 年 04 月 30 日:
1、修正:配置文件 /etc/shadowsocks-libev/config.json 同时启用 IPv4 与 IPv6 支持:

{
    "server":["[::0]","0.0.0.0"],
    "server_port":your_server_port,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"your_password",
    "timeout":600,
    "method":"aes-256-cfb"
}

2、Shadowsocks libev 版不能通过修改配置文件来多端口(只能开启多进程),如果你需要多端口请安装 Python 或 Go 版;

特别说明:
1、已安装旧版本的 shadowsocks 需要升级的话,需下载本脚本的最新版,直接运行即可自动升级

./shadowsocks-libev.sh

参考链接:
https://github.com/shadowsocks/shadowsocks-libev

转载请注明:秋水逸冰 » CentOS下shadowsocks-libev一键安装脚本

发表我的评论
取消评论

请输入正确答案后提交评论 *超出时限。 请再次填写验证码。

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1182)

  1. 请问一下,以上的一键安装脚本 命令是所有复制 一次root输入命令吗?
    rakez10年前(2014-07-29)回复
    • 所有的命令一次性复制下来执行是可以的,一行一行的复制执行也可。
      秋水逸冰10年前(2014-07-29)回复
  2. 安装成功了,请问怎么修改加密模式 谢谢
    ixinshang10年前(2014-07-28)回复
    • 修改配置文件 /etc/shadowsocks/config.json 中的 method 的值,再重启服务即可。 默认是 aes-256-cfb 加密,也是官方所推荐的加密方式。
      秋水逸冰10年前(2014-07-28)回复
  3. 您好, 我在centos 7下跑了一边脚本 ,显示是正常的,但是看不到ssserver的进程,是不是这个脚本还不能用在7上?
    maple10年前(2014-07-25)回复
    • 理论上没有问题,我还没有测试过。libev 版的进程名是 ss-server,而并非ssserver
      秋水逸冰10年前(2014-07-25)回复
  4. collect2: ld returned 1 exit status make[2]: *** [ss-local] Error 1 make[2]: Leaving directory `/root/shadowsocks-libev-master/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/shadowsocks-libev-master' make: *** [all] Error 2 Shadowsocks-libev install failed! Please visit https://teddysun.com/357.html and contact. 安装失败了!
    jeeve10年前(2014-07-24)回复
    • 该脚本只能运行在 CentOS 6.x ,确保系统环境没问题的话,根据回显的错误信息,请参考此链接,看看能不能解决你的问题。
      秋水逸冰10年前(2014-07-24)回复
      • centos7测试通过,用的linode 1024 严重感谢lz啊
        pwinner10年前(2014-07-27)回复
      • 我centos6.9安装出错,有解决办法没 collect2: ld returned 1 exit status make[2]: *** [ss-local] Error 1 make[2]: Leaving directory `/root/shadowsocks-libev-3.0.8/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/shadowsocks-libev-3.0.8' make: *** [all] Error 2 [Error] Shadowsocks-libev install failed. please visit https://teddysun.com/357.html and contact.
        咕噜噜7年前(2017-08-17)回复
        • 给出的 log 里没有有效的错误消息提示。
          秋水逸冰7年前(2017-09-02)回复
          • make all-recursive make[1]: Entering directory `/root/shadowsocks-libev-3.1.0' Making all in libcork make[2]: Entering directory `/root/shadowsocks-libev-3.1.0/libcork' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/root/shadowsocks-libev-3.1.0/libcork' Making all in libipset make[2]: Entering directory `/root/shadowsocks-libev-3.1.0/libipset' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/root/shadowsocks-libev-3.1.0/libipset' Making all in libbloom make[2]: Entering directory `/root/shadowsocks-libev-3.1.0/libbloom' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `/root/shadowsocks-libev-3.1.0/libbloom' Making all in src make[2]: Entering directory `/root/shadowsocks-libev-3.1.0/src' CCLD ss-local ss_local-aead.o: In function `aead_cipher_decrypt': /root/shadowsocks-libev-3.1.0/src/aead.c:213: undefined reference to `crypto_aead_chacha20poly1305_ietf_decrypt' /root/shadowsocks-libev-3.1.0/src/aead.c:219: undefined reference to `crypto_aead_xchacha20poly1305_ietf_decrypt' ss_local-aead.o: In function `aead_chunk_decrypt': /root/shadowsocks-libev-3.1.0/src/aead.c:563: undefined reference to `sodium_increment' /root/shadowsocks-libev-3.1.0/src/aead.c:571: undefined reference to `sodium_increment' ss_local-aead.o: In function `aead_cipher_encrypt': /root/shadowsocks-libev-3.1.0/src/aead.c:174: undefined reference to `crypto_aead_chacha20poly1305_ietf_encrypt' /root/shadowsocks-libev-3.1.0/src/aead.c:180: undefined reference to `crypto_aead_xchacha20poly1305_ietf_encrypt' ss_local-aead.o: In function `aead_chunk_encrypt': /root/shadowsocks-libev-3.1.0/src/aead.c:469: undefined reference to `sodium_increment' /root/shadowsocks-libev-3.1.0/src/aead.c:479: undefined reference to `sodium_increment' ss_local-stream.o: In function `crypto_stream_xor_ic': /root/shadowsocks-libev-3.1.0/src/stream.c:161: undefined reference to `crypto_stream_salsa20_xor_ic' /root/shadowsocks-libev-3.1.0/src/stream.c:165: undefined reference to `crypto_stream_chacha20_ietf_xor_ic' /root/shadowsocks-libev-3.1.0/src/stream.c:163: undefined reference to `crypto_stream_chacha20_xor_ic' collect2: ld returned 1 exit status make[2]: *** [ss-local] Error 1 make[2]: Leaving directory `/root/shadowsocks-libev-3.1.0/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/shadowsocks-libev-3.1.0' make: *** [all] Error 2 [Error] Shadowsocks-libev install failed. please visit https://teddysun.com/357.html and contact.
            causlayer7年前(2017-10-28)回复
            • 目测是 libsodium 没有安装或者安装失败导致的。 建议重新安装系统后,使用本站的四合一脚本来安装。
              秋水逸冰7年前(2017-10-28)回复
  5. 请教楼主,。LINODE CENTOS 6.5按照您的教程服务端配置好,无任何问题,WIN7下GUI保存也貌似木问题,除了GOOGLE及GOOGLE相关的网站比如GMAIL以外,比如YOUTUBE都是秒开,就是GOOGLE不行,死活上不去,我本地电脑的DNS是自动获取的,这个是是DNS问题么?而且本地的HOST也恢复成WINDOWS初始状态了。
    我是一根葱10年前(2014-07-24)回复
    • 这种问题以前貌似也有人遇到过,你试试在 VPS 里运行 curl -I www.google.com.hk 看看结果里有没有状态码,HTTP/1.1 200 OK 如果有的话,说明 VPS 连接 google 没有问题。 更加具体的原因我也不知道。
      秋水逸冰10年前(2014-07-24)回复
  6. 求推荐个在centos使用ss客户端的方案, 服务端已经架好 主要是解决国内VPS git 速度或安装国外RPM包的痛苦
    阿布10年前(2014-07-15)回复
    • CentOS 下安装此版本的 Shadowsocks 后自带客户端,/usr/local/bin/ss-local 就是了。至于用法,去作者的 Github 页面看看 usage 教程。
      秋水逸冰10年前(2014-07-15)回复
  7. 谢谢秋水逸冰 不断的跟新教程
    vov10年前(2014-07-15)回复
  8. 请问 是否需要在安装完后 开启 selinux
    maple10年前(2014-07-14)回复
    • 不需要。
      秋水逸冰10年前(2014-07-14)回复
      • 谢谢,还有个问题 我用的是www.kvmla.com 的vps,操作系统 centos 6.5,安装完后,客户端勉强可以使用,windows和linux下都是一样,大量返回111服务器拒绝错误,找不到原因,附上itpables 状态,请帮忙看看,谢谢 [root@v ~]# service iptables status Table: nat Chain PREROUTING (policy ACCEPT) num target prot opt source destination Chain POSTROUTING (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8989 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination Table: mangle Chain PREROUTING (policy ACCEPT) num target prot opt source destination Chain INPUT (policy ACCEPT) num target prot opt source destination Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain POSTROUTING (policy ACCEPT) num target prot opt source destination
        maple10年前(2014-07-14)回复
      • 我在centos7 客户端下 访问谷歌,服务器端iptables 关闭了也不行 shadowsocks 2.0.11 2014-07-14 20:47:53 INFO starting local at 127.0.0.1:1080 2014-07-14 20:49:52 INFO connecting 173.194.127.49:80 2014-07-14 20:49:59 INFO connecting 173.194.127.48:80 2014-07-14 20:50:02 INFO connecting 202.106.199.36:80 2014-07-14 20:50:05 INFO connecting 173.194.127.48:80 2014-07-14 20:50:26 ERROR [Errno 111] Connection refused 2014-07-14 20:50:26 INFO connecting 173.194.127.48:80 2014-07-14 20:50:47 ERROR [Errno 111] Connection refused 2014-07-14 20:50:50 INFO connecting 173.194.127.48:80 2014-07-14 20:51:11 ERROR [Errno 111] Connection refused 2014-07-14 20:51:11 INFO connecting 173.194.127.115:80 2014-07-14 20:51:32 ERROR [Errno 111] Connection refused
        maple10年前(2014-07-14)回复
        • 很有可能是你的 vps 的 IP 被 google 给办了,目前我用的都是正常的。执行 netstat -anp 查看一下监听和连接状态。更多的可能要具体分析吧。
          秋水逸冰10年前(2014-07-15)回复
      • 是不是我用的客户端不好呢?手机上用 ss-andriod 不出错,在windows下用的是 shadowssocks-gui和linux下用ss-local都会出现大量拒绝。。。 服务端 操作系统:centos-6-x86, 内存: 512 MB,cpu和ram占用很小的。 本地ping 服务端 响应稳定,而且小于200ms 服务器访问youtube 也不错 ,最多也就2秒左右,下边贴的是现在的速度, [root@v ~]# time wget https://www.youtube.com --2014-07-14 21:35:16-- https://www.youtube.com/ Resolving www.youtube.com... 74.125.239.104, 74.125.239.101, 74.125.239.97, ... Connecting to www.youtube.com|74.125.239.104|:443... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: `index.html.3' [ ] 463,559 635K/s in 0.7s 2014-07-14 21:35:17 (635 KB/s) - `index.html.3' saved [463559] real 0m0.899s user 0m0.032s sys 0m0.012s
        maple10年前(2014-07-15)回复
        • 你可以访问一下作者的 Github 页面,去看看别人是否也有类似现象。
          秋水逸冰10年前(2014-07-15)回复
          • 非常感谢您的帮忙! 有一个,说的是防火墙规则问题,我比较了,不是这个问题。。。 是不是 kvmla(服务商) 默认限制了,我的vps才用几天,就是自己用,应该不会被ban,且能访问所有被墙网站,但是都不流畅,下载youtube视频的速度却很稳定。。。下边是服务端的sysctl # Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details. # Controls IP packet forwarding net.ipv4.ip_forward = 0 //这是是不是要修改呢? # Controls source route verification # net.ipv4.conf.default.rp_filter = 1 # Do not accept source routing # net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel # kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. # kernel.core_uses_pid = 1 # Controls the use of TCP syncookies net.ipv4.tcp_syncookies = 1 # Disable netfilter on bridges. net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0 # Controls the default maxmimum size of a mesage queue # kernel.msgmnb = 65536 # Controls the maximum size of a message, in bytes # kernel.msgmax = 65536 # Controls the maximum shared segment size, in bytes # kernel.shmmax = 4294967295 # Controls the maximum number of shared memory segments, in pages # kernel.shmall = 268435456 ---------------------------- 另外vps 的内存是1G,下边的优化参数是不是要修改? net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.ip_local_port_range = 10000 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000 net.core.rmem_max = 67108864 net.core.wmem_max = 67108864 net.ipv4.tcp_rmem = 4096 87380 67108864 net.ipv4.tcp_wmem = 4096 65536 67108864 net.core.netdev_max_backlog = 250000 net.ipv4.tcp_mtu_probing=1
            maple10年前(2014-07-16)回复
            • 无需改配置。更多原因抱歉我也不知道,因为我不是这个 Shadowsocks 的作者,同时我也没用过 kvmla 的 VPS。
              秋水逸冰10年前(2014-07-16)回复
  9. 谢谢博主的脚本。已经解决了。改下配置文件里面的服务端IP就行了。谢谢
    尘岳10年前(2014-07-10)回复
  10. 脚本能改成多Ip的不 IP=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.*' | cut -d: -f2 | awk '{ print $1}' | head -1`; 假如VPS 上有多个IP 自动创建多个配置文件
    幽灵10年前(2014-07-04)回复
    • 默认创建一个,如果有多 IP,手动创建即可。如果脚本自动创建多个配置,那启动时只能选一个,总不能把所有的配置都启动一遍吧。
      秋水逸冰10年前(2014-07-05)回复
  11. 感谢楼主的一键包 很好用简直大救星,不知道能不能做个openwrt上的一键包。。。。
    xjn10年前(2014-07-02)回复
    • 我没有那个测试条件。
      秋水逸冰10年前(2014-07-02)回复
      • 再请教下楼主 这个localport好像是可改的? 我用ss客户端改成其他也行,那么配置文件里的1080有什么作用呢?
        xjn10年前(2014-07-03)回复
        • 翻到之前的评论了,楼主无视我把!
          xjn10年前(2014-07-03)回复
  12. 我改了 iptables里也没有那条规则 8417 也在监听公网端口 10.223.1.xxx:8417 0.0.0.0:* listening 但是用“影梭”登录的时候“请检查你的网络状态后并重试”网络确实有的,wifi和3G都试了,iptables没有regect 请问这是什么情况呢?
    jing931010年前(2014-06-30)回复
    • 配置文件错误,10.223.1.xxx 是内网 IP,把配置文件里的 server 的值改为你的 VPS 的公网 IP 即可。
      秋水逸冰10年前(2014-07-01)回复
  13. 请问怎么改server ip啊? 8989用不了啊
    jing931010年前(2014-06-30)回复
    • 请参考本教程的详细说明以及评论,8989 是端口号,如果你想修改端口号,配置文件是 /etc/shadowsocks/config.json ,修改此文件里对应的 server_port 后,再执行 /etc/init.d/shadowsocks restart 重启即可,如果开启了防火墙,记得对你所修改的端口号放行。
      秋水逸冰10年前(2014-06-30)回复
  14. 请问怎么改server ip啊?
    jing931010年前(2014-06-30)回复
  15. 配置成功以后 怎么改server ip ?请赐教
    jing931010年前(2014-06-30)回复