squid实现简单web代理服务器

  1. 云栖社区>
  2. 博客>
  3. 正文

squid实现简单web代理服务器

科技小能手 2017-11-12 17:34:00 浏览1919
展开阅读全文

找个服务器去帮你做你想干的事,代理服务器就是一个网络信息的中转站,代理服务器就好象一个大的Cache,这样就能显著提高浏览速度和效率。更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的会话层。主要的功能有:

1. 突破自身IP访问限制,访问国外站点。教育网、过去的169网等网络用户可以通过代理访问国外网站。

2. 访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。

3. 突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国外的代理服务器试试。

4. 提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时,则直接由缓冲区中取出信息,传给用户,以提高访问速度。

5. 隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。

      这里小编和读者讲一件小编在大学干过的搓事,小编的大学在上机练习期间是不允许开外网的,可是机房有一台HP的服务器(没有啥特殊用途,可能是软测专业做测试用的)是可以上网的,平时教小编LINUX基础的老师查资料都用那一台服务器,小编我平时就喜欢玩啊,没得网上多无聊啊,小编当初想过多种方法来上网啊,比如说没老师的时候就把自己的IP和MAC改成服务器的IP和MAC,但是老师来了还要改回去,内心哪个纠结啊,于是小编我就不断的在寻找解决方法啊,最终从网上找到了一种解决方法,那就是代理上网啦,当初那个服务器安装的还是桌面版9的linux,那时候为了配一个代理服务器啊,用了小编一个星期的时间啦,不过也值了。

      代理服务器在windows和linux等多种平台下都能够搭建,windows下有wingate、sysgat、winroute小编觉得wingate比较的好用,小编这里介绍一种linux下搭建代理服务器的软件squid的使用,小编会讲解常用的三种代理服务器的搭建,分别是正向代理、透明代理和反向代理(在企业中很常见的)

准备工作:

1.linux操作系统环境,小编用的是 Red Hat Enterprise Linux 5.4

2.squid 软件,小编的5.4带有squid的安装包,直接使用yum安装就是了,squid的配置文件在/etc/squid/squid.conf,服务是squid(可以控制开启关闭代理服务)

3.这里小编要说一下啊,squid的配置文件老长老长了,但是绝大部分都是说明文档,读者如果英文好的话,自己就可以来配置啦

Project 1:正向web代理服务器的搭建以及小应用

当初小编搭建的为上网的代理服务器就是正向代理啦,现在看来真是很简单啊

step 1:项目拓扑

clip_image002

step 2:修改squid.conf文件,这里读者可以使用搜索来定位修改

http_port 192.168.111.10:3128

//设置监听内网卡的地址及3128端口

cache_mem 64MB

//设置内存占用缓存64MB

maximum_object_size 4096kb

//设置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 100(磁盘空间大小) 16(一级目录个数) 256(二级目录个数) //缓存文件放置的位置

在615行的后面添加 “http_access allow all”,如果不修改的话,客户主机是无法访问web站点的,这个小编先实现,后面会解释原因

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

# squid -k parse

# service squid start

Step 4:客户机浏览器设置代理,客户机不需要设置网关和DNS

打开IE选项,找到以下栏目

clip_image004

打开“局域网设置“,将代理指向代理服务器的内网卡192.168.111.10:3128

clip_image006

保存即可

Step 5:先打开web代理服务器的日志监控,在客户机正常访问网站试试(小编这里访问百度试试)

clip_image008

服务器的代理服务器日志情况

clip_image010

这样一来,如果简单的上网就实现啦,当然这个需求仅限小编这号人能干的出来啦,对于公司来说才不会这么干呢,公司会利用代理来限制员工来上网(和防火墙一样,但是价格可就比防火墙便宜多了),还记得小编为了实现上面的让读者在squid配置文件中加的一句话没“http_access allow all”,这句话就类似于访问控制列表一样啦,它的意思就是允许所有用户进行访问,squid提供的访问控制非常强大啊,能控制来源IP,能控制目标访问等等,当然读者不用担心如何来定义访问控制列表啦,小编不是说过了么,squid的配置文件中都会有详细的说明,对于访问控制列表的定义说明就在405行到571行直间(真是多啊),那么小编就来试着自己定义几条访问控制列表来看看是不是能达到控制用户访问的效果

