Unix 平台下各种加速配置
本文主要阐述在 *Uinx 平台下,各种常用开发工具的加速配置, 加速前提是你需要有一个能够加速的 socks5 端口,常用工具请自行搭建;本文档包括 docker、terminal、git、chrome 常用加速配置
一、加速类型
目前大部分工具在原始版本都是只提供 socks5 加速,常用平台一些工具已经支持手动设置加速端口,如 telegram、mega 同步客户端等等;但是某些工具并不支持 socks5,通用的加速目前各个平台只支持 http、https 设置(包括 terminal 下);综上所述,在设置之前你至少需要保证有一个 socks5 端口能够进行加速,然后根据以下教程将 socks5 转换成 http,最后配置各个软件或系统的加速方式为 http,这也是我们常用的某些带有图形化客户端实际的背后实现
二、socks5 to http
sock5 转 http 这里采用 privoxy 进行转换,根据各个平台不同,安装方式可能不同,主要就是包管理器的区别,以下只列举 Ubuntu、Mac 下的命令,其他平台自行 Google
Mac:
brew install privoxy
Ubuntu:
apt-get -y install privoxy
安装成功后,需要修改配置以指定 socks5 端口以及不代理的白名单,配置文件位置如下:
Mac:
/usr/local/etc/privoxy/config
Ubuntu:
/etc/privoxy/config
在修改之前请备份默认配置文件,这是个好习惯,备份后修改内容如下:
# 转发地址
forward-socks5 / 127.0.0.1:1080 .
# 监听地址
listen-address localhost:8118
# local network do not use proxy
forward 192.168.*.*/ .
forward 10.*.*.*/ .
forward 127.*.*.*/ .
Mac:
brew services start privoxy
Ubuntu:
systemctl start privoxy
三、Docker 加速拉取 gcr.io 镜像
对于 docker 来说,terminal 下执行 docker pull
等命令实质上都是通过调用 docker daemon 操作的;而 docker daemon 是由 systemd 启动的(就目前来讲,别跟我掰什么 service start…);对于 docker daemon 来说,一旦它启动以后就不会再接受加速设置,所以我们需要在 systemd 的 service 配置中配置它的加速。
目前 docker daemon 接受标准的终端加速设置(读取 http_proxy
、https_proxy
),同时也支持 socks5 加速;为了保证配置清晰方便修改,这里采用创建单独配置文件的方式来配置 daemon 的 socks5 加速,配置脚本如下(Ubuntu、CentOS):
#!/bin/bash
set -e
OS_TYPE=$1
PROXY_ADDRESS=$2
if [ "${PROXY_ADDRESS}" == "" ]; then
echo -e "\033[31mError: PROXY_ADDRESS is blank!\033[0m"
echo -e "\033[32mUse: sudo $0 centos|ubuntu 1.2.3.4:1080\033[0m"
exit 1
fi
if [ "${OS_TYPE}" == "" ];then
echo -e "\033[31mError: OS_TYPE is blank!\033[0m"
echo -e "\033[32mUse: sudo $0 centos|ubuntu\033[0m"
exit 1
elif [ "${OS_TYPE}" == "centos" ];then
mkdir /etc/systemd/system/docker.service.d || true
tee /etc/systemd/system/docker.service.d/socks5-proxy.conf <<-EOF
[Service]
Environment="ALL_PROXY=socks5://${PROXY_ADDRESS}"
EOF
elif [ "${OS_TYPE}" == "ubuntu" ];then
mkdir /lib/systemd/system/docker.service.d || true
tee /lib/systemd/system/docker.service.d/socks5-proxy.conf <<-EOF
[Service]
Environment="ALL_PROXY=socks5://${PROXY_ADDRESS}"
EOF
fi
systemctl daemon-reload
systemctl restart docker
systemctl show docker --property Environment
[Service]
Environment="ALL_PROXY=socks5://1.2.3.4:1080
这样 systemd 会自动读取,只需要 reload 一下,然后 restart docker daemon 即可,此后 docker 就可以通过加速端口直接 pull gcr.io
的镜像;注意: 配置加速后,docker 将无法 pull 私服镜像(一般私服都是内网 DNS 解析),但是不会影响容器启动以及启动后的容器中的网络
四、Chrome 加速访问
对于 Chrome 浏览器来说,目前有比较好的插件实现用来配置根据策略的加速访问;这里使用的插件为 SwitchyOmega
4.1、SwitchyOmega 下载
默认情况下 SwitchyOmega
可以通过 Chrome 进行在线安装,但是众所周知的原因这是不可能的,不过国内有一些网站提供代理下载 Chrome 扩展的服务,如 https://chrome-extension-downloader.com
、http://yurl.sinaapp.com/crx.php
,这些网站只需要提供插件 ID 即可帮你下载下来;SwitchyOmega
插件的 ID 为 padekgcemlokbadohgkifijomclgjgif
,注意下载时不要使用 chrome 下载,因为他自身的防护机制会阻止你下载扩展程序;下载后打开 chrome 的扩展设置页,将 crx 文件拖入安装即可,如下所示:
4.2、SwitchyOmega 配置
SwitchyOmega 安装成功后在 Chrome 右上角有显示,右键点击该图标,进入选项设置后如下所示:
默认情况下左侧只有两个加速模式,一个叫做 proxy
另一个叫做 autoproxy
;根据加速模式不同 SwitchyOmega 在浏览网页时选择的加速通道也不同,不同的加速方式可以通过点击 新建情景模式 按钮创建,下面介绍一下常用的两种情景模式:
综上所述,首先应该创建(或者修改默认的 proxy 情景模式)一个代理服务器的情景模式,然后填写好你的加速 IP 和对应的协议端口;接下来在浏览器中切换到该情景模式尝试访问 kubenretes.io 等网站测试加速效果;成功后再次新建一个自动切换情景模式,保证 规则列表规则
一栏后面的下拉列表对应到你刚刚创建的代理服务器情景模式,默认情景模式
后面的下拉列表对应到直接连接情景模式,然后点击下面的 添加规则列表
按钮,选择 AutoProxy
单选框,规则列表网址
填写 https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
(这是一个开源项目收集的需要加速的网址列表);最后在浏览器中切换到自动切换情景模式,然后访问 kubernetes.io、baidu.com 等网站测试是否能自动切换情景模式
五、Terminal 加速
5.1、脚本方式
对于终端下的应用程序,百分之九十的程序都会识别 http_proxy
和 https_proxy
两个变量;所以终端加速最简单的方式就是在执行命令前声明这两个变量即可,为了方便起见也可以写个小脚本,示例如下:
sudo tee /usr/local/bin/proxy <<-EOF
#!/bin/bash
http_proxy=http://1.2.3.4:8118 https_proxy=http://1.2.3.4:8118 \$*
EOF
sudo chmod +x /usr/local/bin/proxy
5.2、proxychains-ng
proxychains-ng 是一个终端下的工具,它可以 hook libc 下的网络相关方法实现加速效果;目前支持后端为 http(s)/socks5(4a),前段协议仅支持对 TCP 加速;
Mac 下安装方式:
brew install proxychains-ng
Ubuntu 等平台下需要手动编译安装:
# 安装编译依赖
apt-get -y install gcc make git
# 下载源码
git clone https://github.com/rofl0r/proxychains-ng.git
# 编译安装
cd /proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
sudo make install
sudo make install-config
安装完成后编辑配置使用即可,Mac 下配置位于 /usr/local/etc/proxychains.conf
,Ubuntu 下配置位于 /etc/proxychains.conf
;配置修改如下:
# 主要修改 [ProxyList] 下的加速地址
[ProxyList]
socks5 1.2.3.4 1080
然后命令行使用 proxychains4 curl ip.cn
测试即可
六、Git 加速
目前 Git 的协议大致上只有三种 https
、ssh
和 git
,对于使用 https
方式进行 clone 和 push 操作时,可以使用第五部分 Terminal 加速方案即可实现对 Git 的加速;对于 ssh
、git
协议,实际上都在调用 ssh 协议相关进行通讯(具体细节请 Google,这里的描述可能不精准),此时同样可以使用 proxychains-ng
进行加速,不过需要注意 proxychains-ng
要自行编译安装,同时 ./configure
增加 --fat-binary
选项,具体参考 GitHub Issue;ssh
、git
由于都在调用 ssh 协议进行通讯,所以实际上还可以通过设置 ssh 的 ProxyCommand
来实现,具体操作如下:
sudo tee /usr/local/bin/proxy-wrapper <<-EOF
#!/bin/bash
nc -x1.2.3.4:1080 -X5 \$*
#connect-proxy -S 1.2.3.4:1080 \$*
EOF
sudo chmod +x /usr/local/bin/proxy-wrapper
sudo tee ~/.ssh/config <<-EOF
Host github.com
ProxyCommand /usr/local/bin/proxy-wrapper '%h %p'
EOF
需要注意: nc 命令是 netcat-openbsd 版本,Mac 下默认提供,Ubuntu 下需要使用 apt-get install -y netcat-openbsd
安装;CentOS 没有 netcat-openbsd,需要安装 EPEL 源,然后安装 connect-proxy 包,使用 connect-proxy 命令替代
原文: https://mritd.me/2018/03/28/unix-proxy-setting/