ubuntu+cisco asa搭建支持wccp的squid

2011年4月1日 | 分类: Linux | 标签: , , , ,

环境说明

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

Written by an6097

目前还没有任何评论.
注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。