linux客户端科学上网(k8s安装联网问题)


    原来安装openstack的时候曾经碰到访问国外资源的时候网络不稳定,后面通过租用VPS,上面安装shadowsocks服务端,在客户端linux上安装客户端sslocal和redsocks。其中linux客户端的安装还是比较麻烦的,现在开始学习k8s,软件源基本都是google公司的,有些源可以在国内镜像找到,但是有些还是不行,还是需要科学上网才能彻底解决这个问题。

    这次的科学上网,在linux上我准备通过容器镜像来完成,这会比较干脆干净,本来k8s就安装了docker的,linux下的一切程序都容器化,也是一种好习惯。

    注意,前提是已经有VPS,并在上面搭建了shadowsocks服务端程序。

    直接在linux下执行命令:

[root@k8s1 software]# docker search sslocal
INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/sgrio/alpine-sslocalproxy          Tiny image which brings you a http proxy b...   2                    [OK]
docker.io   docker.io/ahui/sslocal                       shadowsocks go client,  size < 5m               1                    
docker.io   docker.io/tangym/privoxy                     A caching proxy server with sslocal running.    1                    [OK]
docker.io   docker.io/uglycat/shadowsocks-sslocal        shadowsocks-sslocal                             1                    [OK]
docker.io   docker.io/wuwengang/docker-sslocal-privoxy   Turn shadowsocks into socks5 and http           1                    [OK]

    看中了上面的最后一行“docker.io/wuwengang/docker-sslocal-privoxy”的镜像,使用sslocal + prixoxy 实现linux的http/https代理 。

    找到这个镜像原始的git地址,直接git clone到本地进行制作:

原始定制方法:
git clone https://github.com/wuwengang/docker-sslocal-privoxy.git
使用Docker基于alpine linux将shadowsocks转为socks5与http
一.使用方法
1.使用docker build -t 镜像名:版本号 路径
例子:
docker build -t sslocal:latest .
表示使用当前路径的Dockerfile文件生成镜像
2.运行容器
docker run -ti --restart=always --name sslocal    
-d -p 8118:8118 -p 1080:1080 -e SS_SERVER=服务器ip地址    
-e SS_SERVER_PORT=服务器端口 -e SS_S
ERVER_PASSWD=123456 -e ENCRYPT_METHOD=aes-256-cfb    
-e SS_LOCAL_PORT=1080 sslocal:latest

    为了以后更方便使用,直接将这个镜像export出来并下载到本机以备后用。

  docker export -o sslocal.tar sslocal

    编辑环境变量文件.bashrc ,将http/https代理指向上面容器sslocal中privoxy提供的本机8118端口,并wget www.google.com.hk进行测试,成功。

vi ~/.bashrc
export http_proxy=http://127.0.0.1:8118
export https_proxy= 

[root@k8s1 tmp]# wget www.google.com.hk
--2018-09-27 17:12:21--  http://www.google.com.hk/
Connecting to 127.0.0.1:8118... connected.
Proxy request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’

    [  <=>                                                                                                                                                 ] 16,475      57.9KB/s   in 0.3s   

2018-09-27 17:12:22 (57.9 KB/s) - ‘index.html’ saved [16475]

    接下来,需要设置docker使用sslocal提供的socks5代理,这样docker可以直接通过sslocal程序提供的1080的socks5端口,进行科学上网。

    注意,docker需要专门进行设置socks的代理,原来我的理解是设置了http/https的代理就可以了,但是发现不行,后面查了相关的文章才发现docker也需要设置代理才行。

设置docker代理配置

mkdir /etc/systemd/system/docker.service.d
vim  /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="ALL_PROXY=socks5://127.0.0.1:1080"

重启服务:
root@:~# systemctl daemon-reload
root@:~# systemctl restart docker
验证:
root@:~#systemctl show --property=Environment docker
Environment=ALL_PROXY=socks5://127.0.0.1:1080


    接下来,就可以开心的yum安装以及docker下载外国镜像了。



猜你喜欢

转载自blog.51cto.com/yuweibing/2286887