SOCKS5代理服务搭建与配置

本文档整合了多种SOCKS5代理服务器的搭建方法,包括SS5DanteSquidMicrosocks,旨在为不同需求和场景提供选择。

一、 方案概览与选择

方案 特点 适用场景 复杂度
SS5 经典SOCKS5服务器,功能全面,支持用户认证。 需要稳定、功能完整的SOCKS5代理。 中等
Dante 轻量级、高性能的SOCKS4/5服务器,配置灵活。 对性能和资源占用有要求的生产环境。 中等
Squid 功能强大的HTTP/HTTPS缓存代理,也支持SOCKS。 主要需求为Web缓存,同时需要SOCKS功能。 较高
Microsocks 极致轻量、内存占用极小的SOCKS5服务器。 资源受限的VPS、临时或简单代理需求。

环境建议:CentOS 7.x, Debian 7+, Ubuntu 14.04+。避免使用CentOS 8.x(兼容性问题)。确保服务器防火墙/安全组已开放代理端口。


二、 SS5 搭建方案

SS5是一个功能完整的SOCKS5代理服务器。

1. 安装依赖与源码

1
2
3
4
5
6
7
yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl-devel openssl openssl-devel
wget http://nchc.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
tar -zxvf ss5-3.8.9-8.tar.gz
cd ss5-3.8.9/
./configure
make
make install

2. 服务注册与自启

1
2
3
chmod +x /etc/init.d/ss5
chkconfig --add ss5
chkconfig ss5 on

3. 核心配置

  • 认证配置 (/etc/opt/ss5/ss5.conf):
    1
    2
    auth    0.0.0.0/0       -       u
    permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - -
  • 用户密码 (/etc/opt/ss5/ss5.passwd):
    1
    username password
  • 修改端口 (/etc/sysconfig/ss5):
    1
    SS5_OPTS=" -u root -b 0.0.0.0:8899"

4. 启动与测试

1
service ss5 start  # 或 restart

使用Proxifier等客户端工具,配置代理服务器地址和端口进行连接测试。


三、 Dante 搭建方案

Dante是一个高效、配置灵活的SOCKS服务器。

1. 安装 (CentOS 7)

1
2
rpm -Uvh http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
yum --enablerepo=gf-plus install dante-server -y

2. 基础配置 (/etc/sockd.conf)
以下是一个允许所有连接(无认证)的简单配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
errorlog: /var/log/sockd.errlog
logoutput: /var/log/sockd.log

internal: eth0 port = 1080 # 监听端口
external: eth0

method: none # 无认证

client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}

socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
}

注意:需创建日志目录 mkdir /var/run/sockd

3. 启动与管理

1
2
systemctl start sockd
systemctl enable sockd

4. 高级配置

  • 用户认证:将 method: none 改为 method: username,并使用系统用户登录。
  • 访问控制:在 client passsocks pass 块中,通过 from: / to: 字段精细控制源IP和目标地址。

四、 Squid 搭建方案 (支持正向/透明代理)

Squid主要用作HTTP代理,但也可配置为SOCKS代理,并支持强大的访问控制。

1. 安装

1
2
3
sudo apt-get install squid -y  # Ubuntu/Debian
# 或安装支持SSL的版本以启用HTTPS透明代理
sudo apt-get install squid-openssl -y

2. 基础正向代理配置

  • 编辑 /etc/squid/squid.conf,添加允许的客户端网段:
    1
    acl localnet src 172.28.0.0/16
  • /etc/squid/conf.d/debian.conf 中取消注释:
    1
    http_access allow localnet
  • 重启服务:sudo service squid restart
  • 客户端在浏览器或系统设置中配置HTTP代理为Squid服务器IP:3128。

3. 强大的访问控制示例 (在squid.conf中配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1. 禁止特定IP
acl badhost src 172.28.18.7
http_access deny badhost

# 2. 禁止特定时间段
acl worktime time MTWHF 17:00-18:00
http_access deny worktime

# 3. 禁止特定域名
acl baddomain dstdomain .taobao.com .pinduoduo.com
http_access deny baddomain

# 4. 禁止访问所有IP地址(防域名绕过)
acl ipurl url_regex ^http://[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/
http_access deny ipurl

4. 透明代理配置 (需双网卡)

  • 配置Squid:在 squid.conf 中添加拦截端口。
    1
    2
    http_port 3129 intercept  # HTTP透明代理
    https_port 3130 ssl-bump cert=/etc/squid/certs/myCA.pem transparent # HTTPS透明代理
  • 生成自签名CA证书 (用于HTTPS解密):
    1
    openssl req -new -newkey rsa:4096 -sha256 -days 3650 -nodes -x509 -keyout myCA.pem -out myCA.pem
  • 配置iptables规则,将客户端的80/443流量重定向到Squid。
  • 客户端需将网关和DNS指向Squid服务器内网IP,并导入生成的CA证书。

五、 Microsocks 搭建方案 (极致轻量)

适用于内存资源紧张的VPS。

1. 安装

  • Debian/Ubuntu新版本sudo apt install microsocks
  • 旧版本或从源码安装
    1
    2
    3
    4
    wget http://ftp.barfooze.de/pub/sabotage/tarballs/microsocks-1.0.4.tar.xz
    tar -Jxf microsocks-1.0.4.tar.xz
    cd microsocks-*/
    make && sudo make install

2. 直接运行

1
microsocks -1 -u USERNAME -P PASSWORD
  • -1: 认证一次后IP加入白名单。
  • -u / -P: 用户名和密码。
  • 默认监听 0.0.0.0:1080

3. 配置为Systemd服务 (推荐)

  • 创建服务文件 /etc/systemd/system/microsocks.service
  • 创建配置文件 /etc/microsocks.conf,定义 MICROSOCKS_LOGINMICROSOCKS_PASSW
  • 启用服务:sudo systemctl enable --now microsocks

六、 客户端连接与测试

  1. **命令行测试 (Linux/Mac)**:
    1
    curl --socks5 USER:PASS@SERVER_IP:PORT https://www.google.com/
  2. 浏览器设置:在网络设置中手动配置SOCKS5代理。
  3. 专业工具:使用 Proxifier (Windows/macOS) 或 Proxy SwitchyOmega (浏览器插件) 进行全局或按规则代理。
  4. **环境变量 (Linux)**:
    1
    2
    export http_proxy=socks5://SERVER_IP:PORT
    export https_proxy=socks5://SERVER_IP:PORT

七、 故障排查

  1. 连接失败
    • 检查服务器防火墙/安全组规则是否放行代理端口。
    • 确认代理服务正在运行 (systemctl status xxx)。
    • 查看服务日志 (journalctl -xe, /var/log/xxx.log)。
  2. 认证失败:检查配置文件的用户名/密码部分,确保无拼写错误。
  3. Squid HTTPS代理失败:确保使用了 squid-openssl,正确生成并配置了CA证书,且客户端已导入该证书。

八、 总结与建议

  • 追求轻量与简单:首选 Microsocks
  • 需要稳定完整的SOCKS5服务:选择 SS5Dante
  • 主要需求是Web缓存和复杂的内容过滤:选择 Squid
  • 生产环境:务必配置用户认证和基于IP的**访问控制列表(ACL)**,并定期检查日志。

请根据您的具体需求(性能、功能、易用性、资源占用)选择最合适的方案进行部署。