使用Squid做代理服务器的方法

说到代理服务器,我们最先想到的可能是一些专门的代理服务器网站,某些情况下,通过它们能加快访问互联网的速度。其实,在需要访问外部的局域网中,我们自己就能设置代理,把访问次数较多的网页保存在缓存中,从而“提高”网络速度。更重要的是,我们能通过代理服务器,达到控制访问权限的目的。在 Windows中,有很多这样的软件,如:WinGate、SyGate等,不过,本文要讨论的,是能给你充分自由的Linux下的Squid。
  Linux下的代理服务器软件也不是只有Squid,不过在大部分Linux版本中都带有它。

  走进“代理”

  首先,我们来了解一下代理服务器的工作原理。代理服务器其实就是基于TCP/IP的一种软件,它在TCP的某个端口上进行监听,例如:4444,其他客户机(就是想通过代理上网的那些Windows系统)配置好应用软件,如:IE。其中需要填上代理服务器的端口,即前例中的4444,这样代理服务器才知道你要访问的地址。如果你是合法用户的话,它就取得你想要的网页,然后再通过4444这个端口传递给你,上网时你不会感觉到代理服务器的存在。

  而代理服务器的真正意义在于:一、由于它是先将网页下载到本地使用,因此访问频率越高的站点速度就会越快;二、如果你没有访问某个站点的权限而它有,你就能通过它访问到该站点;三、它可以控制你的访问。

  当今,通过窄带联入Internet的恐怕仍然占大多数,代理服务器的提速作用也就十分明显了。

  熟悉Linux的朋友可能知道,在Linux下有Ipchains可以做路由器,一样可以控制访问权限,但Ipchains的缺点是不支持DNS解析,如果你想通过它控制客户机的访问,就必须一一指定目的地的IP,如果有谁把Ipchains用在访问Internet上,那他一定是疯了,因为 Internet上的IP地址不但多得像天上的星星,而且和星星一样随时都在变化。Squid就不同,它可以指定哪些域后缀不能访问,如:.tw、. net等,这样就把域名对IP的映射交给ISP去做了。

  配置举例

  在这个例子中,我们使用的是一台普通品牌机做代理服务器,内装两块网卡,第一块eth0接的是本单位的局域网,第二块eth1接的是一台简单的Internet共享器,操作系统是RedHat Linux 6.1,Ipchains和Squid都是系统自带的。

  像大多数Linux软件一样,Squid是通过配置文件工作的,它的默认配置文件是/etc/squid/squid.conf,原始文件长达数十页,给出了详细的配置说明,其中真正用得上的,可能只是很小的一部分。看看下面这个配置文件,其实很多选项都是一目了然的:

  http_port 4444

  #代理服务器监听的端口

  cache_dir /var/cache/squid 100 16 32

  #缓存目录 大小(兆) 第一级子目录个数 第二级子目录个数

  cache_access_log /var/log/squid/access.log

  cache_log /var/log/squid/cache.log

  acl all src 0.0.0.0/0.0.0.0

  acl head src 192.168.0.2/255.255.255. 255 192.168.0.3/255.255.255.255

  acl normal src 192.168.0.21-192.168. 0.99/255.255.255.255

  acl denysite dstdomain tw net

  acl denyip dst 61.136.135.04/255.255. 255.255

  acl dnsport port 53

  http_access allow head

  http_access deny denysite

  http_access deny denyip

  http_access allow normal

  http_access deny dnsport

  实例分析

  上面的内容,就是一个基本Squid所需要的全部配置,是不是很简单?!

  从上面我们可以看到,代理服务器使用4444这个端口进行监听,缓存目录为100MB,IP地址为192.168.0.2和192.168.0.3的用户可访问所有站点,而IP地址为192.168.0.21~99的用户不能访问后缀为tw和net的站点,也不能访问IP地址为 61.136.135.04的站点(如果dst 61.136.135.04/255.255.255.255变成dst 61.136.135.04/255.255.255.0,指的是61.136.135.0这个网络)。

  很明显,Squid使用acl 来定义用户组,并使用http_access来控制用户组的权限。acl后面可以是src(源地址)、dst(目标地址)、proto(协议)、port (端口)、 srcdomain(源域)、dstdomain(目标域)等,Squid的控制功能十分强大,你甚至可以用acl aclname time指定用户组生效的时间,不过要注意,用http_access设置不同用户组的权限时,Squid是按从上到下的顺序执行的,如果你想关闭一个组访问某些站点的权限,就必须把deny的相应句子放在这个组的前面。

  另外,Squid文档中特别指出,如果没有相应的access设置,那么默认的权限与最后一行相反,在上例中,一个IP为192.168.0.5的客户未被定义却能访问外部网络,因此,在最后一行设置http_access deny all是很有必要的。

  设置完成后,就可以直接运行Squid来启动它,如果配置文件有误,Squid会给出相应的提示。然后再使用Ipchains设置包的转发规则,如只允许客户机使用POP3(110)、SMTP(25)、DNS(53)这几个端口收发信件,浏览网页只能使用代理,这样网络就安全得多了。

