架设Squid**服务器
摘要:
L inux目前已经逐步成为网络的同义词。它可以在办公环境或日常家庭中作为文件服务器、打印服务器、
邮件服务器以及应用软件服务器来使用 并且逐渐作为**服务器来使用。
一台**服务器可以通过一个Internet连接在同一时间为不同的用户提供Internet访问服务。好的**服
务器同时还为访问请求提供缓存服务这样当一个本地访问请求到达时 **服务器会先在缓存记录里查
找有无相同的请求如果有则从缓存中把数据直接回送到客户端从而缩短访问WEB的时间并减轻带宽
的压力。
Squid是一个支持Proxy、HTTP缓存、 Ftp、 Gopher等等的软件它也支持S SL、访问控制、DNS缓存并且为
所有的请求做记录。 Squid在Windows NT下也可用详见Logi Sense.
本文的重点是为配置一台**服务器并为用户提供可控访问提供基本的指导。Squid已经安装了吗
Squid的rpm文件已经和RedHat 7.1捆绑发行了在安装系统的时候如果在N etworks选项中选中的
话它会自动安装在系统上。您可以用下面的命令检查您的系统中是否已经安装了Squidrpm-q squid
Squid的最新版本可以在Squid主页或它的镜像站点得到。 Squid可以用下述命令安装在系统上rpm-ivh squid-2.3.STABLE4-10.i386.rpm
配置Squid
Squid的定制是通过编辑它的配置文件squid.conf来实现的 squid.conf文件通常在/e tc/s qu id目录
下。这个配置文件内容很多但好在它的每个选项都有详尽的说明。
首先要修改的是http_p ort这个选项指定了Squid监听客户请求的端口默认值是
3128。要使用**
功能这个端口值要和运行Squid的机器的IP地址一起使用可以修改成下面这样http_port 192.168.0.1:8080
上述声明表示Squid绑定在IP地址192.168.0.1上端口为8080。端口可以设置为任意,但要确认
没有其他程序会使用同样的端口。其他的服务请求的端口设置也可以设为类似的配置。
上述声明表示S quid绑定在IP地址192.168.0.1上端口为8080。端口可以设置为任意值但要确认
没有其他程序会使用同样的端口。其他的服务请求的端口设置也可以设为类似的配置。
访问控制
使用访问控制特性可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。 S quid访问控制有两个要素 AC L元素和访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。
下面列出一些重要的AC L元素类型
* s rc :源地址即客户机I P地址
*dst :目标地址即服务器IP地址
* srcdo ma in:源名称即客户机名称
*dstdomain:目标名称即服务器名称
*time :一天中的时刻和一周内的一天
*url_regex:URL规则表达式匹配
*urlpath_re gex:URL-path规则表达式匹配略去协议和主机名
*p ro xy_a ut h:通过外部程序进行用户验证
*ma xco nn:单一IP的最大连接数
为了使用控制功能必须先设置AC L规则并应用。AC L声明的格式如下acl acl_element_name type_o f_acl_element values_to_acl
注
1.acl_element_name可以是任一个在ACL中定义的名称。
2.任何两个ACL元素不能用相同的名字。
3.每个AC L由列表值组成。当进行匹配检测的时候多个值由逻辑或运算连接换言之 即任一AC L
元素的值被匹配则这个ACL元素即被匹配。
4.并不是所有的AC L元素都能使用访问列表中的全部类型。
5.不同的AC L元素写在不同行中 S quid将把它们组合在一个列表中。
我们可以使用许多不同的访问条目。下面列出我们将要用到的几个
*http_access:允许HTTP访问。这个是主要的访问控制条目。
*no_cache:定义对缓存请求的响应。
访问列表的规则由一些类似'a llo w'或'deny'的关键字构成用以允许或拒绝向特定或一组AC L元素提供服务。
注
1.这些规则按照它们的排列顺序进行匹配检测一旦检测到匹配的规则匹配检测就立即结束。
2.一个访问列表可以又多条规则组成。
3.如果没有任何规则与访问请求匹配默认动作将与列表中最后一条规则对应。
4.一个访问条目中的所有元素将用逻辑与运算连接http_access Action声明1 AND声明2 AND声明OR.http_access Action声明3
多个http_access声明间用或运算连接但每个访问条目的元素间用与运算连接。
5.请记住列表中的规则总是遵循由上而下的顺序。
回到配置S quid
Squid默认不做任何用户访问控制。若要允许某个访问必须进行定制规则。在squid.conf中http_access deny行前输入下述文字acl mynetwork 192.168.0.1/255.255.255.0http_access allow mynetworkmynetwork是ac l名称下一行则是适用于特定acl 即mynetw ork 的规则。 192.168.0.1指明是网络中掩码为255.255.255.0的子网。mynetwork主要是为了给出网络上一组机器下一条规则则允许这些
机器访问http服务。上述修改配合http_port就可以让Squid很好的工作起来了。修改完成后 Squid
可以用下述命令启动service squid start
注
Squid也可以在系统启动的时候自动运行方法是在ntsysv或setup 系统服务菜单中打开Squid。在
对配置文件做了任何更改之后 当前正运行的Squid进程必须重新启动。可以用下面的命令来完成
1. service squid restart或
2. /etc/rc.d/init.d/squid re start
配置客户端
由于客户端的请求是送到**服务器的特定端口的 因此客户端也要做相应配置。在继续下一步之前请
确认要访问**服务器的客户端已经连接在局域网中并已分配了有效的IP地址请确认它们都能p ing通
运行了S quid的Linux服务器。
在Internet Exp lorer下的配置
1.点击菜单上的工具->Inte rnet选项
2.选择连接并单击局域网设置
3.选中使用**服务器输入上述**服务器的IP地址和端口。
在Netscape Navigator下的配置
1.点击菜单上的编辑E dit ->首选项Pre fe renc e ->高级Advanced ->**服务器Proxies 。
2.选中手动配置**服务器Manual Proxy Configuratio n 。
3.点击查看View 并
4.输入上述**服务器的IP地址和端口。
使用访问控制
多个访问控制及其规则为客户端访问控制提供了一种灵活的机制。下面给出通常所用到的例子
1.允许列表中的机器访问Inter n et。ac l a llowe d_c lients src 192.168.0.10192.168.0.20192.168.0.30
http_ac cess allow allowed_clientshttp_access deny!allowed_clients
这个规则只允许IP地址为192.168.0.10、 192.168.0.20及192.168.0.30的机器访问Intern et其他IP地址的机器则都被拒绝访问。
2.限制访问时段。acl allowed_clients src 192.168.0.1/255.255.255.0ac l regular_d ays time M TWHF 10:00-16:00
http_access allow allowed_clients regular_dayshttp_access deny!allowed_clients
这个规则允许子网192.168.0.1中的所有客户机在周一到周五的上午10:00到下午
4:00
访问Inter n et。
3.为不同的客户机分配不同的访问时段。acl hosts1 src192.168.0.10acl hosts2 src 192.168.0.20acl hosts3 src 192.168.0.30acl morning time 10:00-13:00acl lunch time 13:30-14:30acl evening time 15:00-18:00http_access allow host1 morninghttp_access allow host 1 eveninghttp_access allow host2 lunchhttp_access allow host3 eveninghttp_access deny all
在这个规则中主机ho st1可以在mo rning和evening时段访问Internet主机ho st2和host3分别只能在lunch和evening时段访问Internet。
注
一个访问条目中所有的元素之间用与运算按下述方式连接http_access Action statement1 AND staement2 AND statement OR.
多个http_access声明之间用或运算连接而每个访问条目中的元素用与运算连接见
下http_access allow ho st 1 morning evening
无法在时段morning和时段evening同时进行(morning AND evening)这个表达式将不会返回真值TRUE 从而这个条目将不会引发任何动作。
4.站点屏蔽
S quid可以屏蔽某些特定站点或含有某些特定字词的站点。可以用下面的规则实现ac l a llowe d_c lients src 192.168.0.1/255.255.255.0
acl b anned_site s url_regex abc.com*()(*.comhttp_acces s deny banned_siteshttp_acces s allow allowed_clients
也可以用以屏蔽含有某些特定字词比如说dummy、 fak e的站点ac l a llowe d_c lients src 192.168.0.1/255.255.255.0
ac l b anned_s ite s url_re gex dummy fakehttp_access deny banned_siteshttp_access allow allowed_machib es
在实际应用中不需要把需屏蔽的所有站点或字词都列在上面可以先保存在一个文件
中请查看/e tc目录中的b anne d.li s t文件AC L将从这个文件中读出所需信息用以
屏蔽被禁止的站点。acl allowed_clients src 192.168.0.1/255.255.255.0acl banne"http_access deny banned_siteshttp_access allow allowed_clients
5.优化
S quid可以通过使用maxconn元素来限制客户端连接的数目。 要使用这个选项必须
先允许c lie nt_db。acl mynetwork 192.168.0.1/255.255.255.0ac l numc onn maxco nn 5http_access deny mynetwork numc onn
注maxconn ACL使用小于less-than对比。此ACL规则将在连接数大于设定值时被匹配。
这是ACL不与http_access允许规则连用的主要原因。
6.缓存数据
对于静态页面缓存的数据能够立刻回送到发出请求的客户端。没有必要去缓存cgi-bin
或S ervlet这些可以用ACL元素no_cac he来禁止。acl cache_prevent1 url_regex cgi-bin/?acl cache_prevent2 url_regex Servletno_cache deny c ache_prevent1no_cache deny cache_prevent2
7.自定错误反馈信息
可以用拒绝规则的deny_info选项来自定错误反馈信息。 S quid默认的错误信息放在
/etc/squid/errors目录中。这个目录可以用error_d irecto ry选项指定。您也可以定制现存的错误反馈信息。
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex abc.com*()(*.comhttp_access deny b anned_sitesdeny_info ERR_BANNED_SITE banned_siteshttp_access allow allowe d_c lients
在上面的例子中 当用户试图访问被禁止的站点时将会显示一条定制的信息。ERR_BANNED_SITE选项中的文件名必须在上述的错误信息的目录中。错误信息必须是HTML格
式的。上面列出了AC L的一些选项您可以参看S quid主页上的FAQ文档以获得使用AC L
更多的信息。
日志
Squid的所有日志文件都存放在/var/log/squid目录中有缓存日志、访问日志和store.log文件。文
件access.log记录了有关客户机的请求、连接活动、每个HTTP&ICP询问、客户机IP地址、请求方
式、请求的URL等等信息。这些数据可以用来对访问进行分析。许多程序如sarg、 calamaris,S quid-Lo g-Ana lyzer都可以用来分析这些数据并产生HTM L格式的分析报告。 这些报告可以在一组用户、一组
IP地址或一组访问过的站点等等记录中产生。
这些记录文件也可以成为下面这样cache_access_log For access.logcache_log F or cache.logcache_store_lo g F or store.log(S tore manager)pid_filename Squid process ID file name
验证方式
Squid的默认配置允许任何用户不经过验证过程就可以进行访问。 Squid通过一个外部程序提供用户验证
功能比如说只允许有效的用户访问Inte rne t 这就需要一个有效的用户名和密码。可以用pro xy_a uth
AC L和authe nticate_pro gram来实现在允许访问前强制进行用户名和密码的核查。下面列出一些Squid
能用到的验证程序
1.LDAP:使用Linux Lightwe ight目录访问协议Linux Lightwe ig ht D irecto ryAccess Protocol
2.NCSA:使用NCSA风格的用户名和密码档
3.SMB:使用SMB协议的服务如SAMBA或Windows NT
4.MSNT:使用Windows NT的域验证
5.P AM:使用L inux的可装载验证模块
6.ge tp wa m:使用L inux密码档
必须指定使用的验证程序可以用authentic ate_pro gram选项完成。请确认选定的验证程序已安装并能很
好的工作。
修改squid.conf文件选定验证程序authenticate_pro gram/usr/lo cal/b in/pam_authacl p ass proxy_auth REQUIREDacl mynetwork src 192.168.0.1/255.255.255.0http_ac cess deny!mynetworkhttp_access allow passhttp_access deny all
这个规则表示使用PAM验证程序所有用户在获得访问许可前必须进行验证。还有些选项比如authe nt ic ate_tt l和authe nt ic ate_ip_tt l可以用来改变验证程序的动作 比如说使某个用户名及密码重新生效。
无忧云怎么样?无忧云服务器好不好?无忧云值不值得购买?无忧云是一家成立于2017年的老牌商家旗下的服务器销售品牌,现由深圳市云上无忧网络科技有限公司运营,是正规持证IDC/ISP/IRCS商家,主要销售国内、中国香港、国外服务器产品,线路有腾讯云国外线路、自营香港CN2线路等,都是中国大陆直连线路,非常适合免备案建站业务需求和各种负载较高的项目,同时国内服务器也有多个BGP以及高防节点...
轻云互联成立于2018年的国人商家,广州轻云互联网络科技有限公司旗下品牌,主要从事VPS、虚拟主机等云计算产品业务,适合建站、新手上车的值得选择,香港三网直连(电信CN2GIA联通移动CN2直连);美国圣何塞(回程三网CN2GIA)线路,所有产品均采用KVM虚拟技术架构,高效售后保障,稳定多年,高性能可用,网络优质,为您的业务保驾护航。活动规则:用户购买任意全区域云服务器月付以上享受免费更换IP服...
41云怎么样?41云是国人主机品牌,目前经营产品有国内外云服务器、CDN(高防CDN)和物理机,其中国内外云服务器又细分小类有香港限流量VPS、香港大带宽VPS、香港弹性自选VPS、香港不限流VPS、香港BGP线路VPS、香港Cera+大带宽机器、美国超防VPS、韩国原生VPS、仁川原生VPS、日本CN2 VPS、枣庄高防VPS和金华高防VPS;物理机有美国Cera服务器、香港单程CN2服务器、香...