在Ubuntu系统中我们往往需要设置代理上网,比如在Ubuntu22.04中,通过图形化界面的设置方式如下:
这里假设代理服务器地址为:
192.168.1.103:1080
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5COxcTM1UzN5UDZ2ADOkJTNzYzX4UzMzEDMyIzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
==============================================
上面的操作是在图形化界面中进行的,但是平时使用Ubuntu系统往往会用到server版本,此时就无法使用图形化界面进行设置了,那么这又该如何呢?
其实,上面的操作等价与在shelll终端中进行环境变量设置,如:
export http_proxy=http://192.168.1.103:1080/
export HTTP_PROXY=http://192.168.1.103:1080/
export https_proxy=http://192.168.1.103:1080/
export HTTPS_PROXY=http://192.168.1.103:1080/
export all_proxy=socks://192.168.1.103:1080/
export ALL_PROXY=socks://192.168.1.103:1080/
export no_proxy=localhost,127.0.0.0/8,::1
export NO_PROXY=localhost,127.0.0.0/8,::1
在linux系统中负责代理设置的变量有:
http_proxy
HTTP_PROXY
https_proxy
HTTPS_PROXY
ftp_proxy
FTP_PROXY
all_proxy
ALL_PROXY
no_proxy
NO_PROXY
由于操作系统的变量设置区分大小写,而且不同的应用读写变量时有的是根据大写的变量,有的是根据小写的变量,因此在设置时需要大小写变量都进行设置。
还有all_proxy和ALL_PROXY的权限是最低的,如果其他的proxy环境变量有进行设置则优先读取其他变量的设置。
说明一下,之所以设置这些变量可以使一些应用读取到proxy设置从而进行代理,其原因是这些应用在进行网络连接时默认是会优先读取这些proxy环境变量,如果这些变量有设置,那么就默认使用这些变量的设置进行proxy上网,当然也有一些应用是不读取这些环境变量的,因此对于这种不读取系统proxy变量的应用进行代理上网时往往就需要一些单独的设置,比较常见的有ssh等,当然对于这些应用也有单独设置代理的方法,如:
SSH如何通过proxy进行服务器连接
git clone 如何通过proxy进行远程代码仓库拷贝下载
需要注意有一种说法是在进行all_proxy和ALL_PROXY设置时,可以写成下面的形式:
export all_proxy=socks5h://192.168.1.103:1080/
export ALL_PROXY=socks5h://192.168.1.103:1080/
之所以这样写是因为socks5h代表进行proxy时将dns查询也进行proxy,而socks则代表在进行proxy时不对dns查询进行proxy,不过这种说法并没有被验证,不过在ssh代理的设置过程中socks5h确实代表将dns查询也进行proxy。
可以看下在操作系统图形化界面中设置好代理后,在终端中对这些变量的输出:
========================================================
参考:
https://www.liangzl.com/get-article-detail-34403.html