一、缘由
在工作电脑上(Win10系统)安装了SSR客户端,实现了浏览器的科学上网。但是呢,使用命令行(无论是cmd还是Shell)从github上拉取代码、拉取Docker镜像,依然很慢,有时候还会连接超时,被墙,很是苦恼。
最典型的场景,在使用kubeadm工具安装k8s的时候,拉取的都是google的镜像,由于被墙,压根访问不通。你当然可以指定使用阿里云镜像库,但是其他插件的安装,比如存储插件rook、网络插件weave,还是要访问被墙的镜像库,就会下载不到 ,很烦。
最一劳永逸的办法就是,搞通网络,让Shell终端或者Docker pull可以使用sockts5代理访问被墙的资源。
二、思路
我工作电脑本地存在SSR客户端,可以翻墙,使用的是socks5协议。
一般cmd、shell、docker pull、git clone等命使用的都是http协议,可以配置http代理。
故考虑将http代理转换成socks5代理,这样命令行就能翻墙了。
具体流程图如下:
graph LR Cmd -->|http代理| Privoxy --> |Socks5代理|SSR客户端 --> SSR服务端
三、解决办法
1、实验环境
Ubuntu16.04 + Privoxy 3.0.24 + Win10 SSR客户端
2、安装privoxy
sudo apt-get install privoxy
3、修改配置
打开配置文件vim /etc/privoxy/config
,修改如下两处:
# 如果想让其他主机使用这个代理转换,可以监听0.0.0.0
listen-address 127.0.0.1:8118
# 这里填写局域网内SSR客户端的IP和端口,端口默认1080。
# 如果SSR客户端是在本地就写127.0.0.1:1080
forward-socks5 / 192.168.101.79:1080 .
4、启动privoxy服务
sudo service privoxy start
5、设置http和https的全局代理
export http_proxy='http://127.0.0.1:8118'
export https_proxy='http://127.0.0.1:8118'
注意:不建议将这个代理的环境变量写入profile文件,只建议在需要的时候在当前shell窗口写入这个变量即可。
6、测试
使用wget或者curl命令访google.com,返回正常页面内容即成功。
wget www.google.com
curl www.google.com
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com