Squid代理服务器

代理服务器可以代表其它计算机传递数据包或信息,这些数据包和信息包括网页、电子邮件、多媒体文件和其它网络应用程序等。通过它的文件缓存和访问控制等功能,可以实现快速浏览和对用户访问的有效管理。    

Web代理服务器(通常所说的代理服务器)是介于浏览器和Web服务器之间的一台服务器,当你通过代理服务器上网浏览时,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。 而且,大部分代理服务器都具有缓冲的功能,就好像一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

主要功能有

连接InternetIntranet 充当firewall(防火墙)

共享因特网连接,节省IP开销

提高访问速度,节约通信带宽

可以穿越ip限制,访问其他外网

代理服务器对于硬件的要求相当的高!因为我们架设代理服务器的目的就是希望能够加快网络的传输速度因此,虽然代理服务器几乎在任何的 Linux 系统上面都能跑,但是代理服务器最好还是有较高的硬件配置。

Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据,Squid是一个高性能的代理缓存服务器,可以加快内部网浏览Internet的速度,提高客户机的访问命中率,Squid将数据元缓存在内存中,同时也缓存DNS查寻的结果,由一个主要的服务程序Squid,一个DNS查询程序dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成,Squid的另一个优越性在于它使用访问控制清单(ACL)和访问权限清单(ARL),所以squid也有提高安全性的功能。

下面是关于代理的几个小案例:

正向代理:

是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(mod_cache提供)减少网络使用率。

拓扑:

Squid代理服务器_代理服务器

代理服务器架设在red   hat  5.4

步骤:

修改/etc/squid/squid.conf文件,这个文件内容很多,但需要修改的如下,大家可以使用搜索功能去更改

设置监听内网卡(eth0)的地址及3128端口

http_port 192.168.129.100:3128

设置内存占用缓存64MB

cache_mem 64MB

设置4096kb之下的文件保存在代理服务器中

maximum_object_size 4096kb

限制用户下载

reply_body_max_size 10240000 allow all

设置日志放在哪

access_log /var/log/squid/access.log squid

这里是代理服务器的名字,如果不设置会使用主机名

visible_hostname proxy.test.com

缓存文件放置的位置

cache_dir ufs /var/spool/squid

615行的后面添加 http_access allow all”,如果不修改的话,客户端pc是无法访问web站点的

检查squid的配置,并启动squid服务

# squid -k parse

# service squid start

接下来对客户端pc进行设置,我这里是一台windows 2003

打开浏览器找到internet选项

Squid代理服务器_代理服务器_02

点开局域网设置,填上代理服务器内网卡地址,和端口3128

Squid代理服务器_squid_03

确定即可,这样客户端pc就能通过代理服务器上网了

代理服务器还有访问控制的功能:

不允许员工在工作期间访问有关qq的站点

进入squid.conf定义访控列表:

acl WorkTime time 08:00-17:00

acl DenyDomain dstdomain .qq.com

应用acl

http_access deny all DenyDomain WorkTime

http_access allow all

在系统时间符合访控列表时间时就不能上网了

若不允许某一网段主机上网了

定义访问控制列表

acl Denyip src 192.168.2.0/255.255.255.0

应用acl

http_access deny Denyip(这里要注意将原来的允许所有给去掉)

重启squid服务:# service squid restart

改一个2.0网段的主机访问网页

Squid代理服务器_squid_04

反向代理:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。

拓扑:(internet网上发来访问内部www服务器的请求)

Squid代理服务器_squid_05

步骤:

修改squid的配置文件

http_port 219.155.198.71:80 vhost

cache_peer 192.168.129.253 parent 80 0 originserver

修改完毕后重新启动squid服务

在外部pc浏览器内输入http://219.155.198.71便能访问到内部www服务器

透明代理:

透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改变你的request fields(报文),并会传送真实IP,多用于路由器的NAT转发中。相对于正向代理,透明代理不需要在浏览器上配置代理指向,我们就好像感觉中间的代理服务器不存在一样。下面是配置的步骤。

配置网关和dns指向

 Squid代理服务器_squid_06

web代理服务器将所有web访问都重定向到3128端口

iptables –t nat –A PREROUTING –i eth0 –p tcp –dport 80 –j REDIRECT –to-port 3128Squid代理服务器_squid_07

做一个snat

iptables -t nat -A POSTROUTING -p udp --dport 53 -o eth1 -j MASQUERADESquid代理服务器_squid_08

开启web代理服务器的数据包转发功能

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl –p

配置squid配置文件,让服务器支持透明代理

vim /etc/squid/squid.conf

http_port 192.168.129.100:3128 transparent

重启squid服务

service squid restart

配置完成后内部网络便可以上网了