Ubuntu下的代理配置
1. 软件选择:
在2022年,clash已经成为了主流的VPN工具,因此这篇笔记也主要推荐clash的软件,至于随着技术变革,也只有软件的变化,其余操作仍然维持不变的~
说到clash,在Linux下,Clash for windows
就是一个最好用的软件,这个软件支持mac os,windows和Liinux。(尽管他的名字带有for windows
,或许这个软件最初只是为windows准备的)
2. 代理配置:
Ubuntu系统配置代理,按照如下进行操作:设置 -> 网络 -> 网络代理(齿轮图标)-> 手动
随后,在HTTP代理
和HTTPS代理
上填写IP: 127.0.0.1
和port: 7890
这里IP
127.0.0.1
即可,至于端口,要看软件中选择监听的端口号。clash相关软件一般是7890
! 注意:不推荐在Ubuntu下使用socket代理,因为截至2022年,越来越多的网站开始使用websocket进行数据交互,根据实际体验,开启socket代理会导致此类网站连接异常(出现connection error的情况),比如grammarly的word插件就无法正常运行。
不过socket代理只有mac
和linux
才需要考虑,windows并不存在(或者说我没有感知到)。
2.1 配置命令行代理:
1 |
|
当然更完整的是这个:
1 |
|
在命令行输入如下命令后,一般命令行中大部分程序会遵循此代理,然而事无绝对,因此后面会给出部分程序的代理设置方式。
在ubuntu较早版本,我记得git的代理是不经过
http_proxy
的, 需要这样设置
1
2git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890但是在使用Ubuntu20.04和Ubuntu22.04时, 发现git会使用
http_proxy
中的代理了, 因此git就不单独讲了
Docker的代理则更为复杂, 因为在Dockerfile构建过程中, 环境变量会被构建出的容器自身覆盖(或者说本不存在覆盖,只是自立更生罢了), 而且容器与Host之间的网络映射和端口问题又蒙上一层纱, 因此Docker的代理设置会单独列出一节, 不过等日后我再次遇到这种场景时再仔细总结一下.
2.2 apt-get代理设置
有两种可选的方式:
sudo vim /etc/apt/apt.conf
- 在
/etc/apt/apt.conf.d/
下创建一个单独的配置文件(推测该目录应该是APT的配置导入目录), 然后添加内容
1 |
|
2.3 socks代理配置
对于某些应用程序是无法使用HTTP代理的,这时候,需要设置socket代理, Linux命令行并没有直接设置的方法,需要在系统设置里设置,如果用的软件是cfw,则设置为127.0.0.1:7890
.但不是很推荐设置系统里的socks代理,只设置终端就够了.
1 |
|
2.4 git ssh端口代理
这里还列出git的原因是, 有时候, 并不通过htps拉取和上传代码, 设置的是SSH端口的仓库链接, 这时候代理就完全没用了, 需要额外设置.
编辑~/.ssh/config
, 然后基本应该没得问题了~ 就再不会因为连接超时报错:kex_exchange_identification: Connection closed by remote host fatal: Could not read from remote repository.
1 |
|
用Windows的同学就发现了,模仿上面的内容是没用的,上面只是为Linux和Mac os准备,windows用户需要这样设置:
注意: GIT_PATH和username请务必替换为自己的,不要把方框和变量名也照抄了
- 安装好git,并记录好git的安装目录: 用变量
GIT_PATH
指代 - 找到ssh的配置文件:
c:\Users\[username]\.ssh\config
1 |
|
2.5 Docker代理配置:
Docker在默认情况下不会继承环境变量中的http_proxy和https_proxy, 需要再额外设置:https://docs.docker.com/network/proxy/
由于Docker创建的是虚拟机,因此代理配置应该使用LAN下的ip!
2.5.1 修改配置文件方式: ~/.docker/config.json
每当创建容器时,都会从配置文件读取代理配置:(代理服务器别忘了换成自己的)
1 |
|
对于k8s,官方有对应的proxy设置指南:https://minikube.sigs.k8s.io/docs/handbook/vpn_and_proxy/
1 |
|
1 |
|
2.5.2 参数指定的方式:
Variable | Dockerfile example | docker run example |
---|---|---|
HTTP_PROXY | ENV HTTP_PROXY="http://192.168.1.12:3128" | --env HTTP_PROXY="http://192.168.1.12:3128" |
HTTPS_PROXY | ENV HTTPS_PROXY="https://192.168.1.12:3128" | --env HTTPS_PROXY="https://192.168.1.12:3128" |
FTP_PROXY | ENV FTP_PROXY="ftp://192.168.1.12:3128" | --env FTP_PROXY="ftp://192.168.1.12:3128" |
NO_PROXY | ENV NO_PROXY="*.test.example.com,.example2.com" | --env NO_PROXY="*.test.example.com,.example2.com" |
2.5.3 在使用minukube的情况下:
1 |
|
由于no_proxy很难涵盖所有服务,导致出现莫名奇妙的问题,因此推荐用registry
1 |
|