网站搜索

如何在 Linux 上安装和配置 ProxyChains


你是否曾经需要让一个程序使用代理,但该程序根本不支持代理设置?也许你正在运行一个没有内置代理选项的命令行工具,或者你想通过多个代理路由流量以增加匿名性。这时候,ProxyChains 就派上用场了。

什么是ProxyChains?

ProxyChains 是一个强大的 UNIX 工具,它可以强制程序发出的任何网络连接通过一个或多个代理服务器,即使该程序本身不支持代理。

它的工作原理是通过在动态链接程序中(通过 LD_PRELOAD)挂钩与网络相关的库调用,将这些连接透明地重定向到诸如 SOCKS4、SOCKS5 或 HTTP 服务器的代理。

ProxyChains 支持 Linux、BSD、macOS 和 Haiku。最重要的是,它是完全免费且开源的。

无论你是安全研究员、渗透测试员,还是只是想绕过地理限制的人,本指南将带你了解你需要知道的所有内容。

ProxyChains 到底做什么?

把 ProxyChains 想象成你网络流量的隧道建设者。当你在命令前加上 proxychains 运行程序时,它的网络连接会自动通过你定义的代理进行重定向。

ProxyChains 通过在动态链接程序中通过 LD_PRELOAD 钩取与网络相关的库调用来工作,在连接到达网络之前拦截连接。

请注意,这种方法仅适用于动态链接程序,例如脚本、使用 dlopen() 加载模块的程序,以及生成多个后台进程的程序可能无法可靠地工作。

常见用例包括:

  • 在连接网站时隐藏您的真实IP地址
  • 将多个代理串联在一起以获得额外的匿名性(比如 Tor → SOCKS5 → HTTP)
  • 绕过防火墙或地理限制
  • 使用像 nmap 或 curl 这样的网络工具而不使用内置代理支持
  • 测试应用程序在代理后的行为

对于渗透测试和侦察,推荐的顺序是:VPN → ProxyChains → 目标。这样,你的 ISP 只能看到到 VPN 的加密流量,你的 VPN 提供商看到的是到代理的连接,而不是最终目标,而目标只能看到你链条中的最后一个代理。

重要说明:ProxyChains 不会加密你的流量,它仅路由 TCP 连接。无论你配置哪种代理类型,都不支持 UDP 和 ICMP。你的隐私完全取决于你使用的代理以及它们是否支持加密(如 Tor 或通过 TLS 的 SOCKS5)。仅使用 ProxyChains 只能隐藏你对目标的 IP 地址。为了更强的隐私保护,请将其与 VPN 或 Tor 结合使用。

在 Linux 上安装 ProxyChains

ProxyChains 在大多数 Linux 发行版的仓库中可用。

在 Arch Linux 和 Manjaro 上:

sudo pacman -S proxychains-ng tor

在 Debian、Ubuntu 和 Pop!_OS 上:

sudo apt update
sudo apt install proxychains4 tor -y

在 Kali Linux 上,ProxyChains 已经预装,但你可能想将其更新到最新版本。

在 Red Hat、Fedora、AlmaLinux 和 Rocky Linux 上:

对于使用 dnf 或 yum 的发行版:

sudo dnf install proxychains-ng tor

如果你需要从源代码编译,你可以克隆仓库:

git clone https://github.com/rofl0r/proxychains-ng
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make -j $(nproc)
sudo make install
sudo make install-config

这会将配置文件安装到 /etc/proxychains.conf。你还需要安装 Tor,因为默认配置使用本地 Tor 代理。

启动 Tor 服务

在配置任何内容之前,让我们先启动 Tor 服务。Tor 默认在 127.0.0.1:9050 上提供 SOCKS 代理。

sudo systemctl start tor
sudo systemctl enable tor  # Starts Tor automatically at boot

检查它是否正常运行:

sudo systemctl status tor

你应该在输出中看到“active (running)”.

配置 ProxyChains

现在到了重要的部分。主配置文件通常位于 Debian/Ubuntu/Kali 系统上的 /etc/proxychains4.conf(通过 proxychains4 包安装)或者在源码构建和其他一些发行版上位于 /etc/proxychains.conf。

用你喜欢的文本编辑器打开它:

sudo nano /etc/proxychains4.conf

第1步:选择链类型

在文件开头查找链类型部分。你会看到几个选项,每个都有特定的行为:

#dynamic_chain
#strict_chain
#round_robin_chain
#random_chain

选择适合您需求的选项:

  • dynamic_chain(推荐给初学者):按列出的顺序使用代理,但会跳过不可用的代理。只要至少有一个代理可用,链就能正常工作。
  • strict_chain(默认):严格按顺序使用代理。如果任何一个代理失败,整个链条将失败。
  • round_robin_chain:按照顺序循环使用代理,每次新连接都从上次停止的地方开始。
  • random_chain:为每个连接从您的列表中随机选择代理。

通过删除行首的#取消注释所选类型,并注释掉其他类型。

第2步:启用DNS代理

