Ubuntu 网络代理配置
Linux 中并没有“全局代理”这一说法,理论上来讲每个应用都可以配置自己的网络协议栈,绕开所谓的“代理”。
不过以 Ubuntu 为例,要达到接近全局代理的效果大概需要设置以下几个地方:
- 环境变量:
ALL_PROXY
,HTTP_PROXY
,HTTPS_PROXY
,HTTPS_PROXY
,NO_PROXY
,以及这些变量对应的小写形式。大多数网络库都会识别这几个环境变量。 - apt: 配置代理后能访问国外源。
- dconf/gsettings: dbus 相关的代理,gnome GUI 中的代理设置就是修改这里。
如果发现应用在配置以上三项以后依然不走代理,可能此应用使用自己的网络栈配置,绕开代理。可以看看应用官方有没有提供代理方法。
环境变量
把下面这一段内容补充上代理对应的 URL 后,放入到 ~/.bashrc
,即可为当前用户设置代理。
export ALL_PROXY=
export all_proxy=
export HTTP_PROXY=
export http_proxy=
export NO_PROXY=localhost,127.0.0.1,::1
export no_proxy=localhost,127.0.0.1,::1
如果希望为所有用户包括 root 设置代理,那就把内容写到 /etc/profile
中。
apt
如果只是暂时设置代理,一次性使用:
sudo apt -o Acquire::https::proxy="http://<proxy-url>:<port>/" update
sudo apt-get -o Acquire::http::proxy="http://<proxy-url>:<port>/" update
如果希望一直使用代理,可以将下面内容
Acquire::https::proxy "http://127.0.0.1:1080/";
Acquire::http::proxy "http://127.0.0.1:1080/";
写入文件 /etc/apt/apt.conf.d/12proxy
。
dconf/gsettings
这里主要会影响到 GUI 应用的代理配置,包括浏览器,桌面终端等。需要注意,这里设置的代理不会影响到 root。
可以直接通过图形界面来设置:
如果关闭了 GUI server 的话,一般不需要设置 dconf,通过更改 shell 的环境变量就能够让大部分 shell 应用走代理。