跳转到内容

Linux 代理配置:各发行版完整指南

Гайды
Linux 代理配置:各发行版完整指南

Linux 中的代理配置主要通过环境变量、各服务专属的配置文件或桌面环境设置来完成,用于将网络流量转发至远程服务器。根据发行版的不同——无论是 Ubuntu 这类基于 Debian 的系统、CentOS 这类基于 RHEL 的系统,还是 Arch Linux——管理员都必须在操作系统的不同层面应用设置,才能全面覆盖 CLI 工具、包管理器和图形界面应用。

用于代理配置的全局环境变量

在 Linux 中设置代理最常用的方法是通过环境变量。绝大多数命令行工具都能识别这些变量,例如 curlwgetgit。您可以仅为单次会话临时设置这些变量,也可以为所有用户永久设置。

临时会话配置

若只想为当前终端会话应用代理,请直接在 shell 中导出这些变量。这种方式非常适合快速任务,或在不修改系统文件的情况下测试新的 GProxy 住宅代理接入点。

export http_proxy="http://username:[email protected]:8080"
export https_proxy="http://username:[email protected]:8080"
export ftp_proxy="http://username:[email protected]:8080"
export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"

永久的系统级配置

若要让这些设置在重启后依然生效并作用于所有用户,请修改 /etc/environment 文件。该文件是一份简单的键值对列表,不支持 export 这类 shell 脚本命令。

  1. 以 root 权限打开文件:sudo nano /etc/environment
  2. 添加代理字符串:
  3. 保存后重启会话,或执行 source /etc/environment

如需针对特定用户永久生效,请将这些行追加到 ~/.bashrc~/.zshrc 文件中。这样每当该用户打开终端时,代理都会自动启用。

Linux 代理配置:各发行版完整指南

各发行版包管理器的专属设置

虽然全局环境变量能覆盖许多工具,但包管理器往往需要单独显式配置,以绕过系统级限制,或确保管理任务期间更新能正常进行。

APT(Ubuntu、Debian、Linux Mint)

出于安全原因,Advanced Package Tool(APT)在某些配置下会忽略环境变量。要专门为 APT 设置代理,请在 /etc/apt/apt.conf.d/ 目录中创建一个配置文件。

sudo nano /etc/apt/apt.conf.d/95proxies

添加以下内容,注意每行结尾必须加分号:

Acquire::http::Proxy "http://username:[email protected]:8080";
Acquire::https::Proxy "http://username:[email protected]:8080";

DNF 与 YUM(Fedora、RHEL、CentOS、AlmaLinux)

对于基于 Red Hat 的发行版,配置在主 dnf.confyum.conf 文件中完成。对于必须通过受控网关拉取更新的服务器集群维护而言,这一点至关重要。

  1. 编辑配置文件:sudo nano /etc/dnf/dnf.conf
  2. 添加代理行:proxy=http://proxy.gproxy.com:8080
  3. 如需身份验证,请添加:
    • proxy_username=your_username
    • proxy_password=your_password

Pacman(Arch Linux、Manjaro)

Pacman 默认使用 curl 等外部下载器。要为 Arch Linux 更新配置代理,您应修改 /etc/makepkg.conf,或直接依赖全局环境变量。不过,若要精确控制下载器,请编辑 /etc/pacman.conf,取消 XferCommand 的注释并加入代理参数。

代理配置方法对比

选择哪种方法,取决于您需要的是系统级隧道还是针对特定应用的桥接。下表汇总了 Linux 环境中的主要方法。

方法 作用范围 配置文件 最佳适用场景
环境变量 用户/会话 ~/.bashrc CLI 工具(curl、wget、git)
系统环境 全局 /etc/environment 默认的系统级流量转发
APT 配置 应用级 /etc/apt/apt.conf.d/ Debian/Ubuntu 更新
DNF 配置 应用级 /etc/dnf/dnf.conf RHEL/CentOS 更新
Proxychains 动态 /etc/proxychains.conf 不原生支持代理的应用
Linux 代理配置:各发行版完整指南

使用 Proxychains 实现高级路由

部分应用不遵循环境变量,也没有内置代理设置。此时,proxychains4 是通过 hook 预加载强制让 TCP 连接走代理的标准工具。它在安全审计场景,或使用 GProxy 的 SOCKS5 代理时尤为实用。

首先安装软件包:sudo apt install proxychains4(Debian 系)或 sudo dnf install proxychains-ng(RHEL 系)。

