赵高 2008-2-23 12:27
Squid简单实验
一,实验环境:虚拟机VMware
Web Server (DNS) : Windows 2000 Server 地址:172.16.0.1 ->模拟外网
2个站点www.sb.com和www.hrb.com
Squid Server : CentOS 5 地址:172.16.0.2 192.168.175.59 主机名:Cent
Client : Windows 2000 professional
二,基本配置
想不到最小安装的CentOS已经将Squid安装好了。
图1
[attach]201801[/attach]
配置文件是/etc/Squid/Squid.conf共分为13个部分,分别是:
1.NETWORK OPTIONS(有关的网络选项)
2.OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM(作用于邻居选择算法的有关选项)
3.OPTIONS WHICH AFFECT THE CACHE SIZE(定义cache大小选项)
4.LOGFILE PATHNAMES AND CACHE DIRECTORIES(定义日志文件的路径及cache的目录)
5.OPTIONS FOR EXTERNAL SUPPORT PROGRAMS(外部支持程序选项)
6.OPTIONS FOE TUNING THE CACHE(调整cache选项)
7.TIMEOUTS(超时)
8.ACCESS CONTROLS(访问控制)
9.ADMINISTRATIVE PARAMETERS(管理参数)
10.OPTIONS FOR THE CACHE REGISTRATION SERVICE(cache注册服务选项)
11.HTTPD-ACCELERATOE OPTIONS(HTTPD加速选项)
12.MISCELLANEOUS(杂项)
13.DELAY POOL PARAMETERS(延时池选项)
原始的squid.conf有145K大小,对于各种选项讲解十分透彻,建议E文好的同学多看几遍。
简单修改如下几项便可以让Squid基本上工作起来:
[code]http_port 192.168.175.59:3128 #监听网卡和端口
cache_mem 8 MB #可以使用内存值,建议设为内存的1/3
cache_dir ufs /var/spool/Squid 100 16 256 #缓冲区大小及其目录结构
acl all src 0.0.0.0/0.0.0.0 #定义一个名字为all的代表来源为所有主机地址的列表
http_access allow all #all列表里面的主机可以使用Squid服务
dns_nameservers 172.16.0.1 #互联网上的DNS服务器地址
visible_hostname Cent #运行Squid的主机名(必设)[/code]
赵高 2008-2-23 12:30
开始在硬盘上建立缓冲区
图2
[attach]201802[/attach]
将Squid的出错信息替换为中文
图3
[attach]201803[/attach]
客户端流览器配置方法,注意在IE属性中进行修改。
图4
[attach]201804[/attach]
客户端开始访问Web
图5
[attach]201805[/attach]
赵高 2008-2-23 12:31
三,透明代理
如果用上面基本配置,内网用户虽然可以上网了,但是QQ,迅雷之类都要和IE一样需要手工设置,很麻烦。
所以需要改用透明代理,客户端只要设置网关等便可上网,比较方便,继续修改:
本例安装的Squid是2.6版本,修改:[code]http_port 192.168.175.59:3128 transparent #运行在透明模式
http_reply_access allow all #允许所有客户端使用该代理[/code]开启核心路由功能[code]echo "1" >/proc/sys/net/ipv4/ip_forward[/code]利用iptables配合端口重定向,将内网发向Squid服务器80端口的数据包转发到3128端口。[code]iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-port 3128[/code]此时客户端可以访问,配置为图6,可见和使用硬件宽带路由器配置相同。
[attach]201806[/attach]
本例方便起见,直接在客户端修改hosts文件实现域名解析。
赵高 2008-2-23 12:33
四,反向代理
上述做的都是可以让公司内部的人统一上网的“正向代理”而“反向代理”可以将大幅度提高WEB服务器负载能力,该功能一般称为“WEB加速器”,配置方法是:
[code]
http_port 192.168.1.1:80 vhost vport
cache_peer 127.0.0.1 parent 80 0 no-query originserver
[/code]
本例中没有配置iptables和开启路由,客户端便可正确访问
赵高 2008-2-23 12:34
五,安全认证
默认情况下,Squid不带任何认证程序,但是可通过外部认证程序实现认证功能,
支持的认证方式有:
LDAP: Uses the Lightweight Directory Access Protocol
NCSA: Uses an NCSA-style username and password file.
MSNT: Uses a Windows NT authentication domain.
PAM: Uses the Linux Pluggable Authentication Modules scheme.
SMB: Uses a SMB server like Windows NT or Samba.
getpwam: Uses the old-fashioned Unix password file.
SASL: Uses SALS libraries.
mswin_sspi: Windows native authenticator
YP: Uses the NIS database
其认证程序一般存在这里:
图7
[attach]201807[/attach]
注:透明代理不支持认证
我们这里用basic认证
先用htpasswd生成passwd文件,加入用户名字和密码,修改squid.conf[code]auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd #认证程序位置和账户文件
auth_param basic children 5 #认证程序进程数
auth_param basic realm Squid proxy-caching sex web server #认证提示内容
auth_param basic credentialsttl 2 hours #认证有效期
acl authuser proxy_auth REQUIRED #设置认证
http_access allow authuser[/code]客户端访问见图9,输入用户名和密码便可访问。
[attach]201808[/attach]
赵高 2008-2-23 12:36
六,访问控制
Squid按照顺序读取访问控制列表的,在获得匹配的访问控制语句后,不再继续向下查找。
如果有多条访问控制语句,必须注意它们的顺序。
1,禁止某IP
acl noway src 92.168.175.8
http_access deny noway
客户端被拒绝
[attach]201809[/attach]
换个IP可以上
2,禁止某网段
acl noway src 192.168.175.0/24
http_access deny noway
[attach]201809[/attach]
3,禁止访问172.16.0.1
acl noway dst 172.16.0.1
http_access deny noway
4,禁止访问[url=http://www.sb.com]www.sb.com[/url]
acl noway dstdomain [url=http://www.sb.com]www.sb.com[/url]
http_access deny noway
果然只能访问Web Server上的[url=http://www.hrb.com]www.hrb.com[/url]啦
5,禁止访问域名中带有英文hrb的网站
acl noway url_regex -i hrb
http_access deny noway
这回只能访问Web Server上的[url=http://www.sb.com]www.sb.com[/url]啦
6,禁止下载mp3和rar文件
acl noway urlpath_regex -i \.mp3$\.rar$
http_access deny noway
7,限制客户机并发最大连接数为5
acl conn5 maxconn 5
http_access deny conn5
8,禁止192.168.175.0子网内的所有客户机在周一到周五的9:00到18:00上网
acl clientnet1 src 192.168.175.0/24
acl worktime time MTWHF 9:00-18:00
http_access deny clientnet1 worktime
赵高 2008-2-26 09:51
简单实验,顾名思义,比较基础,高级的应用用虚拟机试验不是很好。