Ubuntu配置Shadowsocks全局代理

由于阳哥的需求,要在 Ubuntu 下使用 Shadowsocks 访问交易所的 API,不过自己用 Python 实现代理太麻烦了,所以就想要配置全局代理。一开始想要在系统的 All Settings > Network > Network proxy 里配置,结果发现协议不同,四处查找,终于找到了解决方案。

虽然 Github 上的 Shadowsocks 被删了,但是 Ubuntu 软件源上的还在呀。滑稽

安装相关软件

1
sudo apt-get install shadowsocks privoxy

如果是全局代理的话,需要使用 Shadowsocks + privoxy 的方案,但如果只是在 Firefox 或者 Chrome 上使用,就不用这么麻烦,Shadowsocks + SwitchyOmega 就可以了,极其方便。

配置 Shadowsocks

安装完后输入 sslocal -h 便可以看到帮助信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ sslocal -h
usage: sslocal [OPTION]...
A fast tunnel proxy that helps you bypass firewalls.

You can supply configurations via either config file or command line arguments.

Proxy options:
-c CONFIG path to config file
-s SERVER_ADDR server address
-p SERVER_PORT server port, default: 8388
-b LOCAL_ADDR local binding address, default: 127.0.0.1
-l LOCAL_PORT local port, default: 1080
-k PASSWORD password
-m METHOD encryption method, default: aes-256-cfb
-t TIMEOUT timeout in seconds, default: 300
-a ONE_TIME_AUTH one time auth
--fast-open use TCP_FASTOPEN, requires Linux 3.7+

General options:
-h, --help show this help message and exit
-d start/stop/restart daemon mode
--pid-file PID_FILE pid file for daemon mode
--log-file LOG_FILE log file for daemon mode
--user USER username to run as
-v, -vv verbose mode
-q, -qq quiet mode, only show warnings/errors
--version show version information

Online help: <https://github.com/shadowsocks/shadowsocks>

如果 Ubuntu 源是清华源,可选参数会少一点(版本不一样),输入 sslocal -h 后结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ sslocal -h
usage: sslocal [-h] -s SERVER_ADDR [-p SERVER_PORT]
[-b LOCAL_ADDR] [-l LOCAL_PORT] -k PASSWORD [-m METHOD]
[-t TIMEOUT] [-c CONFIG] [--fast-open] [-v] [-q]

optional arguments:
-h, --help show this help message and exit
-s SERVER_ADDR server address
-p SERVER_PORT server port, default: 8388
-b LOCAL_ADDR local binding address, default: 127.0.0.1
-l LOCAL_PORT local port, default: 1080
-k PASSWORD password
-m METHOD encryption method, default: aes-256-cfb
-t TIMEOUT timeout in seconds, default: 300
-c CONFIG path to config file
--fast-open use TCP_FASTOPEN, requires Linux 3.7+
-v, -vv verbose mode
-q, -qq quiet mode, only show warnings/errors

Online help: <https://github.com/clowwindy/shadowsocks>

可以直接使用命令行输入账号密码等参数运行,如:

1
sslocal -s SERVER_ADDR -p SERVER_ADDR -k PASSWORD

或者使用配置文件的方式,更方便:

  1. 新建配置文件如 config.json,按以下格式配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
    "server": "192.168.1.1",
    "server_port": 8388,
    "local_address": "127.0.0.1",
    "local_port": 1080,
    "password": "password",
    "method": "aes-256-cfb",
    "timeout": 600,
    }
  2. 通过以下命令启动 Shadowsocks 客户端服务

    1
    2
    3
    4
    $ sslocal [-c config.json] [-d start]
    INFO: loading config from config.json
    shadowsocks 2.1.0
    YYYY-mm-dd HH:MM:SS INFO     starting local at 127.0.0.1:1080

配置 privoxy

1
sudo vi /etc/privoxy/config

将第 1336 行的注释去掉,变成这样:

1
2
3
4
#      To chain Privoxy and Tor, both running on the same system, you
# would use something like:
#
forward-socks5t / 127.0.0.1:1080 .

启动 privoxy

只要 privoxy 服务开着就行,一般安装完后都会自动启动的。

1
sudo service privoxy start

设置全局 HTTPHTTPS 代理

privoxy 默认开启的监听端口为 8118

1
2
export http_proxy='http://localhost:8118'
export https_proxy='https://localhost:8118'

自此,大功告成。

为了方便日后使用,也可以将设置全局代理、启动 Shadowsocks的工作写成自动脚本来运行。

参考资料