如何在 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.meIP 应该与你的真实 IP 不同。
您也可以使用 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 并按照以下步骤操作:
- 点击右上角的菜单按钮(三条横线)。
- 选择设置(在某些系统上为偏好设置)。
- 向下滚动到代理设置部分,然后点击配置代理按钮。
- 在出现的对话框中,选择手动代理配置。
- 在 SOCKS 主机 字段中,输入
127.0.0.1,端口 输入9050。 - 选择 SOCKS v5 作为 SOCKS 版本。
- 最重要的是,勾选此框,该框写着 使用 SOCKS v5 时代理 DNS。这可以防止 DNS 泄漏。
步骤 3:验证配置(可选)
要进行高级验证,请在 Firefox 地址栏中输入 about:config 并接受警告。搜索这些设置并确认它们是否匹配:
network.proxy.type应该是1(手动代理配置)network.proxy.socks应该是127.0.0.1network.proxy.socks_port应该是9050network.proxy.socks_version应该是5network.proxy.socks_remote_dns应该是true
步骤4:测试您的设置
在 Firefox 中导航到 https://check.torproject.org/。如果配置正确,页面将显示“恭喜。此浏览器已配置为使用 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 的原因:
| 特征 | SOCKS4 | SOCKS5 |
|---|---|---|
| 协议支持 | 仅 TCP | TCP 和 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代理链问题排查
如果事情不顺利,试试以下步骤:
- 检查 Tor 状态:
sudo systemctl status tor - 使用详细模式:
proxychains curl -v https://check.torproject.org - 验证你的代理列表:确保地址和端口正确
- 重启 Tor:
sudo systemctl restart tor - 检查配置文件路径:运行
proxychains4 --help查看正在使用的配置文件 - 关于 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 上配置全系统代理设置


