红联Linux门户
Linux帮助

Ubuntu+Cisco ASA搭建支持WCCP的Squid

发布时间:2015-03-16 21:18:29来源:linux网站作者:an6097

环境说明

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.*