环境说明
Cisco防火墙地址
inside口:10.10.0.1
outside口:123.*.*.*
DMZ口:172.*.*.*
Cisco核心交换机
总出口10.10.0.2
squid:10.10.0.3
防火墙、交换机、squid通过交换机连接
1.安装Ubuntu
hostname:proxy
ip:10.6.1.3 gateway:10.6.1.2 netmask:255.255.255.0 broadcast:10.6.1.255
2.修改root密码
设置root密码:sudo passwd root
3.取消squid版本信息
/src/errorpage.c 文件在以下地方修改
} error_hard_text[] = {
{
ERR_SQUID_SIGNATURE,
“\n<BR clear=\”all\”>\n”
“<HR noshade size=\”1px\”>\n”
“<ADDRESS>\n”
“Generated %T by %h (%s)\n” #将%s修改即可,%t为当前时间
“</ADDRESS>\n” #%h 为主机名称
“</BODY></HTML>\n”
}
4.编译:
apt-get source squid
./configure –prefix=/usr/ –localstatedir=/var/squid –sysconfdir=/etc/squid –enable-cache-digests –enable-delay-pools –enable-forward-log –enable-async-io –enable-dlmalloc –enable-arp-acl –enable-linux-netfilter –disable-hostname-checks –enable-underscores –enable-auth –enable-icmp –enable-htcp
安装后文件位置:
/usr/squid 主目录
/usr/ sbin/squid 执行文件
/etc/squid/squid.conf 配置文件
/var/squid/logs 日志
/var/squid/cache 自己建立的cache
5.配置squid
mkdir /var/ squid/cache #给squid创建 cache目录
chown –R proxy:proxy /var/squid #更改/var/squid目录的所有者为proxy
/usr /sbin/squid –z #生成交换文件目录
squid 启动squid
修改配置文件:
cd /etc/squid/
rm squid.conf
vi squid.conf
将下边的内容复制到squid.conf里
access_log /var/squid/logs/access.log squid
cache_store_log /var/squid/logs/store.log
cache_log /var/squid/logs/cache.log
acl all src 0.0.0.0/0.0.0.0
acl internal dstdomain “/etc/squid/internal.acl“ #定义acl
http_port 3128 transparent
http_access allow all
wccp2_router 10.6.1.1 #指定防火墙的地址
wccp2_rebuild_wait on
wccp2_forwarding_method 1
wccp2_return_method 1
wccp2_assignment_method 1
wccp2_service standard 0
cache_mem 4096 MB
cache_dir ufs /var/squid/cache 10240 16 256
cache_effective_user proxy
error_directory /usr/share/errors/no
cache_mgr **@*** #设置错误提示页面中管理员的邮件地址
forwarded_for off #不显示客户端私有IP
logfile_rotate 3 #日志轮回,保存轮回几次的日志
memory_pools on #让squid自动分配内存
memory_pools_limit none #不做上限限制
cache_swap_low 85
cache_swap_high 95
no_cache deny internal #对于acl internal中的域名不缓存
6.启用wccp的功能
将下列内容放在/etc/init.d/rc.local
modprobe ip_gre
iptunnel add wccp2 mode gre remote 172.*.*.* local 10.6.1.3 dev eth0
#重要说明:因为cisco防火墙默认把IP地址值最大的一个值当做自己的Router Identifier,没法改变。我在刚开始的测试中,一直都无法成功,就是因为Router Identifier的问题,squid如果同asa的inside口建立gre的话,squid无法接受到客户端的代理请求,如果建立gre通道的时候跟Router Identifier的IP地址建立,能接收到请求,但无法返回信息,因为网关设置的是防火墙inside口的ip,通道是跟DMZ口建立的,DMZ口无法与内网的IP通信,所以造成这个原因。之后我把squid的网关改成了核心交换机的ip地址,问题解决了。
ifconfig wccp2 inet 127.0.0.2 netmask 255.255.255.0 up
iptables -t nat -A PREROUTING -i wccp2 -p tcp –m tcp –dport 80 -j DNAT –to-destination 10.6.1.3:3128
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/wccp2/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
/usr/sbin/squid
防火墙配置
ASAconfig)#access-list PROXY extended permit 10.*.*.* 255.255.0.0 any eq www #定义客户端IP
ASAconfig)# wccp web-cache redirect-list PROXY
ASA(config)# wccp interface inside web-cache redirect in
7.安装apache
apt-get install apache2
8.管理日志
8.1设置计划任务
crontab –e
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/etc/squid
30 23 * * 0 /usr/sbin/squid –k rotate
45 23 * * 0 rm /var/squid/logs/cache.log.*
50 23 * * 0 rm /var/squid/logs/store.log.*