首页 > 代码库 > 生产环境部署squid服务

生产环境部署squid服务

网络拓扑

                            spacer.gif

该实验使用虚拟机模拟搭建,准备开启2台虚拟机,客户端用本记代替。

1.Squid服务器使用2块网卡。如下图显示:

spacer.gif

2.Web服务器与squid服务器配置在同一个网段即可。如下图显示:

spacer.gif

3.客户端IPsquid服务器网卡1是在同一网段上即可。如下图显示:

spacer.gif

4.查看squid服务器上的eth0eth1网卡ip地址

spacer.gif

spacer.gif

5.查看web服务器的ip地址

spacer.gif

6.先测试客户端能否pingsquid服务器的网卡1

spacer.gif

7.测试客户端能否pingweb服务器,ping不通正常。

spacer.gif

8.安装squid软件,修改配置文件,启动服务。

我这里是通过rpm包进行安装的,默认配置文件在:/etc/squid/squid.conf

spacer.gif

 备注:squid.conf.default文件是squid.conf备份文件,我们可以把squid.conf文件直接删除,重新建一个squid.conf来进行配置。

9.进行配置Squid.cinf文件

spacer.gif



 

 

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.logerror.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日志记录格式:

spacer.gif

 

如果要限制的网站很多,可以使用文件的方式:

acl web dstdomain "/etc/squid/acl/rjhy"

http_access denyweb

然后把要控制的站点的IP地址和域名存放在相应的文件中,例如gedit编辑/etc/squid/acl/rjhy文件,把下面的一些站点添加进去:

spacer.gif

由于我这里有个交易软件更新,客户端设置IE代理地址后,交易软件无法更新?

问题分析:

首先确认软件是通过哪个IP和端口连接,知道IP地址就可以把IP添加到squid配置文件。

查看方法:

首先打开交易软件,通过DOS命令查看地址和端口。

spacer.gif

spacer.gif

现在我们知道交易软件由内网192.168.29.111连接外网180.213.5.141建立的连接。

所以我们只要在squid配置文件中添加192.168.29.111这个IP即可。

备注:squid 3.1.10版本与早期的版本配置大有不同咯,如下图显示对比:

spacer.gif

acl访问控制:

列表类型:

src IP         IP地址(客户机的IP地址).

dst IP         目标地址(服务的器IP地址).

scrdomain       源名称  (客户机所属的域).

dstdomain       目标名称(服务器所属的域).

url_regex       URL规则的表达式

urlpath_regex:    URL-path  略去协议和主机名的URL规则表达式匹配.

proxy_auth      通过外部程序进行用户认证.

maxconn        单一IP最大连接数.

time          语法:[星期][时间段]

例子:

# 禁止地址或者网段(修改掩码可以设置网段,修改dstsrc实现目的或源)

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:0015: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.检查语法,

spacer.gif

11. 让配置文件生效

spacer.gif

11.启动squid服务,启动squid服务会自动创建缓存文件,所以不需要初始化squid缓存文件。

spacer.gif

13.查看squid服务缓存目录

spacer.gif

14.使用tree命令统计目录

spacer.gif

spacer.gif

15.查看3128端口

spacer.gif

16.配置squid加入系统开机自动启动

spacer.gif

17.首先在squid服务器上测试能否访问web服务器的网页

spacer.gif

18.客户端测试访问web服务器,客户端IE浏览器需要设置dailies服务器IP和端口。注意:先把iptables防火墙关闭,否者无法测试。

spacer.gif

19.服务器日志文件越来越大怎么办?

两种方法:

1          禁止写日志

spacer.gif

2          轮循切割日志

spacer.gif

spacer.gif

spacer.gif

手动执行备份不人性化,应该配置任务计划执行备份。

说下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任务计划配置没写绝对路劲,不执行。
[root@localhost ~]# squid –k rotate
首先要知道这个命令绝对路径
[root@localhost ~]# which squid
/usr/sbin/squid
查看绝对路径,知道绝对路径,就可以写任务计划
[root@localhost ~]# crontab –e
编辑任务计划,编辑内容如下
59 4 * * 6 /usr/sbin/squid -k rotate
已编辑好的任务计划内容
[root@localhost ~]# ls /var/spool/cron/
root
这个就是刚刚crontab –e编辑保存的路径。内容保存在root中。
[root@localhost ~]# cat /var/spool/cron/root
00 10 * * * /usr/sbin/squid -k rotate
验证查看。
[root@localhost ~]# service crond status
crond (pid  14261) 正在运行...
查看任务计划服务是否有启动



 


本文出自 “义薄云天” 博客,转载请与作者联系!