你是否遇到过某个程序需要代理,但它本身却不支持代理设置?也许你正在使用一个没有内置代理选项的命令行工具,或者你想通过多个代理来路由流量以获得额外的匿名性。这时 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 代理(通过 proxychains4 软件包安装)。
启动 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(通过 proxychains4 软件包安装)的 /etc/proxychains4.conf,或源码构建和其他一些发行版的 /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] 部分。默认条目是 localhost 端口 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 不同。
你也可以专门使用 Tor 项目的检查器进行测试:
proxychains curl https://check.torproject.org
如果一切设置正确,你应该会看到一条消息,显示 "Congratulations. This browser is configured to use 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 [email protected]
对于像 nmap 这样的网络扫描工具,请记得使用 -sT(TCP 连接)标志,因为 SYN 扫描(-sS)使用原始套接字,无法通过 ProxyChains 工作。
将 Firefox 与 Tor 一起使用(重要提示)
你可能会想用 proxychains firefox 来运行 Firefox。然而,这种方法并不可靠,因为现代 Firefox 通过 dlopen() 加载的模块(如 libxul)来加载其网络代码,这些模块不会继承 ProxyChains 所依赖的 LD_PRELOAD 钩子。官方 ProxyChains 文档明确指出这是一个已知限制。
以下是正确地将 Firefox 路由到 Tor 的方法:
步骤 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/。如果配置正确,页面将显示 "Congratulations. This browser is configured to use 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 通常更受青睐的原因:
*SOCKS5 在协议层面支持 UDP,但 ProxyChains 仅路由 TCP 连接,无论配置了哪种代理类型。SOCKS5 的 UDP 能力无法通过 ProxyChains 使用。
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
排查 ProxyChains 问题
如果出现问题,请尝试以下步骤:
- 检查 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 是免费的吗? 答:是的。Proxychains 是开源软件,可以免费使用。
问:Proxychains 支持 SOCKS5 吗? 答:是的。Proxychains 支持 SOCKS4、SOCKS5 和 HTTP 代理。
问:我可以将 Proxychains 与 SSH 一起使用吗? 答:可以。只需在命令前加上 Proxychains:
proxychains ssh user@host
问:Proxychains 适用于所有应用程序吗? 答:不。它主要适用于使用 TCP 连接的应用程序。
问:Proxychains 和 VPN 有什么区别? 答:VPN 在系统或网络级别路由流量。Proxychains 通过配置的代理路由特定的应用程序流量。
- <a href="https://ostechnix.com/configure-system-wide-proxy-settings-ubuntu/\">如何在 Ubuntu 26.04 上配置系统级代理设置



