docker容器使用socks5做全局代理
docker容器使用socks5做全局代理
背景
博主自行构建ubuntu容器来编译openwrt,部分组件构建需要获取墙外资源,博主使用的代理工具,支持的协议
为socks5,但是容器中部分工具如:wget 只支持http代理,所以在容器中需要配置socks5转http全局代理。
宿主机代理配置
需要修改宿主机代理客户端配置,方便局域网其他主机连接代理,容器使用的网络类型为桥接。之前也使用过host网
络,但是在容器中测试并未成功。为了能迅速编译openwrt,只能使用默认桥接网络进行代理。
首先配置客户端,允许局域网中其他主机进行连接,我这里直接配置成“0.0.0.0”,虽说这个不安全,但是在局域网中
风险暂时可以接受。这里需要注意,需要使用firewalld或者iptables启用本地代理端口。firewalld配置指令如下:
1 |
|
个人本地代理服务器配置如下:
宿主机本地的代理端口为:6666,未设置验证用户名和密码
可以使用局域网中其他主机测试一下,宿主机本地代理服务器是否配置成功,测试过程这里就不在赘述了。
容器构建配置
以下Dockerfile配置文件仅供参考,这是我为了编译openwrt自行构建的。除了openwrt编译需要的基础环境,
我增加了polipo,我使用polipo这个工具进行全局代理。设置http和https代理地址。由于polipo只存在ubuntu 20.04 LTS之前的版本库中,这里直接在最新版ubuntu中安装polipo的deb包。
1 |
|
polipo配置文件如下:
1 |
|
宿主机的ip为192.168.3.200,宿主机代理服务器启用的端口为:6666,polipo全局代理的端口为8183
使用以下指令进行构建
1 |
|
启用容器并进行测试
执行以下指令映射本地目录到容器中去
1 |
|
使用以下指令进入容器
1 |
|
polipo未设置自启动,需要手动运行
1 |
|
使用以下指令测试代理是否成功
1 |
|
显示得ip位于国外,代理成功,可以开心编译openwrt了。
注意
如果有http协议的代理工具,使用以下指令直接配置即可
1 |
|
这篇文章其实有点儿鸡肋,可以在容器之外安装polipo或者其他工具,将sock5协议转成http协议,然后配置全局代理即可。
参考内容
- https://wiki.archlinux.org/index.php/Polipo (简体中文))
- https://juejin.im/post/5c91ff5ee51d4534446edb9a
- https://milkice.me/2019/08/07/docker-network-tunnel/
- https://zhanghongtong.github.io/2019/06/27/Ubuntu%E5%92%8Cdocker%E4%BD%BF%E7%94%A8shadowsocks%E5%AE%A2%E6%88%B7%E7%AB%AF%E7%BF%BB%E5%A2%99/
- https://wiki.archlinux.org/index.php/Docker#Proxy_configuration
- https://docs.docker.com/network/proxy/#use-environment-variables
- https://kebingzao.com/2019/02/14/centos7-ss-proxy/
- https://kebingzao.com/2019/02/22/docker-container-proxy/
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!