编辑配置文件 /etc/proxychains4.conf。滚动到文件末尾,添加您的代理信息:

[ProxyList]
# 协议 主机 端口 用户名 密码
socks5 127.0.0.1 9050
http proxy.gproxy.com 8080 username password

使用时,只需在任意命令前加上 proxychains4

proxychains4 telnet example.com 80
proxychains4 nmap -sT -PN example.com

用 Python 实现代理管理自动化

对于在 Linux 上做网页抓取或自动化测试的开发者和数据科学家来说,以编程方式管理代理比手动配置更高效。借助 requests 库,您可以在脚本中动态轮换 GProxy 接入点。

import requests

# 定义 GProxy 凭据与接入点
proxy_host = "proxy.gproxy.com"
proxy_port = "8080"
username = "your_user"
password = "your_password"

proxies = {
    "http": f"http://{username}:{password}@{proxy_host}:{proxy_port}",
    "https": f"http://{username}:{password}@{proxy_host}:{proxy_port}",
}

def test_proxy():
    try:
        # 验证连接与 IP 地址
        response = requests.get("https://api.ipify.org?format=json", proxies=proxies, timeout=10)
        print(f"Current Outgoing IP: {response.json()['ip']}")
    except Exception as e:
        print(f"Connection Failed: {e}")

if __name__ == "__main__":
    test_proxy()

这段脚本可让您在启动大规模自动化任务之前,先确认 Linux 环境确实通过代理转发流量。在排查系统级代理为何未对某个 Python 虚拟环境生效时,它尤其有用。

在桌面环境中配置代理

如果您使用的是带图形用户界面(GUI)的 Linux 发行版,例如 GNOME 或 KDE Plasma,可以通过系统设置配置代理。对于 Chrome(它使用系统设置)等浏览器以及其他 GUI 应用,这是必需的。

GNOME(Ubuntu、Fedora Workstation)

依次进入 设置 > 网络 > 网络代理。选择「手动」,然后填写 HTTP、HTTPS 和 SOCKS 主机信息。GNOME 通过 gsettings 应用这些设置,您也可以在终端中修改:

gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.http host 'proxy.gproxy.com'
gsettings set org.gnome.system.proxy.http port 8080

KDE Plasma

在 KDE 中,依次进入 系统设置 > 网络 > 设置 > 代理。KDE 提供「使用指定的代理配置」选项,您可以为每种协议分别指定不同的代理。与 GNOME 不同,KDE 的设置保存在 ~/.config/kioslaverc 中。

安全注意事项与最佳实践

配置代理会涉及敏感凭据。若机器有多个用户可访问,把密码以明文形式存放在 /etc/environment.bashrc 中会带来风险。为降低风险,请考虑以下做法:

  • 限制权限:确保包含凭据的配置文件(如 /etc/dnf/dnf.confproxychains.conf)权限为 600640,将读取权限限制在 root 或特定管理员用户。
  • 使用 IP 白名单:如果您的代理服务商(例如 GProxy)支持,请用 IP 白名单代替用户名/密码验证。这样就无需在本地配置文件中保存凭据。
  • 排除本地流量:务必配置 no_proxy 变量。若未排除 localhost127.0.0.1,可能会破坏本地进程间通信,例如 Docker 容器、数据库(PostgreSQL/MySQL)和内部 API 所使用的通信。
  • UDP 场景用 SOCKS5:如果需要为使用 UDP 的应用(如某些流媒体服务或 DNS 查询)走代理,请确保使用 SOCKS5 代理而非普通 HTTP 代理,因为 HTTP 代理只支持 TCP。

要点总结

Linux 代理配置是一个多层次的过程,既要关注全局环境变量,也要关注各应用的专属设置。掌握这些配置后,您就能确保系统保持安全、匿名,并能有效绕过网络限制。

  • 全局设置用 /etc/environment,针对单个用户的覆盖设置用 ~/.bashrc
  • 始终单独配置包管理器(APT 或 DNF),确保系统更新不会被网络封锁打断。
  • 善用 Proxychains,用于不原生支持代理的应用或复杂的多跳路由。

实用技巧 1:排查问题时请使用 curl -v https://google.com。verbose 参数会明确显示正在使用哪个代理,以及身份验证握手是否成功。

实用技巧 2:在 Linux 上执行网页抓取等高性能任务时,请将 GProxy 的住宅代理与 Python 的 requestsaiohttp 库配合使用,以避免 IP 频率限制,并确保在不同地区都有较高的成功率。

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.