临时设置仅当前终端有效,需用export命令分设http_proxy和https_proxy,认证密码含特殊字符须url编码,验证须用curl -v https://httpbin.org/ip确认“via proxy”;永久生效应配置~/.bashrc(用户级)或/etc/environment(系统级),no_proxy必须显式设置内网地址且区分大小写,socks5代理须用proxychains-ng。

临时设置只对当前终端生效,适合验证代理连通性
直接在终端里敲 export http_proxy=http://192.168.1.100:8080 和 export https_proxy=http://192.168.1.100:8080,这俩变量就只在当前 shell 及其子进程里起作用。关掉终端就自动失效,最安全的试错方式。
注意三点:
-
http_proxy和https_proxy必须分开设,哪怕地址完全一样; - 如果代理要认证,密码里含
@或/时必须 URL 编码,比如pass@123得写成pass%40123,否则 shell 会把@当分隔符截断; - 验证别只跑
curl google.com,得加-v看真实连接路径:curl -v https://httpbin.org/ip,返回里有Connected to ... via proxy才算真走通。
永久生效得改对配置文件,不是所有地方都管用
用户级永久配置写进 ~/.bashrc 或 ~/.zshrc(取决于你用的 shell),末尾加几行 export,然后 source ~/.bashrc 生效。但这个只影响你手动打开的交互式终端,systemd 服务、cron 任务、GUI 应用启动的终端默认不读它。
想让 apt、git、wget 这些系统命令也认代理,得改系统级配置:
-
/etc/environment:最推荐,不依赖 shell,几乎所有命令都认,但语法严格——只写http_proxy="http://...",不能带export,值必须用双引号包裹,且不能有空格或未转义的特殊字符; -
/etc/profile:只影响登录 shell,Ubuntu 默认不 source 它,改了可能没反应; -
/etc/profile.d/xxx.sh:可读性好,适合团队统一管理,但同样只对交互式 shell 有效。
no_proxy 必须显式配,漏掉内网地址会出问题
NO_PROXY(全大写)是强制项,不设的话 localhost、127.0.0.1、Kubernetes API 地址、Docker daemon(如 unix:///var/run/docker.sock)全被转发到代理,结果就是超时或拒绝连接。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
写法要注意:
- 逗号分隔,不支持 CIDR,
192.168.0.0/16无效,得写成192.168.*或枚举关键 IP; - 大小写敏感,
NO_PROXY是标准名,小写的no_proxy只有部分老工具(如旧版wget)才 fallback 认; - 常见安全组合:
export NO_PROXY="localhost,127.0.0.1,::1,10.*,192.168.*,*.local"。
SOCKS5 代理不能靠环境变量,得用 proxychains-ng
环境变量只支持 http:// 和 https:// 协议前缀,socks5:// 写进去也没用——curl、wget、apt 全都不认。想让任意命令走 SOCKS5,必须用 proxychains-ng。
步骤很简单:
- 装:
sudo apt install proxychains-ng(Debian/Ubuntu); - 改配置:
sudo vim /etc/proxychains.conf,取消注释socks5 127.0.0.1 1080行,填对你的 SOCKS 地址; - 用:
proxychains curl https://httpbin.org/ip,输出里能看到代理跳转路径才算成功。
真正容易被忽略的是:环境变量和 proxychains 是两套机制,互不干扰。你既可以用 http_proxy 控制大部分工具,又用 proxychains 包裹特定命令走 SOCKS,但别指望 export https_proxy=socks5://... 能起作用——它从来就不能。