找到 #proxy_dns 行并取消注释它。这通过将 DNS 请求通过你的代理进行路由,从而防止 DNS 泄漏,如下所示:

proxy_dns

步骤 3:检查超时设置

默认的超时值通常是可以的,但如果需要,你可以进行调整:

tcp_read_time_out 15000
tcp_connect_time_out 8000

第4步:添加你的代理

向下滚动到文件末尾的 [ProxyList] 部分。默认条目是在本地主机端口 9050 上的 SOCKS4 代理(Tor):

socks4 127.0.0.1 9050

用于与 proxy_dns 指令一起使用时,请将其替换为 SOCKS5 条目。SOCKS5 启用正确的代理端 DNS 解析,这正是 proxy_dns 依赖以防止泄漏的功能:

[ProxyList]
socks5 127.0.0.1 9050

添加代理的格式是:type IP_address port [username] [password]。支持的代理类型包括http、socks4和socks5。

使用 Ctrl + O 保存文件,按 Enter,然后按 Ctrl + X 退出 nano。

测试你的设置

让我们验证一切是否正常工作。首先,检查你的真实IP地址:

curl ifconfig.me

现在通过 ProxyChains 检查你显示的 IP:

proxychains curl ifconfig.me

IP 应该与你的真实 IP 不同。

在 Linux 中测试 ProxyChains 设置

您也可以使用 Tor 项目的检查工具进行专门测试:

proxychains curl https://check.torproject.org

如果一切设置正确,你应该会看到一条消息,写着“恭喜。此浏览器已配置为使用 Tor。”

在命令行应用程序中使用 ProxyChains

使用 ProxyChains 非常简单。只需在任何命令前加上 proxychains:

# Downloading files
proxychains wget http://example.com/file.zip
# Network scanning with nmap
proxychains nmap -sT -Pn target.com
# SSH connections
proxychains ssh user@server.com

对于像 nmap 这样的网络扫描工具,记得使用 -sT(TCP 连接)选项,因为 SYN 扫描(-sS)使用原始套接字,在 ProxyChains 下无法工作。

使用带有 Tor 的 Firefox(重要说明)

你可能会想用 proxychains firefox 来运行 Firefox。然而,这种方法不能可靠地工作,因为现代 Firefox 通过 dlopen() 加载其网络代码的模块(如 libxul),这些模块不会继承 ProxyChains 所依赖的 LD_PRELOAD 钩子。官方的 ProxyChains 文档明确指出这是一个已知的限制。

这是通过 Tor 路由 Firefox 的正确方式:

步骤1:确认Tor正在运行

sudo systemctl status tor

如果它没有运行,请使用以下命令启动它:

sudo systemctl start tor

步骤 2:手动配置 Firefox

打开 Firefox 并按照以下步骤操作:

  1. 点击右上角的菜单按钮(三条横线)。
  2. 选择设置(在某些系统上为偏好设置)。
  3. 向下滚动到代理设置部分,然后点击配置代理按钮。
  4. 在出现的对话框中,选择手动代理配置。
  5. 在 SOCKS 主机 字段中,输入 127.0.0.1,端口 输入 9050。
  6. 选择 SOCKS v5 作为 SOCKS 版本。
  7. 最重要的是,勾选此框,该框写着 使用 SOCKS v5 时代理 DNS。这可以防止 DNS 泄漏。

Firefox中的代理配置

步骤 3:验证配置(可选)

要进行高级验证,请在 Firefox 地址栏中输入 about:config 并接受警告。搜索这些设置并确认它们是否匹配:

  • network.proxy.type 应该是 1(手动代理配置)
  • network.proxy.socks 应该是 127.0.0.1
  • network.proxy.socks_port 应该是 9050
  • network.proxy.socks_version 应该是 5
  • network.proxy.socks_remote_dns 应该是 true

步骤4:测试您的设置

在 Firefox 中导航到 https://check.torproject.org/。如果配置正确,页面将显示“恭喜。此浏览器已配置为使用 Tor。”

Firefox 浏览器已配置为使用 Tor

这种手动配置方法比在 Firefox 中使用 proxychains 更可靠。你的 proxychains 设置对于命令行工具如 curl、wget 和 nmap 仍然完美可用。

考虑使用商业代理(可选)

默认的 Tor 代理是免费的,并且在注重隐私的任务中表现良好。然而,Tor 网络可能比普通代理慢,并且一些网站会阻止或限制来自 Tor 出口节点的连接。

如果您需要更快的速度、稳定的连接或专用的 IP 地址,您可以将 ProxyList 中的 Tor 替换为来自商业提供商的 SOCKS5 或 HTTP 代理。根据提供商和代理类型,这些服务可能提供更好的性能,并且比 Tor 更不容易遇到封锁。

例如,像 Proxy-Seller 这样的提供商提供可与 Proxychains 一起使用的 HTTP、HTTPS 和 SOCKS5 代理。无论选择哪个提供商,都应在购买前比较代理类型、服务器位置、认证方法、正常运行时间和价格等功能。测试服务并阅读独立评论以确保其满足您的需求也是一个好主意。

