CentOS7 安装 ShadowSocks 客户端

背景

由于某些原因,服务器安装软件,插件或者脚本等,因为网络问题而连接不上。就需要在服务器上安装 ShadowSock(以下简称:SS) 客户端来搭建“梯子”。

在 CentOS 7 或 RHEL (Red Hat Enterprise Linux) 7 下安装 Shadowsocks 的客户端非常容易。由于在 COPR (Cool Other Package Repo) 中已经有打包好的 s-libev,因此我们只需几条命令便能完成安装。

安装 ShadowSocks

root 身份登录服务器,或者通过命令 sudo su - 输入密码,来切换为 root 用户。如果使用普通用户,也需要普通用户加入 root 组,并在每条命令前添加 sudo

安装 s-libev

cd /etc/yum.repos.d/
curl -O https://copr.fedorainfracloud.org/coprs/librehat/s/repo/epel-7/librehat-s-epel-7.repo
yum install -y s-libev

安装完成后,会有 ss-local, ss-manager, ss-nat, ss-redir, ss-server, ss-tunnel 命令可用。

其中,作为客户端,我们需要的是 ss-local,不过后文中我们将通过服务文件启动 Shadowsocks,而不会直接与 ss-local 命令打交道。

备注:如果安装报类似如下错误

Error: Package: s-libev-3.1.3-1.el7.centos.x86_64 (librehat-s)
           Requires: libsodium >= 1.0.4
Error: Package: s-libev-3.1.3-1.el7.centos.x86_64 (librehat-s)
           Requires: mbedtls

说明系统没有启用 EPEL (Extra Packages for Entreprise Linux)。那么我们需要首先启用 EPEL,再安装 s-libev:

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install -y s-libev

验证安装

在继续后文的配置之前,我们先在命令行中执行一次 ss-local 命令,以确认 s 及其依赖已正确安装。

如运行正常,则跳过常见问题,继续添加配置文件。

常见问题

执行 ss-local 报错:ss-local: 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 里的 s-libev 默认读取位于 /etc/s-libev/config.json 的配置文件,我们可以根据需要参考以下配置文件进行修改:

{
    "server": "10.10.10.10",
    "server_port": 9999,
    "local_port": 1080,
    "password": "ss-password",
    "method": "aes-256-cfb",
    "mode": "tcp_and_udp",
    "timeout": 600
}
  • "server": 必填,填入要连接的 s 服务器域名或 IP。
  • "server_port": 必填,填入服务器上 s 所监听的端口。
  • "local_port": 必填,填入本地 s 客户端 SOCKS5 代理要监听的端口。
  • "password": 必填,密码,需与 s 服务器端配置一致。
  • "method": 必填,加密方法,需与 s 服务器端配置一致。
  • "mode": 选填,默认 "tcp_only"。可填 "tcp_only", "udp_only""tcp_and_udp"
  • "timeout": 选填,不活动连接的保持时间。默认 60 秒,设置较长时间有助于保持 HTTP 长连接等。设置时间过长则会导致不必要地占用过多 s 服务器资源。

如果想要变更默认的配置文件,或者提供其他命令行参数,我们可以修改 /etc/sysconfig/s-libev

# Configuration file
CONFFILE="/etc/s-libev/config.json"

# Extra command line arguments
DAEMON_ARGS="-u"

其中 CONFFILE 指定了 s-libev 所读取的配置文件;DAEMON_ARGS 则指定了额外的命令行参数,此处的 "-u" 表示启用 UDP 协议。

需要注意的是,命令行参数 DAEMON_ARGS 比配置文件 CONFFILE 中指定的选项优先级要更高一些。

启动服务

通过 systemd 启动 Shadowsocks 的客户端服务:

systemctl enable --now s-libev-local

以上命令同时也会配置 Shadowsocks 客户端服务的开机自动启动。

检查服务状态

要确认 Shadowsocks 的服务运行状态及最新日志,我们可以执行命令:

systemctl status s-libev-local

要查看 Shadowsocks 服务的全部日志,我们可以执行命令:

journalctl -u s-libev-local

测试:

curl --socks5 127.0.0.1:1080 http://httpbin.org/ip
# 返回你的 ss 服务器 ip 则测试成功
{
  "origin": "10.10.10.10" # s服务器IP
}

配置代理

安装 privoxy

yum install privoxy

修改 privoxy 配置文件 /etc/privoxy/config

listen-address 127.0.0.1:8118
forward-socks5t / 127.0.0.1:1080 .

启动 privoxy 服务

systemctl enable privoxy
systemctl start privoxy
systemctl status privoxy

设置代理环境变量

echo -e "export http_proxy=http://127.0.0.1:8118" >> /etc/profile
echo -e "export https_proxy=http://127.0.0.1:8118" >> /etc/profile
source /etc/profile

测试

curl www.google.com

返回一大堆 HTML 则说明 s 正常工作了。

备注:如果不需要用代理了,把 /etc/profile 里的配置注释即可。

配置 yum 代理

# 打开yum.conf配置文件
vim /etc/yum.conf

# 然后在里面加入一行
proxy=https://127.0.0.1:8118

# 保存并退出

配置 wget 代理

# 打开wget配置文件
vim /etc/wgetrc

# 在里面找对应的参数位置,如果都被注释掉了,则添加配置
use_proxy = on
https_proxy=https://127.0.0.1:8118
http_proxy=http://127.0.0.1:8118
ftp_proxy=http://127.0.0.1:8118

# 保存并退出

你可能感兴趣的:(CentOS7 安装 ShadowSocks 客户端)