服务器架构之性能扩展-第三章squid(4)

 第三章Squid代理服务器

3.1 Squid代理简介
代理技术是让代理服务器直接访问外部网络,然后将结果传给内部网络,代理服务器主要工作在应用层。Nat技术也可以实现代理访问,它是通过路由功能完成源地址与目的地址的转换,完成访问,主要工作在数据链路层/网络层和传输层等底层。
Nat的优点:工作在底层,透明代理,限制较少。缺点:地址转换技术,源地址和目标地址暴露,容易造成内部网络被攻击。
Squid代理服务器:可以完全做到内部外部分离,可以保障内部安全。缺点:完成的服务功能比较少,并且服务需要支持设置代理ip和端口功能。

 

3.1.1 Squid代理可以实现的功能:
1、提供对HTTP和FTP协议的代理服务
2、缓存代理的内容,提高客户端访问网站的速度,并且能够节约出口网络流量
3、对客户端地址进行访问控制,限制允许访问squid服务器的客户机
4、对目标地址进行访问控制,限制客户端允许访问的网站
5、根据时间进行访问控制,限定客户端可以使用代理服务的时间
3.1.2 缓存代理作用:
通过代理服务器访问外部网站,开启缓存池,缓存了部分的静态页面,如果下一个客户再来访问,代理服务器会去真是服务器核实页面是否更新了,然后决定是否更新缓存池,然后返回给客户。如果是全新页面,代理服务器会去真实服务器读取数据返回给客户。

 

3.2 Squid代理服务的种类
普通代理服务
即标准的,传统的代理服务;需要客户在浏览器中指定代理服务器的地址和端口,一般是为了实现员工访问外部网络的需要。
透明代理服务器
适用于企业的网关主机,客户端不需要指定服务器的地址和端口,通过iptables将客户的web请求交给代理服务器,减少了内部员工设置上的麻烦
反向代理服务
方向代理是实现外网访问内网的一种访问技术
3.3 安装squid服务
Rpm –qa|grep squid          //查看软件包是否安装

Yum install squid*           //yum安装squid

 

Vi /etc/squid/squid.conf        //修改配置文件,我们需要先删除原配置文件,在新建一个配置文件,不会发生误删,因为配置文件默认有两份一个是squid.conf和squid.conf.default

 

Service squid start          //启动squid服务,它会在/var/spool/squid/目录下,自动生成目录,16个一级目录,每个一级目录256个二级目录。

 

可以看到3128端口

 

Squid –k reconfig           //修改配置文件,不重启也可以动态加载
3.4 ACL访问控制原理
ACL(Access Control List),访问控制列表。是用来实现客户机的IP地址和请求的url/文件类型、访问时间、并发请求数进行限制的一种技术支持
它需要先定义然后指定限制类型,是拒绝还是允许。
格式:acl 列表名称 列表类型 列表内容    //定义列表
      http_access allow或deny 列表名       //限制列表
例如:acl all src 0.0.0.0/0.0.0.0
      http_access deny all
首先定义一个名叫all的acl语句,它的内容为所有类型的源地址,类型为拒绝。
常用的ACL列表类型

 

例如:
acl lan src 192.1681.10.1/24
http_access deny lan      //拒绝源地址为192.168.10.0这个子网的ip
acl block_domain dstdomain .qq.com.kaixin001.com

http_access deny block_domain   //拒绝目标域名为qq等的访问

acl work_hour time MTWHF 08:30-17:30
http_access allow work_hour //允许访问的时间段,周一到周五时间段
acl realfile urlpath_regex –I \.rmvb$ \.rm$
http_access deny realfile //禁止这种文件类型的访问,-i忽略大小写
访问控制类型的匹配顺序
没有规则时:拒绝所有客户端的访问请求
有规则但找不到匹配项时:将采用与最后一条相反的权限
3.5 squid代理的实现
实验一:配置squid普通代理
内网客户机IP:192.168.10.2 
Squid服务器IP:192.168.10.1 内网ip,200.168.10.1 外网ip
Web服务器IP:200.168.10.2

 

