一个计算机技术爱好者与学习者

0%

Linux配置网络代理

1. 网络代理

《Linux配置SNAT上网》一文中,我们了解到,通过SNAT的方式能够让局域网中所有主机都能访问外网。
而网络代理,也能让局域网中所有主机都能访问外网。并且,如果网络代理支持科学上网,那么所有使用这个代理的主机也可以科学上网。

本文我们就来学习一下Linux中常见的网络代理配置方法,参考文档:

已知网络代理的IP和PORT为:192.168.56.1:7890

2. bash环境网络代理

bash环境网络代理设置,是适用于全局的,因为绝大部分软件都会从环境变量中读取数据,比如curl命令、yum命令、wget命令等等。

2.1. 临时配置

1
export https_proxy=http://192.168.56.1:7890 http_proxy=http://192.168.56.1:7890 all_proxy=socks5://192.168.56.1:7891 ftp_proxy=http://192.168.56.1:7890 no_proxy=localhost,127.0.0.1,192.168.56.0/24

这里的no_proxy需要注意,不同的软件对于它有不同的处理。最典型的例子:

  • example.com:大部分软件都支持精确匹配和下一级域名匹配,例如还可以匹配subdomain.example.com
  • .example.com:curl剥离前缀.,对于example.com不会使用代理;wget不会剥离前缀.,对于example.com会使用代理
  • 192.168.56.0/24:只有Go和Ruby支持这种CIDR块

详情参考We need to talk: Can we standardize NO_PROXY?

2.2. 永久生效

1、写入配置内容到.bashrc文件中

1
2
3
4
5
export https_proxy=http://192.168.56.1:7890 
export http_proxy=http://192.168.56.1:7890
export all_proxy=socks5://192.168.56.1:7891
export ftp_proxy=http://192.168.56.1:7890
export no_proxy=localhost,127.0.0.1,192.168.56.0/24

写到.bashrc,无论是登录session还是非登录session,都可以使用这些变量,详情参考bash_profile和bashrc的区别

2、使生效

1
source .bashrc

3. wget代理

编辑文件/etc/wgetrc,添加内容:

1
2
3
http_proxy = http://192.168.56.1:7890  
https_proxy = http://192.168.56.1:7890
ftp_proxy = http://192.168.56.1:7890

4. yum代理

编辑文件/etc/yum.conf,添加内容:

1
proxy=http://192.168.56.1:7890

5. 浏览器上网代理

以Firefox浏览器为例:
Edit -> Preferences -> Advanced -> Network
在Connection下点击Settings,manual proxy configuration里设置IP和PORT。

6. docker pull代理

1、创建docker配置目录

1
mkdir /etc/systemd/system/docker.service.d

2、添加代理配置

1
vim /etc/systemd/system/docker.service.d/http-proxy.conf

写入内容为:

1
2
3
4
[Service]
Environment="HTTP_PROXY=http://192.168.56.1:7890"
Environment="HTTPS_PROXY=http://192.168.56.1:7890"
Environment="NO_PROXY=localhost,127.0.0.1,192.168.56.200,harbor.voidking.com"

需要注意的是,20.10.18和更早的docker版本,NO_PROXY不支持CIDR,详情参考NO_PROXY does not support CIDR notation

3、重启docker

1
2
systemctl daemon-reload
systemctl restart docker

4、查看docker代理

1
2
systemctl show docker --property Environment
docker info | grep Proxy

7. docker build代理

docker build时,容器内需要使用pip下载依赖。

1
2
3
4
5
6
docker build \
--network=host \
--build-arg HTTP_PROXY=http://192.168.56.1:7890 \
--build-arg HTTPS_PROXY=http://192.168.56.1:7890 \
-t voidking/demo:v1.0.0 . \
-f Dockerfile_test

8. pip代理

执行pip命令时直接指定代理

1
pip install xxx --proxy http://192.168.56.1:7890

9. git代理

git代理,一般不用单独配置,它会使用bash环境网络代理。
但是,如果bash环境网络代理使用的是squid,那么需要单独配置下git代理。

1
2
git config --global http.proxy http://192.168.56.101:3128
git config --global https.proxy http://192.168.56.101:3128

不需要git代理时,可以取消。

1
2
git config --global --unset http.proxy
git config --global --unset https.proxy