前言

由于使用nodejs安装包非常困难,因此萌生了使用 shadowsocks 的念头。
本文记录了我在 CentOS 7 上成功安装运行 shadowsocks 客户端的过程。
本文的过程我已在本地 CentOS 上成功运行 。

安装 pip

Pip 是 Python 的包管理工具,这里我们用 pip 安装 shadowsocks。

有些文章会介绍用 yum install -y pip 安装,我用的是官方一个最小化的 CentOS,没有这个包,所以手动安装。

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py

安装pip方法二

适用于 CentOS/Fedora/RedHat/OpenSUSE

sudo yum install python-setuptools && easy_install pip

适用于 Debian/Ubuntu

sudo apt-get install python-pip

Shadowsocks服务端

有了 pip 之后,安装 shadowsocks 就是很简单的事情了

安装

pip install --upgrade pip   #更新pip(视情况更新)
pip install shadowsocks    #安装

配置

下面,我们还需要添加一些设置才能让 shadowsocks 按照我们期望的方式工作。

首先,创建一个配置文件 /etc/shadowsocks.json, 输入如下信息

单用户

{
    "server":"x.x.x.x",  # Shadowsocks服务器地址一般是0.0.0.0
    "server_port":1035,  # Shadowsocks服务器端口 自由更改
    "local_address": "127.0.0.1", # 本地IP  不用改
    "local_port":1080,  # 本地端口
    "password":"password", # Shadowsocks连接密码 自己的密码
    "timeout":300,  # 等待超时时间
    "method":"aes-256-cfb",  # 加密方式
    "fast_open": false,  # true或false。开启fast_open以降低延迟,但要求Linux内核在3.7+ 
    "workers": 1  #工作线程数 
}

多用户

{
    "server":"your_server_ip",
    "port_password":{
        "8381":"pass1",
        "8382":"pass2",
        "8383":"pass3",
        "8384":"pass4"
    },
    "timeout":300,
    "method": "aes-256-cfb",
    "fast_open":false,
    "workers":1
}

启动/停止/重启

ssserver -c /etc/shadowsocks.json -d restart

在服务器上成功启动 shadowsocks 服务之后,就可以去他们在 GitHub 的官方主页下载相应的客户端了。shadowsocks 分别提供了Windows版,Android版和OSX/iOS客户端。使用方法较为简单,本文就不再做详细介绍了。

————————————————————————————————————————————————————————————————————————

以下是centos系统客户端的一些配置和服务搭建。

Shadowsocks 客户端

安装

pip install --upgrade pip
pip install shadowsocks

配置

新建配置文件:
vi /etc/shadowsocks.json

填写以下内容

{
"server":"x.x.x.x", #你的 ss 服务器 ip
"server_port": 10001, #你的 ss 服务器端口
"local_address": "127.0.0.1", #本地ip
"local_port": 1080, #本地端口
"password":"password", #连接 ss 密码
"timeout":300, #等待超时
"method":"aes-256-cfb", #加密方式
"workers": 1 #工作线程数
}

后台运行Shadowsocks

sslocal -c /etc/shadowsocks.json -d start  #启动
sslocal -c /etc/shadowsocks.json -d stop   #停止
echo "sslocal -c /etc/shadowsocks.json -d start " /etc/rc.local #设置自启动 

Privoxy

Shadowsocks使用socks5协议,而终端很多工具目前只支持http和https等协议,所以我们为终端设置Shadowsocks的思路就是将socks5协议转换成http协议,然后为终端设置即可。

下载安装文件

wget http://www.privoxy.org/sf-download-mirror/Sources/3.0.26%20%28stable%29/privoxy-3.0.26-stable-src.tar.gz
tar -zxvf privoxy-3.0.26-stable-src.tar.gz
cd privoxy-3.0.26-stable

privoxy-3.0.26-stable 是目前最新的稳定版,建议在下载前去 Privoxy 官网下载页 检查一下版本。

新建用户(可选)

Privoxy 强烈不建议使用 root 用户运行,所以我们使用 useradd privoxy 新建一个用户.

安装

autoheader && autoconf
./configure
make && make install

配置

vi /usr/local/etc/privoxy/config

找到以下两句,确保没有注释掉

listen-address 127.0.0.1:8118    # 8118 是默认端口,不用改,下面会用到
forward-socks5t / 127.0.0.1:0  . # 这里的端口写 shadowsocks 的本地端口

注意

遇到Error: Wrong number of parameters for forward-socks4a directive in configuration file. 这个错误的原因就是忘记之前的那个点了!!!记住forward-socks5t / 127.0.0.1:1080 . 后面的那个点一定要有!!!!!

启动

privoxy --user privoxy /usr/local/etc/privoxy/config # 使用privoxy启动

临时代理

临时使用代理输入export http_proxy=http://localhost:8118 回车即可。
如果想撤销当前会话的http_proxy代理,使用unset http_proxy即可。

验证代理是否成功

没有挂代理的时候

curl ip.gs
# 显示本机ip

挂代理后:

$ export http_proxy=http://localhost:8123
$ curl ip.gs
显示 shadowsocks 服务器ip

永久代理

配置 /etc/profile
编辑:

vi /etc/profile

添加下面两句:

export http_proxy=http://127.0.0.1:8118 #这里的端口和上面 privoxy 中的保持一致
export https_proxy=http://127.0.0.1:8118

运行以下,立即生效代理配置:

source /etc/profile

测试生效:

curl www.google.com

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

Proxychains

有了privoxy ,为什么还要Proxychains呢?因为有时候全局代理反而会带来一些麻烦,使用Proxychains可以根据情况选择是否挂代理。

安装Proxychains

git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
./configure
make && make install
cp ./src/proxychains.conf /etc/proxychains.conf
cd .. && rm -rf proxychains-ng  # 删除安装包

编辑proxychains配置

vim /etc/proxychains.conf

将socks4 127.0.0.1 9095改为

socks5 127.0.0.1 1080   # 这里的端口写 shadowsocks 的本地端口

使用方法

在需要代理的命令前加上 proxychains4 ,如:

proxychains4 wget http://xxx.com/xxx.zip

后记

如果不能访问,请重启机器,依次打开 shadowsocks 和 privoxy 再测试.

nohup sslocal -c /etc/shadowsocks.json /dev/null 2>&1 &
privoxy --user privoxy /usr/local/etc/privoxy/config # 使用privoxy启动

如果不需要用代理了,记得把 /etc/profile 里的配置注释掉,不然会一直走代理流量。

主要参考: https://brickyang.github.io/2017/01/14/CentOS-7-安装-Shadowsocks-客户端/