You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Squid从HTTPS服务器转换为SOCKS服务器

为Squid启用SOCKS访问权限的完整配置指南

前提准备

  • 安装对应系统的SOCKS开发库:Debian/Ubuntu系用libsocks-dev,RHEL/CentOS系用libsocks-devel
  • 备份现有Squid的配置文件与二进制程序,避免编译失败影响正常服务
  • 下载与当前运行版本一致的Squid源码包,减少兼容性问题

步骤1:设置编译环境变量

你查到的环境变量用于编译阶段替换系统调用并链接SOCKS库,需在编译Squid的终端会话中执行:

export CFLAGS=" -Dbind=SOCKSbind "
export CXXFLAGS=" -Dbind=SOCKSbind "
export LDADD=" -lsocks "

说明:这些变量告诉编译器将默认的bind系统调用替换为SOCKS库的SOCKSbind,同时强制链接SOCKS库文件。

步骤2:重新编译Squid

  1. 解压源码包并进入目录:
tar xzf squid-x.x.x.tar.gz
cd squid-x.x.x
  1. 执行配置脚本,务必保留你之前启用HTTPS的编译选项(比如--enable-ssl),同时添加SOCKS支持开关:
./configure --prefix=/usr/local/squid --enable-socks --enable-ssl [你之前使用的其他编译选项]

注意:--enable-socks是Squid官方提供的SOCKS支持开关,必须配合前面的环境变量才能正确链接SOCKS库。

  1. 编译并安装:
make -j$(nproc)
make install

步骤3:配置Squid运行时SOCKS规则

修改Squid配置文件(默认路径/usr/local/squid/etc/squid.conf),添加以下规则:

  1. 定义SOCKS代理服务器(假设SOCKS服务器地址为192.168.1.100,端口1080):
cache_peer 192.168.1.100 parent 1080 0 no-query default login=用户名:密码

说明:若SOCKS无需认证,去掉login参数;default表示所有流量走该SOCKS代理,可通过ACL规则限定特定流量。

  1. 可选:用ACL规则指定仅内网IP走SOCKS:
acl internal_net src 192.168.0.0/24
cache_peer_access 192.168.1.100 allow internal_net
cache_peer_access 192.168.1.100 deny all
  1. 配置流量转发策略:
never_direct allow all

若需部分流量直连,可添加never_direct deny [自定义ACL]规则。

步骤4:验证配置并重启服务

  1. 检查配置文件语法:
/usr/local/squid/sbin/squid -k parse
  1. 重启Squid:
/usr/local/squid/sbin/squid -k reconfigure
# 若为系统服务,执行:
systemctl restart squid
  1. 测试功能:将客户端HTTP代理指向Squid,访问目标网站后,查看Squid日志(默认/usr/local/squid/var/logs/access.log)确认流量是否通过SOCKS转发。

常见问题

  • 编译时提示找不到libsocks:确认已安装SOCKS开发库,或用--with-socks-lib=/path/to/libsocks指定库路径
  • SOCKS转发失败:查看Squid日志,排查是否存在认证错误或SOCKS服务器不可达问题
  • HTTPS功能失效:编译时务必保留原有的--enable-ssl等HTTPS相关编译选项

内容的提问来源于stack exchange,提问作者AMTECH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 08:02:13