setup-guide.md 10 KB

TRANSLATED CONTENT:

Proxychains 安装和配置指南

安装 Proxychains

Linux 系统

Ubuntu/Debian

# 更新包列表
sudo apt update

# 安装 proxychains4
sudo apt install proxychains4

# 验证安装
proxychains4 --version

CentOS/RHEL 7/8

# 安装 EPEL 仓库
sudo yum install epel-release

# 安装 proxychains-ng
sudo yum install proxychains-ng

# 验证安装
proxychains4 --version

Fedora

# 安装 proxychains-ng
sudo dnf install proxychains-ng

# 验证安装
proxychains4 --version

Arch Linux

# 安装 proxychains-ng
sudo pacman -S proxychains-ng

# 验证安装
proxychains4 --version

从源码编译(通用方法)

# 安装依赖
sudo apt install build-essential git  # Debian/Ubuntu
# 或
sudo yum install gcc git make  # CentOS/RHEL

# 克隆仓库
git clone https://github.com/haad/proxychains.git
cd proxychains

# 编译安装
./configure --prefix=/usr --sysconfdir=/etc
make
sudo make install
sudo make install-config  # 安装默认配置文件

# 验证安装
proxychains4 --version

macOS

# 使用 Homebrew 安装
brew install proxychains-ng

# 验证安装
proxychains4 --version

WSL (Windows Subsystem for Linux)

# 在 WSL 中安装(使用 Ubuntu 示例)
sudo apt update
sudo apt install proxychains4

# 验证安装
proxychains4 --version

基础配置

配置文件位置

Proxychains 按以下顺序查找配置文件:

  1. ${PROXYCHAINS_CONF_FILE} 环境变量指定的路径
  2. 命令行 -f 参数指定的路径
  3. ./proxychains.conf (当前目录)
  4. ~/.proxychains/proxychains.conf (用户主目录) 推荐
  5. /etc/proxychains.conf (系统级)

创建用户级配置(推荐)

# 创建配置目录
mkdir -p ~/.proxychains

# 创建配置文件(针对 127.0.0.1:9910)
cat > ~/.proxychains/proxychains.conf << 'EOF'
# Proxychains 配置文件
# 代理地址:127.0.0.1:9910

# 代理链模式
strict_chain

# 代理 DNS 请求
proxy_dns

# DNS 设置
remote_dns_subnet 224

# 超时设置(毫秒)
tcp_read_time_out 15000
tcp_connect_time_out 8000

# 代理列表
[ProxyList]
http 127.0.0.1 9910
EOF

# 设置权限
chmod 644 ~/.proxychains/proxychains.conf

创建系统级配置(可选)

# 需要 root 权限
sudo cat > /etc/proxychains.conf << 'EOF'
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
http 127.0.0.1 9910
EOF

# 设置权限
sudo chmod 644 /etc/proxychains.conf

配置详解

代理链模式

在配置文件中只能选择一种模式:

strict_chain(严格链,推荐)

# 严格按顺序使用所有代理
# 所有代理必须在线,任何一个失败则整个链失败
strict_chain

适用场景:

  • 只有一个代理服务器
  • 需要确保所有代理都被使用
  • 对安全性要求高

dynamic_chain(动态链)

# 自动跳过离线代理
# 至少需要一个可用代理
dynamic_chain

适用场景:

  • 有多个代理服务器
  • 某些代理可能不稳定
  • 需要自动故障转移

random_chain(随机链)

# 从列表中随机选择代理
random_chain
chain_len = 2  # 随机链长度(可选)

适用场景:

  • 需要隐藏流量模式
  • 有多个代理可用
  • 对匿名性要求高

DNS 设置

# 通过代理服务器解析 DNS
proxy_dns

# DNS 解析使用的虚拟子网(1-255)
remote_dns_subnet 224

# 可选:自定义 DNS 服务器(通过环境变量)
# export PROXY_DNS_SERVER=8.8.8.8

超时设置

# TCP 读取超时(毫秒)
tcp_read_time_out 15000  # 15秒

# TCP 连接超时(毫秒)
tcp_connect_time_out 8000  # 8秒

调优建议:

  • 慢速网络:增加到 30000 和 15000
  • 快速网络:减少到 10000 和 5000
  • 本地代理:可以设置为 5000 和 3000

日志设置

# 静默模式(不输出代理链信息)
quiet_mode

注意: 调试时应注释掉此选项以查看详细输出。


代理列表配置

基本格式

[ProxyList]
# 格式:type host port [username password]

HTTP 代理

# 不需要认证
http 127.0.0.1 9910

# 需要认证
http 127.0.0.1 8080 username password

SOCKS4 代理

# 不需要认证
socks4 127.0.0.1 1080

# SOCKS4 不支持用户认证

SOCKS5 代理

# 不需要认证
socks5 127.0.0.1 1080

# 需要认证
socks5 127.0.0.1 1080 username password

多代理配置

[ProxyList]
# 主代理
http 127.0.0.1 9910

# 备用代理(strict_chain 模式下会按顺序使用)
# 取消注释以启用
#http 127.0.0.1 8080
#socks5 127.0.0.1 1080

代理链示例

# 多级代理(流量经过多个代理)
strict_chain

[ProxyList]
http 127.0.0.1 9910
socks5 proxy2.example.com 1080
http proxy3.example.com 8080

高级配置

使用环境变量

# SOCKS5 代理(简化配置)
export PROXYCHAINS_SOCKS5_HOST=127.0.0.1
export PROXYCHAINS_SOCKS5_PORT=9910
proxychains4 curl https://github.com

# 指定配置文件
export PROXYCHAINS_CONF_FILE=~/.proxychains/custom.conf
proxychains4 command

