本文以 Vultr 购买的 CentOS 7 主机为例,详细介绍了编译并部署 shadowsocks-libev的方法,并分别说明了不使用 obfs 和使用 obfs 混淆的安装配置方法。建议以密钥的方式绑定主机并以此登录,注意保护好自己的密钥。注:示例命令均是在 root 用户下执行的。
准备工作
首先,更新系统:
1 | yum update |
为了防止被人暴力扫描破解登录密码,我们先对 Vultr 自动生成的密码进行重置:
1 | passwd root |
这里我个人使用了 256 位随机密码,包含特殊字符。
另外也可以安装 fail2ban
来禁止掉反复尝试登录的ip地址:
1 | yum install fail2ban |
启用 fail2ban :
1 | systemctl enable fail2ban |
编辑 fail2ban 配置文件:
1 | vim /etc/fail2ban/jail.local |
这是一个新文件,添加如下的内容:
1 | [DEFAULT] |
重启 fail2ban :
1 | systemctl restart fail2ban |
下面分别是查看 fail2ban 状态的两条命令:
1 | fail2ban-client status |
编译安装
不使用 obfs 混淆的,不用安装 simple-obfs 。
编译和安装 ss-libev
安装一些必要的软件:
1 | yum install git vim wget -y |
下载 shadowsocks-libev 的源代码:
1 | git clone https://github.com/shadowsocks/shadowsocks-libev.git |
开始进行编译:
1 | ./autogen.sh && ./configure --prefix=/usr && make |
编译和安装 simple-obfs
安装一些必要的软件:
1 | yum install zlib-devel openssl-devel -y |
安装 simple-obfs :
1 | git clone https://github.com/shadowsocks/simple-obfs.git |
配置
1. 仅使用 shadowsocks-libev
修改配置文件:
1 | mkdir -p /etc/shadowsocks-libev |
1 | { |
如想要同时启用 ipv4 和 ipv6 ,则 config.json
应为:
1 | { |
2. 使用带 obfs 混淆的 shadowsocks-libev
修改配置文件:
1 | mkdir -p /etc/shadowsocks-libev |
1 | { |
如想要同时启用 ipv4 和 ipv6 ,则 config.json
应为:
1 | { |
带 obfs 混淆的客户端配置
在客户端配置文件中添加:
1 | "plugin":"obfs-local", |
设置开机自动启动
1 | vim /etc/systemd/system/shadowsocks.service |
1 | [Unit] |
1 | systemctl enable shadowsocks |
运行
启动 shadowsocks 服务:
1 | systemctl start shadowsocks |
此时,我们还不能通过外网访问服务器,因为防火墙并没有开启相应的端口,编辑防火墙开放的端口服务:
1 | vim /etc/firewalld/zones/public.xml |
添加如下行:
1 | <port protocol="tcp" port="服务器端口"/> |
使新规则生效:
1 | firewall-cmd --complete-reload |
至此,shadowsocks 已经可以使用。可以查看服务状态:
1 | systemctl status shadowsocks |
更新
更新需要重新编译。
更新 ss-libev
1 | systemctl stop shadowsocks |
在 shadowsocks-libev
目录下:
1 | git pull |
1 | systemctl start shadowsocks |
更新 obfs
1 | systemctl stop shadowsocks |
在 simple-obfs
目录下:
1 | git pull |
1 | systemctl start shadowsocks |
故障解决
提示如下:
This system doesn’t provide enough entropy to quickly generate high-quality random numbers
Installing the rng-utils/rng-tools or haveged packages may help.
On virtualized Linux environments, also consider using virtio-rng.
The service will not start until enough entropy has been collected.
安装 rng-tools :
1 | yum install rng-tools |
提示如下:
[simple-obfs] ERROR: failed to resolve server name, wait 2 seconds
可能是你的主机本身没有 ipv6 地址,可在配置文件 /etc/shadowsocks-libev/config.json
中把 "server"
一栏更改如下:
1 | "server":"0.0.0.0", |