简介:
代理服务器(ProxyServer)其功能就是代理网络用户去取得网络信息。
Squid是一个缓存Internet数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid发出一个申请,要Squid代替其进行下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且Squid可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。
工作流程
当代理服务器中有客户端需要的数据时:
a.客户端向代理服务器发送数据请求;
b.代理服务器检查自己的数据缓存;
c.代理服务器在缓存中找到了用户想要的数据,取出数据;
d.代理服务器将从缓存中取得的数据返回给客户端。
当代理服务器中没有客户端需要的数据时:
1.客户端向代理服务器发送数据请求;
2.代理服务器检查自己的数据缓存;
3.代理服务器在缓存中没有找到用户想要的数据;
4.代理服务器向Internet上的远端服务器发送数据请求;
5.远端服务器响应,返回相应的数据;
6.代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。
Squid代理服务器工作在TCP/IP的应用层。
Squid 分类:
1、正向代理—普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
2、正向代理—透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;
3、反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
实验环境:
三台可分配主机:
WindowsCH
LinuxCentOS6.3 node1
LinuxCentOS6.3 node2
LinuxCentOS6.4 www.silentdusk.com
实验目的:
1、普通代理:
CH指定node1为代理服务器,访问node2。
2、透明代理:
Node1为用户内网防火墙且为squid server,node1代理CH的所有Web请求,node2为外网企业Web server。
3、反向代理:
Node1和node2在企业网站内网中,node2为web server,node1 为squid server。
CH访问网站node1,node1给node2发请求,node1得到数据后,在返回给CH。
实验步骤:
普通代理实验:
1、 安装squid:
#yum installsquid
2、 设置开机自动启动
#chkconfig squidon
3、 主配置文件:/etc/squid/squid.conf详解:
http_port 3128 //设置监听的IP与端口号
cache_mem 64 MB //额外提供给squid使用的内存
maximum_object_size 4 MB //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
minimum_object_size0 KB //设置squid磁盘缓存最小文件
maximum_object_size_in_memory4096 KB //设置squid内存缓存最大文件,超过4M的文件不保存到内存
cache_dir ufs /var/spool/squid 100 16 256 //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
logformat combined %>a %ui %un [%tl]"%rm %ruHTTP/%rv" %Hs%
access_log /var/log/squid/access.logcombined //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 localhost //主机名
cache_mgr [email protected] //管理员邮箱
4、修改配置文件结束后,初始化:
#squid-z
5、初始化成功后启动squid:
#servicesquid start
启动成功!!
6、测试squid:
client在IE设置squid代理。
浏览web上的网页
测试成功!
Squidserver正常工作!普通代理实验成功!
透明代理实验:
1、 修改配置文件:
在端口设置项后添加transparent关键字。
2、 重启squid:
#service squid restart
3、 防火墙设置:
#serviceiptables start
#iptables -F
#/etc/init.d/iptablessave
#iptables -t nat -L -n
#iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24-p tcp --dport 80 -j REDIRECT --to-port 3333
#/etc/init.d/iptablessave
4、 为node1增加一张网卡和模拟外网ip:
#ifconfig eth1 200.168.1.1 netmask 255.255.255.0
5、 为node2配置模拟外网ip:
#ifconfig eth0 200.168.1.2 netmask 255.255.255.0
6、 测试虚拟环境连通性(模拟):
Client能ping通node1,不能ping通node2。
Node1能ping通client和node2。
Node2能ping通node1,不能ping通client。
7、把client网关设置为squid server :
取消IE中的代理设置!
7、 测试squid server是否能完成代理:
实验成功!!
反向代理:
1、 关闭防火墙
#serviceiptables stop
2、 配置squid:
http_port 80 accel vhost
cache_peer 200.168.1.2 parent 80 0 originserverround-robin weight=1
3、 重启squid:
先关闭本机web服务,不然80端口占用,squid起不来!
#service squidrestart
4、 测试
Client网页访问squid server ,出现node2的web信息。
实验完成!!!
Squid常用命令:
1, 初始化你在 squid.conf 里配置的 cache 目录
squid -z
2, 对你的squid.conf 排错,即验证squid.conf 的 语法和配置。
squid -k parse
3, 在前台启动squid,并输出启动过程。
/usr/local/squid/sbin/squid -N -d1
4, 启动squid在后台运行。
squid -s
5, 停止 squid
squid -k shutdown
6, 重引导修改过的 squid.conf
squid -k reconfigure -f /XXX/squid.conf
7, 修改cache 缓存目录的权限。
chown -R squid:squid /cache目录
8, 修改squid 日志目录的权限
chown -R squid:squid 定义的日志文件所在目录
9, 定期清除swap.state内无效数据
squid -k rotate -f /path/to/squid/conf_file