(0)

相关推荐

  • WINDOWS系统下怎样配置squid做CDN的简明图解

    先提条件,您预安装配置squid的这台计算机必须是联入网络的,系统版本是windows 2000/xp/2003/server 2003. 1)先下载Squid for Windows版本(http://www.jb51.net/softs/43599.html),下载地址如下(ZIP文件名称:squid-2.7.STABLE4-bin.zip),可以把这个文件下载到桌面,这样好找好操作. Squid是Linux/Unix下著名的代理服务器软件,很多商业版本的代理服务器都是基于Squid进行开发

  • 在Windows下利用Squid开设代理服务器

    在"突破公司网络封锁,畅游无限网络"一文提到解决方案中,是利用ccproxy来建立proxy server.ccproxy是图形界面程序,使用比较简单,但是存在着两个问题:首先ccproxy不是免费软件,未注册版本只能提供3个连接:另外一个就是从性能还是稳定性上都不是特别让人满意. 后来发现自己的确孤陋寡闻,Unix/Linux下大名鼎鼎的开源免费代理软件Squid(www.squid-cache.org)是有Windows的Native版本SquidNT.既然如此,Squid一出,谁

  • Windows下安装squid的步骤详解

    一.下载squid for windows 下载地址:http://www.acmeconsulting.it/SquidNT.html http://www.jb51.net/softs/43599.html 二.Windows下安装squid与配置 1.解压squid-2.6.STABLE6-NT-bin.zip到C:\squid 2.单击[开始],选择"运行",输入 cmd ,在命令提示符窗口内输入以下命令: C:\>cd c:\squid\etc C:\squid\etc

  • windows上面安装squid加速代理网站配置方法

    windows 上面安装squid 加速代理网站 windows squid 下载 //www.jb51.net/softs/43599.html 下载解压到 c:\squid c:\squid\etc\squid.conf 如下 复制代码 代码如下: #本地绑定的IP端口 http_port IP:80 vhost visible_hostname localhost cache_dir ufs c:/squid/cache 1024 16 256 cache_mem 100 MB #代理的I

  • windows环境下用squid代理https(ssl)的方法

    这个其实跟配置http代理也差不多,我之前是因为没有使用支持ssl的squid版本,所以反复折腾都不见效! 首先得检查你正在使用的squid版本是否是支持ssl的,主要看squid\sbin\ssleay32.dll文件是否存在,如果没有此文件那就得去换个支持ssl的squid版本了. 我这里就只提供个最简单的例子: 复制代码 代码如下: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 12

  • 使用Squid做代理服务器的方法

    说到代理服务器,我们最先想到的可能是一些专门的代理服务器网站,某些情况下,通过它们能加快访问互联网的速度.其实,在需要访问外部的局域网中,我们自己就能设置代理,把访问次数较多的网页保存在缓存中,从而"提高"网络速度.更重要的是,我们能通过代理服务器,达到控制访问权限的目的.在 Windows中,有很多这样的软件,如:WinGate.SyGate等,不过,本文要讨论的,是能给你充分自由的Linux下的Squid. Linux下的代理服务器软件也不是只有Squid,不过在大部分Linux版

  • Python基于scrapy采集数据时使用代理服务器的方法

    本文实例讲述了Python基于scrapy采集数据时使用代理服务器的方法.分享给大家供大家参考.具体如下: # To authenticate the proxy, #you must set the Proxy-Authorization header. #You *cannot* use the form http://user:pass@proxy:port #in request.meta['proxy'] import base64 proxy_ip_port = "123.456.7

  • Layui弹出层 加载 做编辑页面的方法

    layui是一款优秀的模块化前端框架.利用layui弹出层做编辑页面 先上效果图 基本准备,引入layui的layui.css,layui.js文件 <link rel="stylesheet" href="../../../Publics/others/layui/css/layui.css" rel="external nofollow" media="all"> <script src="..

  • 使用Python开发SQLite代理服务器的方法

    SQLite数据库使用单个磁盘文件,并且不需要像Oracle.MSSQL.MySQL等数据库管理系统那样启动服务,使用非常灵活方便.但是SQLite也有个很严重的问题,就是没有相应的服务,也没有监听任何端口,因此相应的程序只能访问本地数据库.也就是说,无法分离程序和数据库,只能把程序和数据库放在同一台计算机上. 本文使用Python开发了一个SQLite数据库的服务程序,可以完美地分离程序和数据库.技术要点是Socket编程,在数据库服务器上运行服务程序,该服务程序监听特定端口.执行代理程序发来

  • Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法

    淘宝弹性布局lib-flexible lib-flexible并不单独使用,而是搭配px2rem-loader一起做适配方案,目的是自动将css中的px转换成rem,在项目中还是按照设计稿写上对应的固定像素(px)就行. 移动端适配的具体步骤 第一步:安装插件 lib-flexible npm i lib-flexible --save-dev 第二步:安装px2rem loader npm install px2rem-loader --save-dev 第三步:在main.js中引入lib-

  • Python中requests做接口测试的方法

    一.介绍 Requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到,Requests是Python语言的第三方的库,专门用于发送HTTP请求 二.前提 pip install requests 三.get的请求 3.1 GET无参请求 r = requests.get('http://www.baidu.com') 3.2 GET传参 payload = {'key1': 'value1', 'key2': 'value2', 'key3': Non

  • Windows下用bat命令行方式更改IE代理服务器设置方法

    什么是批处理? 批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理.批处理文件的扩展名为bat 目前比较常见 的批处理包含两类: DOS批处理和PS批处理. PS批处理是基于强大的图片编辑软件 Photoshop的,用来批量处理图片的脚本: 而DOS批处理则是基于DOS命令的,用来自动地批量地执行 DOS命令以实现特定操作的脚本.这里要讲的就是DOS批处理 批处理是一种简化的脚本语言,它应用于DOS和Windows系统中,它是由DOS或者Windows系统内嵌的

  • 五花八门设置代理服务器客户端方法第1/2页

    你是否因为网段的限制而无法访问更多精彩的网站?你是否因为端口的限制而无法登录QQ服务器?这时,如果有个人跟你说"去用代理服务器",你是否又困惑什么是代理服务器呢?其实,代理服务器并不像你想象中的那么神秘啊.今天就让我带大家实战五花八门的主流软件代理服务器客户端的设置.OK, Let's Go! 代理服务器是指当你的计算机和你要访问的计算机之间的一台计算机.你的所有请求都由它替你进行.而被访问的那台计算机对请求的回答,也由它转达到你这里.不知道这样说你能不能明白. ★Foxmail5.0

  • 利用js跨页面保存变量做菜单的方法

    最近公司在做一个项目,其中一块头部的菜单导航区,要求实现进入相关页面后上面的导航菜单图片也需变换.而这个对于静态页面或者用框架或iframe的来说是很容易实现的.而我们是利用include来包含进的这个top.asp.虽然可以在那个图片菜单上定义onclick的动作属性.但是只要一跳转页面,则这个onclick动作就没用了.因为top.asp被重新加载了.如果要解决这个问题,只能是在页面加载时能读取一个全局的变量,相对于浏览器的全局变量,通过这个变量的值来判断应该如何显示这个导航菜单.于是也便有

随机推荐