freebsd下配置基于pf的squid透明代理

以前曾经做过squid的mysql和ad认证。但这些应用环境都需要配置客户端。
squid透明代理其优点在于:客户端不用做任何配置。其缺点在于:不支持任何认证方式,同时也不支持https,ftp等应用。只能是http的透明代理。

其安装过程如下
1、安装squid,并选择pf支持
cd /usr/ports/www/squid && make install clean
并作如下选择
[X] SQUID_PF             Enable transparent proxying with PF   
2、配置squid配置文件使之支持透明代理,修改http_port参数,加入transparent。如下所示
ee /usr/local/etc/squid/squid.conf
http_port 3128 transparent
注:如果没有transparent参数,则会出错
3、配置防火墙将tcp端口转发到3128,修改/etc/pf.conf并加入如下rdr语句
rdr on em0 proto tcp from ! em0 to any -> 127.0.0.1 port 3128
pass all
注:这里的防火墙配置,仅为启用squid透明代理,故其过滤规则仅适用于测试环境。生产环境还需要配置相应规则。