使用 Squid 作为透明代理

使用 Squid 作为 透明代理(Transparent Proxy),可以实现客户端无需配置代理,直接将 HTTP 请求转发给 Squid,由 Squid 代为转发请求并缓存内容,从而提升访问效率、审计流量或进行访问控制。


一、透明代理工作原理

透明代理位于客户端和服务器之间,拦截客户端请求(如 HTTP)并将其透明地转发。客户端认为自己直接访问了目标网站,但其实是通过 Squid 转发的。

主要流程:

  1. 客户端访问网页(如 http://example.com)。

  2. 网络层(如防火墙或路由器)将请求重定向到 Squid 所在的服务器端口(如 3128)。

  3. Squid 收到请求后提取原始目标地址并转发。

  4. Squid 返回响应,客户端并不知情。


二、使用场景

  • 校园网/企业内网:对网页访问进行审计、内容过滤。

  • 内容缓存加速:减少带宽使用。

  • 上网行为管理:与 ACL、日志结合进行控制。


三、部署步骤详解(以 Ubuntu 20.04 为例)

1. 安装 Squid

sudo apt update 
sudo apt install squid -y

2. 修改配置文件 /etc/squid/squid.conf

# 允许的客户端网段
acl localnet src 192.168.1.0/24

# 默认是 http_port 3128
# 改为透明模式
http_port 3128 transparent

# 允许访问
http_access allow localnet
http_access deny all

transparent 表示透明代理模式
localnet 指定允许访问的网段


3. 配置 IP 转发

sudo sysctl -w net.ipv4.ip_forward=1

写入配置文件:

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

4. 配置防火墙 / iptables 重定向规则

假设:

  • Squid 服务器 IP:192.168.1.100

  • 网关设备也是这台机器

  • 监听 HTTP 流量并转发到 3128

# 将 HTTP 请求重定向到 Squid 端口
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
  -j REDIRECT --to-port 3128

如果你启用了 ufw 防火墙,需要允许端口:

sudo ufw allow 3128/tcp

5. 启动或重启 Squid 服务

sudo systemctl restart squid 
sudo systemctl enable squid

6. 验证

在客户端(192.168.1.0/24 网段)上打开浏览器访问网页,例如 http://example.com,如果成功且服务器 access.log 有记录说明透明代理正常。

sudo tail -f /var/log/squid/access.log

四、常见问题排查

问题可能原因
浏览器打不开网页iptables 未正确转发,或 Squid 配置未生效
access.log 没有日志请求未被转发至 Squid(检查路由/iptables)
客户端是 HTTPSSquid 透明代理仅支持 HTTP,处理 HTTPS 需 SSL Bump(复杂,非默认支持)
连接被拒绝确认客户端 IP 属于 acl localnet 定义范围


五、HTTPS 的说明

透明代理默认不能处理 HTTPS(443 端口)请求,因为 HTTPS 使用 TLS 加密,Squid 无法查看目标主机。要代理 HTTPS,需启用 SSL Bump,但这涉及中间人攻击原理,需客户端信任代理证书,部署复杂且涉及隐私。


六、关闭透明代理(恢复配置)

# 删除 iptables 转发规则
sudo iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 \
  -j REDIRECT --to-port 3128

并注释掉 squid.conf 中的 transparent 设置即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值