# 自定义 DNS 服务器
export PROXY_DNS_SERVER=8.8.8.8
proxychains4 curl https://example.com

多配置文件管理

# 为不同场景创建不同配置文件
mkdir -p ~/.proxychains

# 国内代理配置
cat > ~/.proxychains/cn.conf << 'EOF'
strict_chain
proxy_dns
[ProxyList]
http 127.0.0.1 9910
EOF

# 国外代理配置
cat > ~/.proxychains/intl.conf << 'EOF'
strict_chain
proxy_dns
[ProxyList]
socks5 proxy.example.com 1080
EOF

# 使用特定配置
proxychains4 -f ~/.proxychains/cn.conf curl https://github.com
proxychains4 -f ~/.proxychains/intl.conf curl https://google.com

创建 Shell 别名

# 添加到 ~/.bashrc 或 ~/.zshrc
cat >> ~/.bashrc << 'EOF'

# Proxychains 别名
alias pc='proxychains4'
alias pccn='proxychains4 -f ~/.proxychains/cn.conf'
alias pcintl='proxychains4 -f ~/.proxychains/intl.conf'

# 常用命令别名
alias pcgit='proxychains4 git'
alias pcpip='proxychains4 pip'
alias pcnpm='proxychains4 npm'
alias pccurl='proxychains4 curl'
alias pcwget='proxychains4 wget'
alias pcssh='proxychains4 ssh'

EOF

# 重新加载配置
source ~/.bashrc

测试配置

基本连接测试

# 测试 proxychains 是否工作
proxychains4 curl https://ipinfo.io/json

# 应该显示代理服务器的 IP 地址,而不是本机 IP

对比测试

# 不使用代理的 IP
curl https://ipinfo.io/json

# 使用代理的 IP(应该不同)
proxychains4 curl https://ipinfo.io/json

DNS 测试

# 测试 DNS 解析
proxychains4 nslookup google.com
proxychains4 dig github.com

# 使用 proxyresolv 工具
proxyresolv google.com

完整功能测试

# HTTP 请求
proxychains4 curl -I https://github.com

# HTTPS 请求
proxychains4 curl https://www.google.com

# SSH 连接(如果有测试服务器)
proxychains4 ssh user@example.com

# Git 克隆
proxychains4 git clone https://github.com/haad/proxychains.git /tmp/test-repo

与代理软件集成

V2Ray

# 假设 V2Ray HTTP 代理端口是 10809
# 更新 proxychains 配置
cat > ~/.proxychains/proxychains.conf << 'EOF'
strict_chain
proxy_dns
[ProxyList]
http 127.0.0.1 10809
EOF

Clash

# 假设 Clash HTTP 代理端口是 7890
# 更新 proxychains 配置
cat > ~/.proxychains/proxychains.conf << 'EOF'
strict_chain
proxy_dns
[ProxyList]
http 127.0.0.1 7890
EOF

Shadowsocks

# 假设 Shadowsocks SOCKS5 端口是 1080
# 更新 proxychains 配置
cat > ~/.proxychains/proxychains.conf << 'EOF'
strict_chain
proxy_dns
[ProxyList]
socks5 127.0.0.1 1080
EOF

SSH 动态端口转发

# 创建 SSH 动态端口转发(SOCKS5)
ssh -fN -D 1080 user@remote-server

# 配置 proxychains 使用 SSH 隧道
cat > ~/.proxychains/proxychains.conf << 'EOF'
strict_chain
proxy_dns
[ProxyList]
socks5 127.0.0.1 1080
EOF

# 使用
proxychains4 curl https://example.com

常见配置模板

模板 1: 单个 HTTP 代理(默认)

strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
http 127.0.0.1 9910

模板 2: 单个 SOCKS5 代理

strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks5 127.0.0.1 1080

模板 3: 多代理动态链(自动故障转移)

dynamic_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
http 127.0.0.1 9910
http 127.0.0.1 8080
socks5 127.0.0.1 1080

模板 4: 低延迟优化

strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 10000
tcp_connect_time_out 5000
quiet_mode

[ProxyList]
http 127.0.0.1 9910

持久化配置

系统启动时自动使用代理

不推荐全局使用,仅对特定用户/命令使用

# 创建启动脚本(示例)
cat > ~/start-with-proxy.sh << 'EOF'
#!/bin/bash
proxychains4 bash
EOF

chmod +x ~/start-with-proxy.sh

为特定应用创建包装脚本

# Git 包装脚本
cat > ~/bin/git-proxy << 'EOF'
#!/bin/bash
proxychains4 git "$@"
EOF

chmod +x ~/bin/git-proxy

# 使用
git-proxy clone https://github.com/user/repo.git

故障排除配置

如果遇到问题,使用此配置进行调试:

# 调试配置
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 30000
tcp_connect_time_out 15000
# 注释掉 quiet_mode 以查看详细输出

[ProxyList]
http 127.0.0.1 9910

安全建议

  1. 配置文件权限

    chmod 644 ~/.proxychains/proxychains.conf
    
  2. 不要在配置文件中明文存储密码

    • 如果必须使用认证,确保配置文件权限正确
    • 考虑使用环境变量
  3. 定期更新 proxychains

    sudo apt update && sudo apt upgrade proxychains4
    
  4. 验证代理服务器可信度

    • 只使用信任的代理服务器
    • 避免使用公共免费代理

下一步

配置完成后:

  1. 阅读 quick-reference.md 了解常用命令
  2. 阅读 troubleshooting.md 了解问题解决
  3. 开始使用 proxychains4!

提示: 配置文件修改后立即生效,无需重启服务。