Linux设置网络代理

设置网络代理操作简介

设置临时代理(仅在当前shell会话生效)

export http_proxy=http://ip:port

export https_proxy=http://ip:port

设置永久代理

vi /etc/profile

export http_proxy=http://ip:port

export https_proxy=http://ip:port

source /etc/profile

取消代理

unset http_proxy

unset https_proxy

有关网络代理的几个环境变量

|-------------|--------------------------------------------------|--------------------------------------------------------------------------------------------------------|
| 环境变量 | 介绍 | 取值 |
| http_proxy | http协议的网络连接使用该代理。 | ip:port http://ip:port socks://ip:port socks4://ip:port socks4://ip:port |
| https_proxy | https协议的网络连接使用该代理。 | 同上 |
| ftp_proxy | ftp协议使用该代理。 | 同上 |
| all_proxy | 所有网络协议的网络连接都使用该代理, all_proxy变量的优先级低于http_proxy等。 | 同上 |
| no_proxy | 无需代理的主机和域名, 支持通配符, 多个主机/域名之间使用逗号间隔。 | localhost,10.*,*.ad.com, |

几个环境变量中,all_proxy指定了全部协议都可以通过这个代理,它的优先级要低于其他变量。例如系统配置了http_proxy和all_proxy变量,则curl在进行http访问的时候会通过http_proxy指定的代理,在进行https访问的时会首先尝试通过https_proxy指定的代理,但是由于并没有设置https_proxy,最终all_proxy指定的代理生效。

代理协议简介

export http_proxy=http://ip:port

这里的两个http可能会引起误解,简单解释就是:

环境变量http_proxy指明了为哪种网络协议配置代理,这里是http协议。即只有http协议的网络请求会使用该环境变量配置的代理,其它网络协议,sftp等,则不会使用该环境变量配置的代理。

而其取值中的http,则表示的是代理服务器的服务协议,即系统与代理服务通信时使用的协议,比较常见的代理协议有

http://

https://

socks://

另外还有

ss://

ssr://

vmess://

等。

绝大部分程序都会支持http://协议的代理,大部分程序会支持socks://协议。

ss://、ssr://、vmess://等代理协议需要专用软件支持,并且由这些专用软件将另外将数据转换为http://、socks://协议以供其他应用使用。

http/https代理

工作在应用层上,能够代理客户机的http和https访问请求。

socks代理

工作在会话层,可以代理包括HTTP、HTTPS、POP3、SMTP、FTP、SFTP等各种类型的网络请求。

SOCKS 代理又分为 SOCKS4 和 SOCKS5。SOCK4仅支持TCP,SOCKS5 代理则既支持 TCP 协议又支持 UDP 协议,还支持身份验证机制、服务器端域名解析等。

可以明确使用

socks4://ip:port

socks5://ip:port

来区分协议版本,特别地,用socks5h://来替代socks5://,可以让域名解析在代理服务器进行,防止DNS污染。

使用示例

  1. 访问特定网络地址,无法访问

wget http://www.google.com

--2022-11-25 20:26:46-- https://www.google.com/

Resolving www.google.com (www.google.com)... 104.244.46.63, 2001::480e:cf5f

Connecting to www.google.com (www.google.com)|104.244.46.63|:443... ^C

  1. 配置网络代理

export https_proxy=http://xx.xx.xx.xx:9707

重新执行

wget http://www.google.com

仍然无法访问,这是因为本次网络访问使用的是http协议,而设置的环境变量却是https_proxy,假设改用https来访问:

wget https://www.google.com

则访问成功;同理,如果配置的是环境变量是http_proxy:

export http_proxy=http://xx.xx.xx.xx:9707

则网络请求:

wget http://www.google.com

能够执行成功。

常见问题

1. 代理无效

网络代理的环境变量只能算是建议,实际运行的程序不一定会去使用环境变量配置的网络代理,此时对应程序将绕过代理配置直接执行网络连接,表现为代理配置无效。

另外,还有环境变量的大小写问题,有的应用可能会去读取HTTP_PROXY等大写的环境变量,此时自然读取不到对应的值,这种情况下,可以通过对大小写的环境变量同时设置的方式来保证兼容性,例如:

export http_proxy=http://xx.xx.xx.xx:9707

export HTTP_PROXY=http://xx.xx.xx.xx:9707

export Http_Proxy=http://xx.xx.xx.xx:9707

相关推荐
落笔画忧愁e29 分钟前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书
小冷爱学习!36 分钟前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
技术小齐1 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
落幕2 小时前
C语言-进程
linux·运维·服务器
shimly1234563 小时前
tcpdump 用法示例
网络·测试工具·tcpdump
xmweisi5 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证
VVVVWeiYee5 小时前
BGP配置华为——路径优选验证
运维·网络·华为·信息与通信
DC_BLOG5 小时前
Linux-GlusterFS进阶分布式卷
linux·运维·服务器·分布式
yourkin6665 小时前
TCP...
服务器·网络·tcp/ip
cookies_s_s6 小时前
Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
linux·运维·服务器·数据结构·c++·算法·哈希算法