啰嗦了很多,下面正式进入服务器配置阶段,本次服务器的配置所选系统为RedHat Enterprise Linux Server 5.2,Cache服务器配置软件为目前在代理服务器界最被认可的Squid,Squid是一款流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为多人共享网络资源而缓存的万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid的发展历史相当悠久,功能也相当完善。除了HTTP外,对于FTP与HTTPS的支援也相当好,在3.0 测试版中也支持了IPv6。
下面开始配置,首先安装配置软件Squid,因为Linux下软件有多种格式,而每种格式文件的安装方法也不一样,关于这些Linux知识,笔者就不多说了。安装完成后,检查Squid的版本,在这里跟大家说明的是笔者本次配置的软件为RedHat系统本身自带的。(图2)
确定Squid安装成功后,再来配置网卡,先来配置内网网卡 用vi编辑 vi /etc/sysconfig/network-scripts/ifcfg-eth1配置文件如下图:(图3)
再来配置外网网卡eth0,大多人习惯把外网也配置成固定模式,但是笔者此次测试外网网卡不做手动配置,用自动分配。如下图:(图4)
用ifconfig -a看所有网卡配置信息,如下图:(图5)
首先搭建squid代理服务器,接下来要对Squid的运行进行配置。所有项目都在squid.conf中完成。Squid自带的squid.conf包括非常详尽的说明,相当于一篇用户手册,不过那时一大堆英文,相信很多朋友和我一样,不会看得很明白,只是必要时或对配置有疑问时用来参照解决。
#vi /etc/squid/squid.conf
对于初步接触Squid的朋友来说,我们不要像网上那样一大堆,先来做个最简单,增强一些信心和满足一下自己的好奇心,因为像这样的调试程序的过程一般都比较麻烦,经常会把人搞得云里来雾里去的,所以先来这一步是有必要的。因为squid.conf里德内容比较多,一项一项的去找来修改,很麻烦的,所以我们直接在squid.conf里加入以下内容:
http_port 3128
acl all src 0.0.0.0/0.0.0.0
cache_mgr surmanai@trusme.com.cn
cache_dir ufs /var/spool/squid 100 16 256
cache_mem 32 MB
cache_swap_low 90
cache_swap_high 95
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log
cache_effective_user squid
http_access allow all
接下来,用squid -z初始化squid,用service squid start 启动squid服务器,接下来再在用户端设定固定ip和代理服务器就可以网上冲浪了。是不是很简单哦。
第一步成功了,接下来应该就比较有信心了,就是需要什么样的功能就在里面增加相应的编程命令就ok,具体结合下面实例来看。(图6)
根据上面的编程语言,它是规定了在某些时间段某些网段IP可以上网,某些不可以上网,某些网站被禁止访问,某些格式文件禁止下载等。其实这些加起来专业点就叫squid的访问控制,使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。 Squid 访问控制有两个要素:ACL 元素和 访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。acl选项的格式:
acl列表名称 列表类型 [-i] 列表值
列表名称:用于区分Squid的各个访问控制列表,任何两个访问控制列表不能用相同的列表名。虽然列表名称可以随便定义,但为了避免以后不知道这条列表是干什么用的,应尽量使用有意义的名称,如badurl、clientip和work time等。
列表类型:是可被Squid识别的类别。Squid支持的控制类别很多,可以通过IP地址、主机名、MAC地址和用户/密码认证等识别用户,也可以通过域名、域后缀、文件类型、IP地址、端口和URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理
-i选项:表示忽略列表值的大小写,否则Squid是区分大小写的。
列表值:针对不同的类型,列表值的内容是不同的。例如,对于类型为src或dst,列表值的内容是某台主机的IP地址或子网地址;对于类型为time,列表值的内容是时间;对于类型为srcdomain和dstdomain,列表值的内容是DNS域名。
Squid会针对客户HTTP请求检查http_access规则, 定义访问控制列表后,就使用http_access选项根据访问控制列表允许或禁止访问。该选项的基本格式为:
http_access [allow | deny] 访问控制列表名称
- [allow | deny]:定义允许(allow)或禁止(deny)访问控制列表定义的内容。
- 访问控制列表名称:需要http_access控制的ACL名称。
下面看具体实例:
【例1】禁止IP地址为192.168.0.2的客户机上网。
acl badclientip1 src 192.168.0.2
http_access deny badclientip1
【例2】禁止192.168.0.0这个子网里所有的客户机上网。
acl badclientnet1 src 192.168.0.0/255.255.255.0
http_access deny badclientnet1
【例3】禁止用户访问IP地址为210.21.118.68的网站。
acl badsrvip1 dst 210.21.118.68
http_access deny badsrvip1
【例4】禁止用户访问域名为www.qq.com的网站。
acl baddomain1 dstdomain -i www.qq.com
http_access deny baddomain1
【例5】禁止用户访问域名包含有sina.com的网站。
acl badurl1 url_regex -i sina.com
http_access deny badurl1
【例6】禁止用户访问域名包含有sex关键字的URL。
acl badurl2 url_regex -i sex
http_access deny badurl2
【例7】限制IP地址为192.168.0.3的客户机并发最大连接数为5。
acl clientip1 src 192.168.0.3
acl conn5 maxconn 5
http_access deny client1 conn1
【例8】禁止192.168.0.0这个子网里所有的客户机在周一到周五的9:00到18:00上网。
acl clientnet1 src 192.168.0.0/255.255.255.0
acl worktime time MTWHF 9:00-18:00
http_access deny clientnet1 worktime
【例9】禁止客户机下载*.mp3、*.exe、*.zip和*.rar类型的文件。
acl badfile1 urlpath_regex -i \.mp3$ \.exe$ \.zip$ \.rar$
http_access deny badfile1
【例10】禁止QQ通过Squid代理上网。
acl qq url_regex -i tencent.com
http_access deny qq