10.1 系统代理

系统代理是指通过配置环境变量或应用程序参数,使网络请求通过指定的代理服务器转发的机制。在 V2Ray 或 Clash 等代理软件开启允许局域网连接后,即可按照下文进行配置。

配置系统代理前,首先需要查看当前用户正在使用的 Shell 类型,因为不同 Shell 对环境变量的设置方式存在差异。执行以下命令可查看当前 Shell:

$ echo $SHELL

HTTP_PROXY 代理

本节介绍通过环境变量配置系统代理的方法。多数命令行工具会读取 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 等环境变量来确定是否使用代理。

若使用 sh、bash 或 zsh

注意

在 sh、bash 或 zsh 中,环境变量 HTTP_PROXY 必须使用大写形式,小写形式不会生效。

设置 HTTP 代理环境变量,该变量将被当前 Shell 及其子进程继承:

# export HTTP_PROXY=http://192.168.X.X:7890

警告

本文中的 192.168.X.X:7890 仅为示例,请根据实际情况填写,直接复制粘贴不会生效。IP 地址与端口号须与实际代理服务监听的端点一致。

取消已设置的 HTTP 代理环境变量:

# unset HTTP_PROXY

若使用 csh

注意

在 csh 或 tcsh 中,环境变量 http_proxy 必须使用小写形式,大写形式不会生效。

在 csh 或 tcsh 中设置 HTTP 代理环境变量,需使用该 Shell 特有的 setenv 命令:

在 csh 或 tcsh 中取消已设置的 HTTP 代理环境变量,使用对应的 unsetenv 命令:

Git 代理

Git 的代理配置方法,请参见本书其他章节。

浏览器配置代理

本节介绍 Chromium 和 Firefox 浏览器的代理配置方法。

Chromium 浏览器在 ~/.config 等目录下没有专门的代理配置文件,也不支持通过环境变量指定默认代理服务器,但可以通过启动参数设置代理。

为支持此参数的应用程序指定代理服务器和端口:

启动 Chrome 并使用指定的本地代理服务器:

默认使用 HTTP 协议,为支持此参数的应用程序指定 SOCKS 代理服务器和端口:

为支持此参数的应用程序指定 SOCKS4 代理服务器和端口:

在图形界面下让 Chromium 默认使用代理打开,可通过修改桌面启动文件实现持久化配置。

首先,找到桌面环境为 Chromium 创建的桌面(desktop)文件,通常位于 ~/.local/share/applications/ 目录下。

使用编辑器打开上述目录下的 Chromium desktop 文件 chromium-browser.desktop,找到 Exec=chrome %U 这一行,并在其后添加所需参数:

启动 Chrome 并使用指定的代理服务器:

为 Firefox 单独配置代理

Firefox 浏览器在设置页面的网络设置选项卡提供了图形化代理配置模块。

Firefox 代理设置

参考资料

课后习题

  1. 修改 Chromium 的 desktop 文件,使其默认使用 SOCKS5 代理启动,验证其 DNS 查询是否也通过代理转发,并将其方法贡献至本文。

  2. 为 csh 编写一个代理开关脚本,在设置代理后验证 git、fetch 等命令的实际网络流量路径,思考为何不同 Shell 对环境变量大小写有不同约定,究竟是哪个文件规定的。

  3. 为 Firefox 编写一个 shell 脚本,通过修改其配置文件实现代理自动切换,并对比与 Chromium 参数配置方式在用户可控性上的差异。最终尝试将其贡献到 Firefox 项目。

最后更新于