利用squid架设透明代理使“校内网”变“校内”网解决方案

    绝大部分的大学都是要交网费上外网的,师大也不例外,每个月30大洋,并且只有10G的流量,对于穷学生来说,这30块钱也真不是小数目,也够吃一顿了。。。。- -于是好多同学共用一个号,或者甚至不买号。。。。但是呢,对于研究生来说,在教学科研区是有免费帐号可以用的(只能上国内),是不是可以利用下这个流量,然而又不能惹恕网络中心。只做一个校内网校内免登录网关的访问!——于是便有了这篇文章:

    使用软件:
    Ubuntu 9.04 Server/squid2.7
    首先明确下什么是透明代理:
    这里的透明代理跟一般意义上有透明代理不相同,一般意义上的透明代理的解释见这里http://www.cnele.com/CN/mod-article_act-item_aid-1352/1352.htm,是指在同一局域网中,一台装有squid的机器来充当网关,使用户不用设置代理即可访问网络。而我这里说的透明代理相当于是端口映射,即是把服务器的80端口映射到外网的服务器的相应端口。就校内网来说,就是把本地的80端口映射到校内网服务器的80端口,当访问本地的80端口时,本地机器替用户访问校内网再将结果返回给用户,就像校内网在本地的服务器上一样。
    但是仅仅是端口映射是不够的,因为一些大网站,他们有很多的镜像站,并且,为了减小网络带宽的使用,他们给图片服务器以不同的域名,这样的话,只用IP就不能满足需要了,就要用到squid中的“虚拟主机”的功能,这个功能与apache中的虚拟主机的含义相似,可以对不同的域名,映射不同的地址,如果没有这个功能,根本就没法映射大站。
    安全上,要限制用户只能访问相应的网站,防止被当成代理服务器用,须在acl中进行相应的限制操作。
    对于很多子域名的情况,可以用泛域名来写:.xiaonei.com
    基本道理说明白了,下面就讲怎么配置了。
    本文假设用户已经安装了squid,以2.7为例说明:
    1)设置acl src 本地IP范围,acl dst 你映射的网站的IP范围,并在denny和allow中添加
    2)找到http_port 3128改成http_port 80 transparent
    3)设置:cache_peer xiaonei.com parent 80 0 no-query originserver name=xiaonei等等
    4)设置:cache_peer_domain xiaonei xiaonei.com等等
    但是还有个关键问题,就是用户在浏览器里输入xiaonei.com时,他的浏览器不会找到我们费劲心思做的透明代理上啊……怎么办?有办法——让用户修改c:windowssystem32driversetchosts文件(linux里也有,在什么地方?——自己找找吧。。。),在里面添加:iptxiaonei.com 等等(t的意思是TAB键,IP就是我们服务器的IP啊~),可以写个小批处理来搞定。
    OK了,现在,呵呵,不用登录网关,只要用户hosts文件修改下,使xiaonei.com解析到我们的服务器,就可以访问到访问到“校内网”啦!把“校内网”变成了“校内”网,呵呵~~
    其实很多的大网站正是以这种方法为基础来进行加速!!
    其实apache利用虚拟主机和反向代理也可以完成相同的功能,熟悉apache的同志可以试一下~
    写得很简略,具体的配置请自己google下,这里主要讲得是思路。有问题请留言讨论。

7 Replies to “利用squid架设透明代理使“校内网”变“校内”网解决方案”

  1. 如果要限制访问的用户,怎么限制?
    就像CCPROXY需要输入验证信息才允许访问

  2. 我们这一般帐号可以上国内网 如果要上国际网就要在缴费了 按流量或者包月,所以我们一个组搞了个代理来上国际网。服务器端用的是ccproxy。客户端需要在ie的里设置。
    按透明代理的说法,客户端可以直接在网关上设置, 服务器是配置一下Squid代理就行了?

Leave a Reply to kangzjCancel reply