网络拓扑
该实验使用虚拟机模拟搭建,准备开启2台虚拟机,客户端用本记代替。
1.Squid服务器使用2块网卡。如下图显示:
2.Web服务器与squid服务器配置在同一个网段即可。如下图显示:
3.客户端IP与squid服务器网卡1是在同一网段上即可。如下图显示:
4.查看squid服务器上的eth0和eth1网卡ip地址
5.查看web服务器的ip地址
6.先测试客户端能否ping通squid服务器的网卡1。
7.测试客户端能否ping通web服务器,ping不通正常。
8.安装squid软件,修改配置文件,启动服务。
我这里是通过rpm包进行安装的,默认配置文件在:/etc/squid/squid.conf
备注:squid.conf.default文件是squid.conf备份文件,我们可以把squid.conf文件直接删除,重新建一个squid.conf来进行配置。
9.进行配置Squid.cinf文件
http_port 3128 |
#(当squid服务器有两块网卡,一块用于和内网通信,另一块和外网通信的时候,在这种情况下,就需要使用IP地址和端口号写在一起的方式监听。http_port 10.98.10.10:3128) |
visible_hostname proxy.test.xom |
主机名或IP |
cache_mem 64MB |
缓存占内存大小 |
cache_dir ufs /var/spool/squid 100 16 256 |
usf:缓存数据的存储格式 /var/spool/squid 缓存目录 100 : 缓存目录占磁盘空间大小(M) 16 :缓存空间一级子目录个数 256 :缓存空间二级子目录个数 |
emulate_httpd_log on |
使Squid按照Web服务器的日志格式创建访问记录,Web访问记录分析程序 |
cache_log /var/log/squid/cache.log |
缓存日志通过cache_log字段设置 |
cache_access_log /var/log/squid/access.log |
日志记录客户端的请求访问Internet的详细信息 |
Cache_store_log /var/log/squid/error.log |
日志记录客户端错误信息 |
logfile_rotate 9 |
表示Access.log和error.log日志9个轮循日志 |
cache_swap_low 60 cache_swap_high 65 |
当缓存空间使用达到65%时,新的内容将取代旧的,而不直接添加到目录中,直到空间又下降到60%才停止这一活动。 |
maximum_object_size 10240 KB |
最大缓存块,我这里设置10MB,超过10MB不做缓存。 |
refresh_pattern –i ^http:// 0 90% 1440 |
设置缓存过期时间,以http开头,0表示最小缓存时间,1440最大缓存时间,单位是分钟。 |
acl deny_crm urlpath_regex -i ^http:\\192.168.11.251 |
|
no_cache deny deny_crm |
禁止缓存 |
maximum_object_size_in_memory 512 KB |
超过这个大小将不缓存到内存中 |
cache_access_log none |
禁止写日志,squid不会再生成access日志 |
client_netmask 255.255.255.255 |
告诉squid对每个请求的IP地址作为单独地址处理 |
acl max20_conn maxconn 20 |
客户端最大连接数20个(只能打开20个浏览窗口) |
emulate_httpd_log on 验证web日志记录格式:
如果要限制的网站很多,可以使用文件的方式:
如
acl web dstdomain "/etc/squid/acl/rjhy"
http_access denyweb
然后把要控制的站点的IP地址和域名存放在相应的文件中,例如gedit编辑/etc/squid/acl/rjhy文件,把下面的一些站点添加进去:
由于我这里有个交易软件更新,客户端设置IE代理地址后,交易软件无法更新?
问题分析:
首先确认软件是通过哪个IP和端口连接,知道IP地址就可以把IP添加到squid配置文件。
查看方法:
首先打开交易软件,通过DOS命令查看地址和端口。
现在我们知道交易软件由内网192.168.29.111连接外网180.213.5.141建立的连接。
所以我们只要在squid配置文件中添加192.168.29.111这个IP即可。
备注:squid 3.1.10版本与早期的版本配置大有不同咯,如下图显示对比:
acl访问控制:
列表类型:
src IP 源IP地址(客户机的IP地址).
dst IP 目标地址(服务的器IP地址).
scrdomain 源名称 (客户机所属的域).
dstdomain 目标名称(服务器所属的域).
url_regex URL规则的表达式
urlpath_regex: URL-path 略去协议和主机名的URL规则表达式匹配.
proxy_auth 通过外部程序进行用户认证.
maxconn 单一IP最大连接数.
time 语法:[星期][时间段]
例子:
# 禁止地址或者网段(修改掩码可以设置网段,修改dst或src实现目的或源)
acl dropip src192.168.5.110/32
http_accessdeny dropip
# 禁止源地址/etc/squid/clist 列表
acl clist src"/etc/squid/clist"
http_accessdeny clist
# 禁止用户访问新浪域名
acl dropurldstdomain www.sina.com.cn
http_accessdeny dropurl
# 禁止访问域名包含sina.com的网站(-i 忽略大小写)
acl dropurl1url_regex -i .sina.com
http_accessdeny dropurl1
# 限制IP地址为192.168.5.200客户机并发最大连接数为5
acl clientip src192.168.5.200
acl conn5maxconn 5
http_access denyclientip1 conn5
# 禁止192.168.5.0这个网段在周一至周五的9:00至15:00上网
acl clientnetsrc 192.168.5.0/24
acl worktimetiem MTWHF 9:00-15:00
http_access denyclientnet worktime
# 禁止下载MP3 exerar为后辍名的文件
acl downloadurlpath_regex -i \.MP3$ \.exe$ \.rar$
http_access denydownload
10.检查语法,
11. 让配置文件生效
11.启动squid服务,启动squid服务会自动创建缓存文件,所以不需要初始化squid缓存文件。
13.查看squid服务缓存目录
14.使用tree命令统计目录
15.查看3128端口
16.配置squid加入系统开机自动启动
17.首先在squid服务器上测试能否访问web服务器的网页
18.客户端测试访问web服务器,客户端IE浏览器需要设置dailies服务器IP和端口。注意:先把iptables防火墙关闭,否者无法测试。
19.服务器日志文件越来越大怎么办?
两种方法:
1 禁止写日志
2 轮循切割日志
手动执行备份不人性化,应该配置任务计划执行备份。
说下crontab 任务计划命令语法格式:
例如: * * * * * /usr/sbin/squid -k rotate
第一列 分钟: 1——59
第二列 小时: 1——23(0表示子夜)
第三列 日 : 1——31
第四列 月 : 1——12或英文缩写Jan、Feb等
第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)
第六列 用户名(执行命令时以此用户的身份)和要执行的命令(路径)
其中的星号(*)是通配符,表示cron将忽略这个字段。
例如,如下任务接口配置每周六的早上4点轮询备份squid日志文件。注意:Crontabr任务计划配置没写绝对路劲,不执行。
[[email protected] ~]# squid –k rotate |
首先要知道这个命令绝对路径 |
[[email protected] ~]# which squid /usr/sbin/squid |
查看绝对路径,知道绝对路径,就可以写任务计划 |
[[email protected] ~]# crontab –e |
编辑任务计划,编辑内容如下 |
59 4 * * 6 /usr/sbin/squid -k rotate |
已编辑好的任务计划内容 |
[[email protected] ~]# ls /var/spool/cron/ root |
这个就是刚刚crontab –e编辑保存的路径。内容保存在root中。 |
[[email protected] ~]# cat /var/spool/cron/root 00 10 * * * /usr/sbin/squid -k rotate |
验证查看。 |
[[email protected] ~]# service crond status crond (pid 14261) 正在运行... |
查看任务计划服务是否有启动 |