安装 Shadowsocks
添加yum源后使用yum安装,安装完成后,会有
ss-local
,ss-manager
,ss-nat
,ss-redir
,ss-server
,ss-tunnel
命令可用
cd /etc/yum.repos.d/
curl -O https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo
yum install -y shadowsocks-libev
有现成的rpm包,也可以是用
rpm -ivh
安装
如果安装报类似如下错误
Error: Package: shadowsocks-libev-3.1.3-1.el7.centos.x86_64 (librehat-shadowsocks)
Requires: libsodium >= 1.0.4
Error: Package: shadowsocks-libev-3.1.3-1.el7.centos.x86_64 (librehat-shadowsocks)
Requires: mbedtls
说明系统没有启用 EPEL (Extra Packages for Entreprise Linux).那么我们需要首先启用 EPEL,再安装 shadowsocks-libev
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y shadowsocks-libev
常见问题
- 执行
ss-server
报错:ss-server: error while loading shared libraries: libmbedcrypto.so.0: cannot open shared object file: No such file or directory
使用 root 身份执行以下命令即可
cd /usr/lib64
ln -s libmbedcrypto.so.1 libmbedcrypto.so.0
添加配置文件
COPR 里的shadowsocks-libev默认读取位于
/etc/shadowsocks-libev/config.json
的配置文件,我们可以根据需要参考以下配置文件进行修改
{
"server": "0.0.0.0",
"server_port": 1997,
"password": "1997sty",
"method": "aes-256-cfb",
"mode": "tcp_and_udp"
}
- server : 选填,默认
0.0.0.0
.配置客户端时填入服务器的实际IP.0.0.0.0
表明服务端接受来自任何网络接口的连接.配置服务端时填入0.0.0.0
总是能生效,而不必填入服务器自身的IP - server_port : 必填.需要在客户端配置时填入相同的值.此处填入服务端要监听的端口.需要选择 1024 或以上的端口号,否则启动
ss-server
时将会需要root
权限,而默认的服务文件则是以nobody用户启动Shadowsocks的.如需选用低于 1024 的端口,也可执行命令sudo setcap 'cap_net_bind_service=+ep' /usr/bin/ss-server
赋予相应权限,后续就可以使用nobody用户或普通用户启动Shadowsocks或执行systemctl edit shadowsocks-libev
命令,并输入以下内容
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
- password : 必填.需要在客户端配置时填入相同的值.连接服务端所需的密码,建议替换为复杂密码,避免被攻击者暴力破解.
- method : 选填,默认
rc4-md5
.需要在客户端配置时填入相同的值.服务端所用的加密方法,推荐以下几种算法:
chacha20-ietf-poly1305
具有优秀的安全性,更佳的性能,属于 AEAD 加密算法,少部分客户端(如 iOS Wingy)不支持此算法;aes-256-cfb
具有足够安全性,且被各服务端及客户端广泛支持;rc4-md5
算法快速,且具有一定的安全性,适合运算能力受限的设备如路由器等.
- mode : 选填,默认
tcp_only
.服务器所要监听的协议,可填tcp_only
,udp_only
和tcp_and_udp
.填入tcp_and_udp
相当于命令行上提供-u
参数;填入udp_only
相当于命令行上提供 -U 参数.
如果想要变更默认的配置文件,或者提供其他命令行参数,我们可以修改
/etc/sysconfig/shadowsocks-libev
.其中 CONFFILE 指定了shadowsocks-libev所读取的配置文件;DAEMON_ARGS 则指定了额外的命令行参数,此处的-u
表示启用 UDP 协议
# Configuration file
CONFFILE="/etc/shadowsocks-libev/config.json"
# Extra command line arguments
DAEMON_ARGS="-u"
配置防火墙
CentOS7系统自带了防火墙,为了使我们的 Shadowsocks 服务器能够正常工作,我们还需要添加相应的防火墙规则.假设我们在配置 Shadowsocks 服务器的端口时填入了
"server_port": 10443
,那我们可以使用以下命令.如果服务器是运行在VPS或云服务器上,则往往还需要在云服务商的控制面板中配置相应的防火墙规则
firewall-cmd --permanent --add-port=10443/tcp
firewall-cmd --permanent --add-port=10443/udp
firewall-cmd --reload
启动 Shadowsocks 服务
有了 Shadowsocks 服务端的配置文件后,我们通过 systemd 启动 Shadowsocks 的服务端服务
#启动 Shadowsocks 服务
systemctl start shadowsocks-libev
#检查服务状态
systemctl status shadowsocks-libev
#服务开机自启
systemctl enable shadowsocks-libev
#查看 Shadowsocks 服务的全部日志
journalctl -u shadowsocks-libev
配置客户端
关于客户端的配置文件,可以复制使用服务端的配置文件,并将
server
中的地址换为服务端的实际 IP 或域名,再加上关于local_address
和local_port
的配置即可
{
"server": "ss.zzz.buzz",
"server_port": 10443,
"local_address": "0.0.0.0",
"local_port": 1080,
"password": "zzz.buzz",
"method": "aes-256-cfb",
"mode": "tcp_and_udp"
}
https://zzz.buzz/zh/gfw/2017/08/14/install-shadowsocks-server-on-centos-7/
0 条评论