在 Ubuntu 上配置 Shadowsocks 客户端

2020-10-10 SS/SSR
在 Ubuntu 上配置 Shadowsocks 客户端

对于需要在特定网络环境下访问互联网的 Ubuntu 用户来说,配置一个代理工具是常见需求。Shadowsocks 是一种轻量级的代理协议,因其配置相对简单而受到欢迎。本文将以 Ubuntu 18.04 为例,介绍如何安装和配置 Shadowsocks 的客户端,并说明如何设置两种不同的代理模式。

Shadowsocks 是什么

我的理解是,Shadowsocks 本质上是一个安全的代理工具。它由两部分组成:运行在你本地电脑上的客户端(ss-local)和运行在境外服务器上的服务端(ss-remote)。它的工作流程可以概括为:你的网络请求先被本地客户端加密,然后发送到远程服务端解密,再由服务端去访问目标网站。返回的数据则走一个反向的流程。这样,你的网络流量就被“伪装”起来了。需要强调的是,使用它的前提是你需要拥有一台在防火墙之外的服务器来部署服务端。

安装与基础配置

在 Ubuntu 上安装 Shadowsocks 客户端非常便捷。通过系统的包管理工具,执行 sudo apt install shadowsocks 命令即可完成安装。安装后,你可以通过 sslocal --version 来确认版本。

接下来是关键的一步:配置客户端。你需要编辑一个配置文件(通常是 /etc/shadowsocks/config.json),填入你的服务器信息。这个文件里包含了几个核心参数:server(服务器IP地址)、server_port(服务器端口)、password(密码)以及 method(加密方法)。这些信息必须与你服务端的设置完全一致。配置完成后,使用 sslocal -c /etc/shadowsocks/config.json 命令即可启动客户端。

两种代理模式:PAC 与全局

启动 Shadowsocks 客户端只是搭建好了本地代理服务器,要让系统的网络流量真正通过它,还需要进一步配置。这里主要介绍两种模式:PAC 模式和全局模式。

PAC(代理自动配置)模式是一种“智能”代理。系统会根据一个规则列表(通常是 GFWList)来决定哪些网站的访问需要走代理,哪些可以直接连接。这种模式比较节省流量,访问国内网站速度更快。而全局模式,顾名思义,会尝试让所有的网络流量都经过代理服务器。需要注意的是,这里所说的“全局”主要针对浏览器等应用,并非绝对意义上的整个操作系统。

如何配置 PAC 模式

配置 PAC 模式需要一个 PAC 文件。我们可以使用一个叫 GenPAC 的工具来生成它。首先通过 sudo pip install genpac 命令安装此工具。然后,在终端里执行一条生成命令,例如 sudo genpac --pac-proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac。这条命令会生成一个名为 autoproxy.pac 的文件。

生成文件后,打开 Ubuntu 的系统设置,进入“网络”->“网络代理”,将方法选为“自动”,并在配置URL中填入你刚才生成的 PAC 文件的完整路径。保存后,你的浏览器(通常默认使用系统代理)就会根据 PAC 文件的规则来决定是否使用代理了。

如何配置全局模式

如果你希望所有 HTTP/HTTPS 请求(包括在终端里使用 curlwget 命令)都走代理,就需要配置全局模式,这通常需要借助另一个工具 privoxy

首先安装它:sudo apt install privoxy。接着,编辑其配置文件 /etc/privoxy/config,确保 listen-address 127.0.0.1:8118 这一行没有注释,这表示 privoxy 监听本机的 8118 端口。然后,添加一行 forward-socks5t / 127.0.0.1:1080 .,意思是将收到的请求转发给本机 1080 端口运行的 Shadowsocks 客户端。修改后重启 privoxy 服务。

最后,再次进入系统设置的“网络代理”,这次将方法改为“手动”,并在 HTTP 和 HTTPS 代理中均填写 127.0.0.1 和端口 8118。这样,系统的网络请求就会先发给 privoxy,再由它转发给 Shadowsocks,从而实现全局代理。你可以通过切换“自动”(PAC模式)和