1、          配置网卡

内网用vm1,squid服务器需要拥有两块网卡,内网连载vm1,外网vm2上,web server服务器的连接vm2网卡。分别配置ip和掩码。
Ping测试: //内网可到192.168.10.1,squid server可以通左右

 

 

2、          修改squid配置文件

Vi /etc/squid/squid.conf

 

 

首先配置文件设定服务的端口和ip,visible_hostname设置出问题的联系地址,innet定义来自这个网段的ip都可以,all定义来自所有的ip,reply设置允许资源大小10MB,设置规则允许innet列表, all为禁止列表。
3、配置web server,启动web服务,定义主页内容

4.测试,当没有指定代理时无法访问到外部web server,通过浏览器右边的设置按钮-》internet选项-》局域网设置-》输入ip和端口,确定

 

 

 

再次访问外部web serve

 

Squid会生成一些日志文件在/var/log/squid/目录下,其中Squid.out错误日志,store.log访问日志,cache.log缓存日志
 

 

Cat /varlog/httpd/access_log    //查看日志,看到代理服务器的ip

 

实验二:配置squid透明代理
内网客户机IP:192.168.10.2 
Squid服务器IP:192.168.10.1 内网ip,200.168.10.1 外网ip
Web服务器IP:200.168.10.2

 

1、          配置实验环境,ping通。这里内部的pc机需要制定网关192.168.10.1才行。

2、修改配置文件,Transparent是透明的意思,开启透明。

 

3、增加iptables规则。“iptables –t nat –A PREROUTING –I eth0 –s 192.168.10.0、24 –p tcp –dport 80 –j REDIRECT –to 3128

Iptables规则解析:-t使用地址转换技术,-A prerouting是通过这条链,-i eth0进入的接口,-s来自的源,-p tcp协议,-dport目的端口,-j重定向 --to重定向到3128端口。
总的意思就是通过地址转换技术,通过prerouting通道,对于来自eth0的访客,源地址是192.168.10.0的子网的ip,访问目的端口是80的服务,我们重定向到3128端口,交给squid来代理。

 

4、测试。直接测试即可,不需要配置客户端。

 

实验三:配置squid反向代理
外部客户机 IP 200.168.10.2 
Squid 服务器 IP 192.168.10.1  内网 ip 200.168.10.1  外网 ip
Web 服务器 IP 192.168.10.2

 

1、          配置网络环境,并可以ping通。这一次squid服务器外网使用vm1网卡,内网使用vm2网卡,web server使用vm2网卡。

2、          修改squid配置文件。

因为我们squid代理服务器没开启80端口,我们先虚拟一个80端口,这样外部的访问才不会被拒 绝。它内部服务可以实现集群的功能。并且squid服务器对于外网应该都是allow。

 

3、测试,访问代理服务器200.168.10.1,自动定向到内部的服务器。

 

实验四:配置squid反向代理虚拟主机
外部客户机IP:200.168.10.2 
Squid服务器IP:192.168.10.1 内网ip,200.168.10.1 外网ip
Web服务器IP:192.168.10.2
虚拟主机,就是一个web server架设多个域名的网站,实现一机多用。

1、          配置网络环境,可以ping通。

2、          修改squid配置文件。

配置文件,我们分别制定两个目的,指定网站名之后,并且允许所有外部ip的访问。

 

 

3、          配置虚拟主机

Vi /usr/local/apache/etc/httpd.conf 修改配置文件,然后到各自的网站目录建立不同的主页文件。

 

4、          修改pc机的hosts文件。

5、          访问测试,即可达到不同的域名访问到不同的网站。

总结:
我们可以通过tree 00(目录名)来查看某个缓存池里的缓存情况,可以查看到都是静态内容。Squid功能不仅有代理还有集群功能,所以越来越受到欢迎。

 

 

 

 

你可能感兴趣的:(架构,服务器,squid)