需求1:假设我不允许192.168.2.0网段的上网啦,当然为了集中管理,小编就将acl添加在原有acl条目的后面了

定义访问控制列表:acl Denyip src 192.168.2.0/255.255.255.0

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

重启squid服务:# service squid restart

2.0网段的主机访问网页试试

clip_image012

拒绝掉了吧,在看看代理服务器的日志信息

clip_image014

拒绝了192.168.111.2的主机访问百度啦,成功啦

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

定义访问控制列表:

acl WorkTime time 08:00-17:00

acl DenyDomain dstdomain .qq.com

应用acl

http_access deny all DenyDomain WorkTime

http_access allow all

重启squid服务:# service squid restart

# date

2013年 04月 22日 星期一 09:15:46 CST

客户机访问以下news.qq.com试试

clip_image016

在服务器查看日志看看

clip_image018

把服务器的时间修改一下看看,再访问试试

clip_image020

小编在正向web的代理服务器就讲到这里啦,其他任务就交给读者你去摸索啦

Project 2:透明代理,读者应该会发现,上面的正向代理还需要自己在浏览器中手工设置,那多麻烦啊,透明代理就很好的解决了这些问题啦

要实现透明代理就要做一下几步

客户端 配置网关 dns指向

服务器 重定向 80--3128 ip

服务器 SNAT(DNS)

服务器 数据包转发

服务器 支持透明代理 http_port 3128 transparent

Step 1:客户端配置网关和dns指向

clip_image022

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

iptables –t nat –A PREROUTING –i eth0 –p tcp –dport 80 –j REDIRECT –to-port 3128

查看一下nat表格

clip_image024

Step 3:SNAT(DNS)

iptables -t nat -A POSTROUTING -p udp --dport 53 -o eth1 -j MASQUERADE

查看一下nat表格

clip_image026

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

# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

# sysctl –p

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

# vim /etc/squid/squid.conf

http_port 192.168.111.10:3128 transparent

Step 6:重启squid服务

# service squid restart

Step 7:测试,在客户机输入www.163.com试试

clip_image028

成功了吧

两个正向代理做完之后,读者应该会发现,每当访问一个新的网站的时候速度不是那么快,当再次访问那个网站的时候读者应该会发现速度相当的快了吧,这就是因为缓存在起作用啦

Project 3:反向代理服务器

反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。

准备工作:内网搭建一个web服务器吧,小编用的是Server 2003,可以直接用IIS来搭建啦,拓扑结构图任然使用正向代理的拓扑图,这里在配置过程中涉及到父亲节点和兄弟节点的设置,小编画了一个图来帮助读者理解

clip_image030

对于缓存节点的设置,squid配置文件中有非常详细的说明,有涉及安全性的,读者可以按照需求进行修改,小编这里由于就只有一台代理,所以就不存在兄弟节点

需求:简单的反向代理实现

Step 1:修改squid的配置文件

http_port 192.168.106.20:80 vhost

cache_peer 192.168.111.2 parent 80 0 originserver

Step 2:重启squid服务

# service squid restart

Step 3:测试,在外网机器输入http://192.168.106.20试试

clip_image032

成功了吧,这里还要提醒读者,在使用正向代理的时候,要考虑到缓存的更新速度,比如访问新闻类的网站,有可能你第二次的访问还是原来的老新闻,squid配置文件中有一个参数可以综合控制缓存”refresh_pattern”,读者可以根据需求来自行控制啦

好啦,小编这里啰嗦完了,读者加油啦……….


本文转自 chenming421  51CTO博客,原文链接:http://blog.51cto.com/wnqcmq/1184088


网友评论

登录后评论
0/500
评论
科技小能手
+ 关注