SOCKS5代理服务搭建与配置
本文档整合了多种SOCKS5代理服务器的搭建方法,包括SS5、Dante、Squid和Microsocks,旨在为不同需求和场景提供选择。
一、 方案概览与选择
| 方案 | 特点 | 适用场景 | 复杂度 |
|---|---|---|---|
| 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 | yum -y install gcc gcc-c++ automake make pam-devel openldap-devel cyrus-sasl-devel openssl openssl-devel |
2. 服务注册与自启
1 | chmod +x /etc/init.d/ss5 |
3. 核心配置
- 认证配置 (
/etc/opt/ss5/ss5.conf):1
2auth 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 | rpm -Uvh http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm |
2. 基础配置 (/etc/sockd.conf)
以下是一个允许所有连接(无认证)的简单配置:
1 | errorlog: /var/log/sockd.errlog |
注意:需创建日志目录 mkdir /var/run/sockd。
3. 启动与管理
1 | systemctl start sockd |
4. 高级配置
- 用户认证:将
method: none改为method: username,并使用系统用户登录。 - 访问控制:在
client pass和socks pass块中,通过from:/to:字段精细控制源IP和目标地址。
四、 Squid 搭建方案 (支持正向/透明代理)
Squid主要用作HTTP代理,但也可配置为SOCKS代理,并支持强大的访问控制。
1. 安装
1 | sudo apt-get install squid -y # Ubuntu/Debian |
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 | # 1. 禁止特定IP |
4. 透明代理配置 (需双网卡)
- 配置Squid:在
squid.conf中添加拦截端口。1
2http_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
4wget 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_LOGIN和MICROSOCKS_PASSW。 - 启用服务:
sudo systemctl enable --now microsocks
六、 客户端连接与测试
- **命令行测试 (Linux/Mac)**:
1
curl --socks5 USER:PASS@SERVER_IP:PORT https://www.google.com/
- 浏览器设置:在网络设置中手动配置SOCKS5代理。
- 专业工具:使用 Proxifier (Windows/macOS) 或 Proxy SwitchyOmega (浏览器插件) 进行全局或按规则代理。
- **环境变量 (Linux)**:
1
2export http_proxy=socks5://SERVER_IP:PORT
export https_proxy=socks5://SERVER_IP:PORT
七、 故障排查
- 连接失败:
- 检查服务器防火墙/安全组规则是否放行代理端口。
- 确认代理服务正在运行 (
systemctl status xxx)。 - 查看服务日志 (
journalctl -xe,/var/log/xxx.log)。
- 认证失败:检查配置文件的用户名/密码部分,确保无拼写错误。
- Squid HTTPS代理失败:确保使用了
squid-openssl,正确生成并配置了CA证书,且客户端已导入该证书。
八、 总结与建议
- 追求轻量与简单:首选 Microsocks。
- 需要稳定完整的SOCKS5服务:选择 SS5 或 Dante。
- 主要需求是Web缓存和复杂的内容过滤:选择 Squid。
- 生产环境:务必配置用户认证和基于IP的**访问控制列表(ACL)**,并定期检查日志。
请根据您的具体需求(性能、功能、易用性、资源占用)选择最合适的方案进行部署。