一、代理服务器

代理服务器(Proxy Server)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层,从而起到防火墙的作用。代理服务器大多被用来连接INTERNET(国际互联网)和Local Area Network(局域网)。

Squid cache(简称为Squid)是一个流行的自由软件,它符合GNU通用公共许可证。Squid作为网页服务器的前置cache服务器,可以代理用户向web服务器请求数据并进行缓存,也可以用在局域网中,使局域网用户通过代理上网。Squid主要设计用于在Linux一类系统运行。

squid 分类

按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。

· 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;

· 透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;

· 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

官方地址:http://www.squid-cache.org/

参考文档:http://www.squid-cache.org/Doc/config/

操作系统:CentOS release 6.4 (Final)

二、系统环境

操作系统:CentOS release 6.6 (Final)

Squid版本:squid-3.1.10-29.el6.i686

SELINUX=disabled

HTTP Service: stoped

防火墙:普通代理模式关闭、其他模式开启

三、安装Squid服务

3.1 检查squid软件是否安装

# rpm -qa|grep squid

3.2 如果未安装,则使用yum 方式安装

# yum -y install squid

image

3.3 设置开机自启动

chkconfig --level 35 squid on             //在3、5级别上自动运行squid服务

四、squid服务器的配置文件说明

http_port 3128 //设置监听的IP与端口号

cache_mem 64 MB //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。

maximum_object_size 4 MB //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘

minimum_object_size 0 KB //设置squid磁盘缓存最小文件

maximum_object_size_in_memory 4096 KB //设置squid内存缓存最大文件,超过4M的文件不保存到内存

cache_dir ufs /var/spool/squid 100 16 256 //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量

logformat combined %&gt;a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}&gt;h" %Ss:%Sh //log文件日志格式

access_log /var/log/squid/access.log combined //log文件存放路径和日志格式

cache_log /var/log/squid/cache.log //设置缓存日志

logfile_rotate 60 //log轮循 60天

cache_swap_high 95 //cache目录使用量大于95%时,开始清理旧的cache

cache_swap_low 90 //cache目录清理到90%时停止。

acl localnet src 192.168.1.0/24 //定义本地网段

http_access allow localnet //允许本地网段使用

http_access deny all //拒绝所有

visible_hostname centossd //主机名

cache_mgr xxx@126.com //管理员邮箱

五、普通代理服务

即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。

实验拓扑图如下:

clip_image004

5.1 配置Squid 代理服务器IP地址

将eth0的IP地址修改为192.168.1.168(内网地址)

将eth1的IP地址修改为192.168.0.128(外网地址)

配置好后如下图所示:

clip_image006

5.2 编辑squid 主配置文件/etc/squid/squid.conf

把已存在的配置文件备份mv /etc/squid/squid.conf /etc/squid/squid.conf.bak

编辑配置文件vi /etc/squid/squid.conf

http_port 3128

cache_mem 64 MB

maximum_object_size 4 MB

cache_dir ufs /var/spool/squid 100 16 256

access_log /var/log/squid/access.log

acl localnet src 192.168.1.0/24

http_access allow localnet

http_access deny all

visible_hostname centossd

cache_mgr xxx@126.com // 可以不添加

5.3 初始化

# squid –z

几个常用命令

clip_image007

5.4 启动Squid

clip_image008

5.5 配置Web 服务器

配置服务器再次不做详述

查看web服务器ip地址

clip_image010

5.6 配置客户端IP地址

clip_image012

5.7 配置浏览器代理

clip_image014

5.8 测试

clip_image016

测试成功。

如若想测试域名访问可以通过设置本地dns或者修改hosts文件来测试,此处不做详述。

通过上图可以看到客户端可以和代理服务器端通信,不能和web服务器通信。

5.9 测试错误页面

clip_image018

可以看到在squid 配置文件里设置的参数在错误页面里的显示。

六、透明代理服务

适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。

实验拓扑图如下:

clip_image020

6.1 修改squid 主配置文件/etc/squid/squid.conf

在http_port 3128 后添加transparent 关键字。

http_port 3128 transparent

cache_mem 64 MB

maximum_object_size 4 MB

cache_dir ufs /var/spool/squid 100 16 256

access_log /var/log/squid/access.log

acl localnet src 192.168.1.0/24

http_access allow localnet

http_access deny all

visible_hostname centossd

cache_mgr xxx@126.com

6.2 reload

reload 让上面的配置生效。

# /etc/init.d/squid reload

6.3 添加iptables规则,把内部的http请求重定向到3128端口

a) 启动iptables服务

b) [root@localhost Desktop]# service iptables start

c) iptables: Applying firewall rules: [ OK ]

d) 清除现有规则

clip_image022

e) 保存iptables 设置

clip_image024

f) 查看nat表

clip_image026

g) 添加nat规则并保存

配置iptables设定nat,即透明代理
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
如果只设置下面一句而上面一句不设置,客户端也可以上网,只是不通过squid哈~
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

clip_image028

保存iptables设置
service iptables save

clip_image030

6.4 客户端设置

1) 设置网络

clip_image032

将网关设置为代理服务器内网地址

2) 在浏览器中将使用代理服务器选项勾除。

clip_image033

6.5 浏览器访问测试

clip_image035

说明透明代理设置成功

七、反向代理服务

为Internet用户访问企业Web站点提供缓存加速。

实验拓扑图如下:

clip_image037

内网服务器是server 2008 R2

7.1 关闭内网服务器防火墙

7.2 修改Web Server 主页

创建目录和主页

clip_image039

7.3 配置squid

http_port 80 accel vhost //这个参数的用于支持主机映射

http_access allow all

cache_peer 192.168.1.118 parent 80 0 originserver round-robin weight=1 //指定第1台真实服务器的位置

cache_peer 192.168.1.119 parent 80 0 originserver round-robin weight=1 //指定第2台真实服务器的位置

visible_hostname centossd

7.4 启动Squid服务

clip_image041

注:要确保80端口没被使用

7.6 测试

squid 采用了round-robin,所以客户端的访问将轮询两台web服务器,采用 "Ctrl + F5" 来深度刷新测试。

web1

clip_image043

web2

clip_image045

八、日志

再来看看日志信息。如图,所有的行为都被日志记载。

使用tail –f 可以实时监控日志最后一行的变化。

clip_image047

 

 

注: 此文有参阅http://zpp2009.blog.51cto.com/730423/297023

http://bbs.51cto.com/thread-564760-1.html

http://www.cnblogs.com/mchina/p/3812190.html

三篇文章 ,感谢三位博主!