网络代理
《Linux配置SNAT上网》一文中,我们了解到,通过SNAT的方式能够让局域网中所有主机都能访问外网。
而网络代理,也能让局域网中所有主机都能访问外网。并且,如果网络代理支持科学上网,那么所有使用这个代理的主机也可以科学上网。
本文我们就来学习一下Linux中常见的网络代理配置方法,参考文档:
已知网络代理的IP和PORT为:192.168.56.1:7890
bash环境网络代理
bash环境网络代理设置,是适用于全局的,因为绝大部分软件都会从环境变量中读取数据,比如curl命令、yum命令、wget命令等等。
临时配置
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:7890 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?
永久生效
1、写入配置内容到.bashrc
文件中
1 | export https_proxy=http://192.168.56.1:7890 |
写到.bashrc
,无论是登录session还是非登录session,都可以使用这些变量,详情参考bash_profile和bashrc的区别。
2、使生效
1 | source .bashrc |
wget代理
编辑文件/etc/wgetrc
,添加内容:
1 | http_proxy = http://192.168.56.1:7890 |
yum代理
编辑文件/etc/yum.conf
,添加内容:
1 | proxy=http://192.168.56.1:7890 |
浏览器上网代理
以Firefox浏览器为例:
Edit -> Preferences -> Advanced -> Network
在Connection下点击Settings,manual proxy configuration里设置IP和PORT。
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 | [Service] |
需要注意的是,20.10.18和更早的docker版本,NO_PROXY不支持CIDR,详情参考NO_PROXY does not support CIDR notation
3、重启docker
1 | systemctl daemon-reload |
4、查看docker代理
1 | systemctl show docker --property Environment |
docker build代理
docker build时,容器内需要使用pip下载依赖。
1 | docker build \ |
pip代理
执行pip命令时直接指定代理
1 | pip install xxx --proxy http://192.168.56.1:7890 |