写在前面
最近因为要科学上网,准备自己搭个shadowsocks做梯子。为了提高效率,于是直接求助于某资深工程师,他甩给我一篇自己的ss搭建攻略,信誓旦旦说跟着做一定成。没想到其中的坑还是很多,所以还是写篇东西记录一下,防止下次再装ss的时候又踩坑。
安装过程
主要:操作系统环境为Centos7
1.更新系统库并下载依赖包
1 | yum update |
2.切换目录至/opt,下载shadowsocks-libev模块
1 | git clone https://github.com/shadowsocks/shadowsocks-libev.git |
3.安装(编译)shadowsocks-libev
1 | ./autogen.sh |
此处开始出现问题,首先是执行./autogen.sh时报如下错误:
1 | configure.ac:4: error: Autoconf version 2.67 or higher is required |
这个错误一目了然,就是autoconf版本过低,通过下述方式升级
1 | rpm -qf /usr/bin/autoconf 查看当前版本 |
接着./configure时报如下错误:
1 | configure: error: mbed TLS libraries not found |
显然是缺少依赖,处理之
1 | # Installation of MbedTLS |
处理完后运行./configure又报了如下错误:
1 | configure: error: The Sodium crypto library libraries not found |
看来还是缺少依赖,继续安装:
1 | # Installation of Libsodium |
配置shadowsocks服务端
1.为shadowsocks配置系统用户
1 | adduser --system --no-create-home -s /bin/false shadowsocks |
2.建立一个shadowsocks放配置文件的目录
1 | mkdir -m 755 /etc/shadowsocks |
3.创建一个配置文件
1 | vim /etc/shadowsocks/shadowsocks.json |
1 | { |
==从这里开始本次搭建过程最大的坑点出现了!!!==
上述是资深工程师提供的配置,按该配置无法启动服务,使用systemctl status shadowsocks命令查看到错误日志如下:
1 | ERROR: failed to set TCP_FASTOPEN_CONNECT |
说明目前不支持fast_open配置,需要在系统参数中开启,为了省事可以暂时拿掉该配置项,然而之后又报了错:
1 | ERROR: connect: Invalid argument |
一番资料查阅发现,新版本的shadowsocks服务端不再配置local_address和local_port项,删掉这两个配置项后终于是能够正常运行了。
==所以最终使用的正确配置是这样的:==
1 | { |
注册shadowsocks为系统服务
为了便于使用,下述步骤还是需要做的
1.创建/etc/systemd/system/shadowsocks.service文件
服务端和客户端的配置分别如下,大部分都是一样的,区别仅在于server使用ss-server启动,client使用ss-local启动
1 | [Unit] |
1 | [Unit] |
2.启用shadowsocks服务的命令
1 | systemctl daemon-reload |
另外,使用systemctl status shadowsocks查看日志前文已经有提及,如果安装的时候还有别的问题应该也能在里面发现些什么。最后提一句,如果ss还是无法使用,可能是防火墙的问题,最简单粗暴的方式——直接关掉它:
1 | systemctl stop firewalld.service |