使用Squid做代理服务器的方法
使用Squid做代理服务器的方法
发布时间:2016-12-26 来源:查字典编辑
摘要:说到代理服务器,我们最先想到的可能是一些专门的代理服务器网站,某些情况下,通过它们能加快访问互联网的速度。其实,在需要访问外部的局域网中,我...

说到代理服务器,我们最先想到的可能是一些专门的代理服务器网站,某些情况下,通过它们能加快访问互联网的速度。其实,在需要访问外部的局域网中,我们自己就能设置代理,把访问次数较多的网页保存在缓存中,从而“提高”网络速度。更重要的是,我们能通过代理服务器,达到控制访问权限的目的。在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共享器,操作系统是RedHatLinux6.1,Ipchains和Squid都是系统自带的。

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

http_port4444

#代理服务器监听的端口

cache_dir/var/cache/squid1001632

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

cache_access_log/var/log/squid/access.log

cache_log/var/log/squid/cache.log

aclallsrc0.0.0.0/0.0.0.0

aclheadsrc192.168.0.2/255.255.255.255192.168.0.3/255.255.255.255

aclnormalsrc192.168.0.21-192.168.0.99/255.255.255.255

acldenysitedstdomaintwnet

acldenyipdst61.136.135.04/255.255.255.255

acldnsportport53

http_accessallowhead

http_accessdenydenysite

http_accessdenydenyip

http_accessallownormal

http_accessdenydnsport

实例分析

上面的内容,就是一个基本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的站点(如果dst61.136.135.04/255.255.255.255变成dst61.136.135.04/255.255.255.0,指的是61.136.135.0这个网络)。

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

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

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新代理服务器学习
热门代理服务器学习
实用技巧子分类