CentOS 全局代理设置以命令行环境为主,核心是三处配置:用环境变量让当前会话立即走代理,用 /etc/profile.d 脚本让所有登录用户自动继承代理,再为 yum 或 dnf 单独配置仓库代理保证软件包下载顺畅。本文从临时使用讲到永久配置,并处理运维中最常见的 sudo 场景问题。
环境变量方式设置代理
想让当前终端立即通过代理访问网络,直接导出变量即可:
export http_proxy="http://192.168.1.10:7890"
export https_proxy="http://192.168.1.10:7890"
export no_proxy="localhost,127.0.0.1,.example.internal"
变量立即生效,但重启系统或关闭会话后就会丢失,适合临时测试使用。如果代理是 SOCKS5 类型,可以把变量值写为 socks5://127.0.0.1:1080,curl 等工具能够直接识别这种写法。
profile.d 脚本统一配置所有用户
CentOS 习惯把全局 Shell 配置放在 /etc/profile.d 目录下,系统为每个登录用户自动加载该目录中的脚本:
sudo vi /etc/profile.d/proxy.sh
写入以下内容并保存:
export http_proxy="http://192.168.1.10:7890"
export https_proxy="http://192.168.1.10:7890"
export no_proxy="localhost,127.0.0.1,192.168.0.0/16"
export HTTP_PROXY="http://192.168.1.10:7890"
export HTTPS_PROXY="http://192.168.1.10:7890"
赋予可执行权限并在当前会话立即加载:
sudo chmod +x /etc/profile.d/proxy.sh
source /etc/profile.d/proxy.sh
此后每个新开的 SSH 会话都会自动携带代理变量。运维批量部署时,只需要用配置管理工具分发这一个脚本文件,即可让整个机房的代理策略保持一致。
yum 与 dnf 的代理配置
CentOS 7 使用 yum,CentOS 8 及 Stream 版本改用 dnf,两者的代理配置语法完全相同,只是主配置文件位置不同:
sudo vi /etc/yum.conf
在 [main] 段中追加代理参数:
proxy=http://192.168.1.10:7890
proxy_username=proxyuser
proxy_password=proxypass
dnf 用户对应编辑 /etc/dnf/dnf.conf。也可以在单个 repo 文件中写入 proxy 参数,实现只有指定仓库走代理。保存后运行以下命令验证:
sudo yum makecache
sudo dnf repolist
能正常拉取仓库元数据,说明软件源代理已经生效。
常见问题与验证方法
- sudo 后代理失效:sudo 默认清空环境变量,执行
sudo visudo在配置中加入Defaults env_keep += "http_proxy https_proxy no_proxy",或临时改用 sudo -E。 - 验证出口地址:执行
curl -s ifconfig.me,返回代理服务器的 IP 即代表配置成功。 - wget 单独配置:个别版本不读取环境变量,可在 /etc/wgetrc 中写入 http_proxy 地址并设置 use_proxy=on。
- systemd 服务不走代理:服务进程不经过登录流程,需要为对应服务单独创建环境变量覆盖文件。
按照环境变量、包管理器、sudo 白名单三个层面依次配置后,CentOS 即可实现覆盖日常运维场景的完整全局代理。
Article ID: 42
(本文仅供技术交流,请遵守法律法规)