SOCKS4 和 SOCKS5 的区别

在设置代理时,你会遇到 SOCKS4 和 SOCKS5。以下是为什么通常更倾向于使用 SOCKS5 的原因:

特征SOCKS4SOCKS5
协议支持仅 TCPTCP 和 UDP*
DNS 处理没有 DNS 代理(普通 SOCKS4;ProxyChains 使用的 SOCKS4a 扩展会添加主机名转发)可以代理 DNS 请求
认证None用户名/密码支持
IPv6 支持不是
安全降低更高

*SOCKS5 在协议层面支持 UDP,但 ProxyChains 仅路由 TCP 连接,无论配置的是哪种代理类型。通过 ProxyChains 无法使用 SOCKS5 的 UDP 功能。

SOCKS5 在 ProxyChains 中更受欢迎,主要是因为它支持完整的代理端 DNS 解析(由 proxy_dns 指令使用)、身份验证和 IPv6 地址。

ProxyChains 与 VPN 相比如何?

你可能会想,既然 VPN 看起来更简单,为什么还要使用 ProxyChains。两种工具都能增强匿名性,但它们的工作方式非常不同。

VPN 创建了一个系统范围的加密隧道,将你所有的互联网流量通过其服务器传输。这是一种全有或全无的方法,提供强大的加密和良好的速度。然而,你必须信任你的 VPN 提供商不会记录你的活动。

ProxyChains 在应用程序级别工作。它只强制特定程序(如 curl 或 nmap)通过代理链,而其他应用程序不受影响。这为您提供了精细控制,但本身不提供加密。您的匿名性完全取决于您使用的代理。

在速度方面,现代 VPN 通常要快得多,因为它使用了像 WireGuard 这样的优化协议。ProxyChains 可能明显更慢,特别是当你串联多个代理或使用 Tor 网络时,流量会通过全球多个节点跳转。

简而言之: 当你想要快速、加密的全面保护时,使用 VPN。当你需要通过自定义代理链路由特定工具时(例如用于 OSINT 研究或渗透测试),使用 ProxyChains。

高级配置技巧

在链中使用多个代理

您可以链式使用多个代理以获得额外的匿名性。请记住,增加更多代理会提高匿名性,但会降低速度并增加连接失败的可能性。将它们全部添加到 [ProxyList] 部分:

[ProxyList]
socks5 192.168.1.10 1080
http 192.168.1.20 8080
socks5 192.168.1.30 1080

添加带身份验证的代理

如果您的代理需要身份验证,请包含用户名和密码:

socks5 proxy.example.com 1080 username password

不包括本地网络

你可以使用 localnet 指令排除特定的 IP 范围不通过代理:

localnet 127.0.0.0/255.0.0.0
localnet 192.168.0.0/255.255.0.0

代理链问题排查

如果事情不顺利,试试以下步骤:

  1. 检查 Tor 状态: sudo systemctl status tor
  2. 使用详细模式:proxychains curl -v https://check.torproject.org
  3. 验证你的代理列表:确保地址和端口正确
  4. 重启 Tor:sudo systemctl restart tor
  5. 检查配置文件路径:运行 proxychains4 --help 查看正在使用的配置文件
  6. 关于 Firefox 问题:请记住,Firefox 需要手动配置代理,而不是使用 proxychains,因为它使用的动态加载模块会绕过 LD_PRELOAD 钩子

常见问题解答 (FAQ)

问:Proxychains 是免费的吗?

A:是的。Proxychains 是开源软件,可以免费使用。

问:Proxychains支持SOCKS5吗?

A:是的。Proxychains 支持 SOCKS4、SOCKS5 和 HTTP 代理。

问:我可以在 SSH 中使用 Proxychains 吗?

A: 是的。只需在命令前添加 Proxychains:

proxychains ssh user@host

问:Proxychains 能与所有应用程序一起使用吗?

A:不行。它主要适用于使用 TCP 连接的应用程序。

问:Proxychains 和 VPN 有什么区别?

A: VPN 在系统级或网络级路由流量。Proxychains 将特定应用程序的流量通过配置的代理路由。

结论

ProxyChains 是一个强大的工具,用于匿名网络路由。它让你可以对哪些应用程序使用代理进行细粒度控制。然而,请记住,它只处理 TCP 流量,并不会加密你的数据。为了完全的隐私,总是将其与加密(如 Tor 或 VPN)结合使用。

ProxyChains 的美在于它的简洁。一旦配置完成,任何命令行工具只需多加几个字符就能变得支持代理。结合像 Tor 这样的可靠代理来源,它为匿名浏览和网络测试提供了坚实的基础。

记住:始终以道德和负责任的方式使用这些工具。ProxyChains 是一个强大的网络工具。你应该用它来保护你的匿名性,而不是侵犯他人的匿名性。

有问题或遇到困难吗? 在下方留言,我们将帮助您排查设置问题!

相关阅读:

  • 如何在 Ubuntu 26.04 上配置全系统代理设置