分类

Linux 系统代理设置

2019-08-28 09:01 linux

目前 linux 终端里经常要下载一些东西, 比如:

  • git clone 一些内部的项目代码
  • go dep 下载一些第三方模块
  • depot_tools 下载谷歌官方的项目
  • cargo 更新包依赖

这些情况, 有部分网站是无法直连的, 还有一些即使边得上, 速度也很差. 针对这些应用, 我们可以设置一下终端里的代理环境, 使用 VPS 上布署的 中转服务器加速请求.

设置代理服务器

shadowsocks 目前是不错的工具, 这里不再详细讲.

在远程 VPS 上安装方法也很简单:

$ sudo apt install shadowsocks-libev

该包会提供 ss-server 服务端命令, 配置文件位于 /etc/shadowsocks-libev/config.json. 把密钥, 端口号等信息填入, 然后重启一下服务即可:

$ sudo systemctl restart shadowsocks-libev

在本地的电脑上安装其客户端:

$ sudo apt install shadowsocks-libev
$ sudo systemctl stop shadowsocks-libev
$ sudo systemctl disable shadosocks-libev

写一个 sslocal.json 的客户端配置, 对应于刚刚的服务器端配置, 然后启动即可:

$ ss-local -c sslocal.json

也可以放在后台运行:

$ setsid ss-local -c sslocal.json 1>/dev/null 2>/dev/null </dev/null &

配置 proxychains

proxychains 的做法是通过 LD_PRELOAD 的方法注入到被代理的 程序, 后者在创建 socket 连接时, 使用的是 proxychains 提供的接口, 这几个接口都 已使用了代理.

这种方法好处是对应用透明, 不需要修改应用. 但有一个限制就是应用要链接到 libc. 而像 golang 这样的语言默认是静态链接的, 而且不依赖 libc, 因为它标准库里直接 绑定了内核的系统调用接口. 所以默认情况下, 使用 golang 编写的应用无法使用这类代理.

安装 proxychains:

$ sudo apt install proxychains4

proxychains 的配置文件位于 /etc/proxychains4.conf, 只需要在里面加入:

socks5 127.0.0.1 1080

即可使用. 其中 1080 端口是刚刚配置 ss-local 时在本地暴露的 sock5 代理端口.

使用方法也很简单:

$ proxychains git clone https://github.com/rust-lang/rust

速度快多了.

配置 privoxy

刚才说到了, golang 编写的应用, 默认无法使用 socks5 代理, 但它支持 http 代理. 而 privoxy 就可以将 socks5 代理转为 http 代理.

安装:

$ sudo apt install privoxy

配置文件位于 /etc/privoxy/config, 修改配置, 加入 sock5:

# 使用的 socks5 代理地址是 127.0.0.1:1080
forward-socks5  /   127.0.0.1:1080  .

# 暴露出来的 http 代理地址是 localhost:1081
listen-address  localhost:1081

之后重启服务:

$ sudo systemctl restart privoxy

下面测试一下:

$ export HTTP_RPOXY=http://127.0.0.1:1081 HTTPS_PROXY=http://127.0.0.1:1081
$ go get golang.org/x/net

如果一切正常的话, golang 编写的应用就可以走 socks5 代理了.