squid的简单应用

一.squid(代理服务器)的作用

1. 通过缓存的方式为用户提供WEB服务加速

2. 对用户的WEB访问做访问控制

二.代理服务器分为以下三类

1. 普通代理服务

2. 透明代理服务

3. 方向代理服务

三squid的基本配置:

1. 安装squid的软件包为:squid-2.6.STABLE21-3.el5

2. squid的运行进程为:squid

3. 运行squid的二进制文件为:/etc/init.d/squid

4. squid的监听端口为:3128(tcp)

5. squid的主配置脚本为:/etc/squid/squid.conf

6. squid的日志记录存放:/var/log/squid/access.log

四. squid主配置文件常用的配置项

1. http_port 定义squid的监听端口的,默认为3128

2. cache_mem 定义为squid分配内存的大小,默认为64M

3. visible_hostname 定义配置为可见的主机名,默认没有此项,需手动添加

4. cache_dir 定义缓存存放的目录

5. cache_mgr 定义管理员的邮箱

6. error_directory 定义错误提示的语言

7. reply_body_max_size 定义用户传输的最大数据

五.普通代理服务(为内网用户代理上网

实验环境:内网的网卡eth1:192.168.23.23,内网的客户机ip:192.168.23.25

外网卡eth0:192.168.0.43 ,web服务器的地址为:192.168.0.254

(这里的实验环境为实验室,如有需要,可根据实际情况进行改动)

1. 修改主配置文件:

(1)visible_hostname定义为: proxy.test.com

squid的简单应用_职场

(2)用户的最大传输数据位:10M

squid的简单应用_应用_02

(3)访问控制列表定义为allow all

squid的简单应用_休闲_03

(4)监听端口定义为内网卡的8080端口:

squid的简单应用_应用_04

(5)定义错误提示的语言为中文

squid的简单应用_职场_05

(6)定义管理员的邮箱地址:

squid的简单应用_职场_06

2. 初始化squid的缓存目录:

squid的简单应用_squid_073.分析是否有语法错误:

squid的简单应用_应用_08

3.启动squid服务:

squid的简单应用_应用_09

4. 做客户端的设置,这里以Firefox为例:

(1) 打开工具栏中的“编辑”-----》“首选项”-----》“高级”-----》“网络”----》”设置”-----》“手动配置代理“

squid的简单应用_squid_10

设置代理地址为内网卡的ip:192.168.23.23,代理端口为8080,然后点击“确定“退出。

5. 我们去做一下测试:

squid的简单应用_休闲_11

,可以看到我们能正常的访问到远程服务器。

6. 我们去下载大于10M的文件:

squid的简单应用_squid_12

可以看到,被拒绝,在图中也可以看到我们刚刚做的设置

六. ACL的访问控制

1. 应用访问控制的方式:

定义acl列表:

acl 列表名称 列表类型 列表内容

针对列表进行限制

http_access allow或deny 列表名

2. 常用的acl的列表类型

src 基于源地址的控制

des 基于目的地址的控制

port 基于来目的端口的控制

srcdomain 基于源域名的控制

desdomain 基于目的域名的控制

time 基于时间的控制

proto 基于协议的控制,只能控制http和ftp协议

maxconn 基于一个ip最大的连接数的控制

url-regex 基于全路径中字符的控制

urlpath_regex 基于非必须全路径的控制

3. 访问控制规则的匹配顺序:

(1) 没有设置任何规则时将拒绝所有客户端的访问请求

(2) 有规则但是找不到相匹配的规则时:将采用与最后一条规则相反的权限,如果最后一条的规则为allow,那么就拒绝客户端的请求,否则就允许该请求

4. 设置不能下载以.pdf结尾的文件:

squid的简单应用_squid_13

然后重新读取一下配置文件;

squid的简单应用_休闲_14

我们试着下载一个pdf格式的文件:

squid的简单应用_职场_15

如图,访问遭到拒绝。

5. 设置基于协议的控制

squid的简单应用_职场_16

重新读取一下配置文件

6. 然后我们再去访问远程主机:

squid的简单应用_应用_17

可以看到访问被拒绝。

7. 设置基于时间的访问控制(注意:设置基于时间的访问控制的时候,起始时间必须小于结束时间)

squid的简单应用_休闲_18

我现在的时间为:

squid的简单应用_休闲_19

再重新去读一下配置文件,然后再去做验证:

squid的简单应用_休闲_20

可以看到访问被拒绝。

七. 配置透明代理:

现在的企业上网大部分采用的就是这种方法,客户机浏览器

不需要在浏览器中指定代理服务器的地址、端口

配置要求:

(1)代理服务程序能够支持透明代理

(2)设置防火墙规则,将客户机的Web访问数据自动重定向给代理服务程序处理

1.修改主配置文件,设置监听的地址和监听的端口号:

squid的简单应用_职场_21

禁用刚才我们做的ACL,重新读取配置文件

2. 配置iptables的规则:

iptables –t nat –A PREROUTING –i eth1 –s 192.168.23.0/24 –p tcp –dport 80 –j REDIRECT –to-port 8080

squid的简单应用_应用_22

3. 然后我们取消刚才Forefox浏览器中的代理:

squid的简单应用_休闲_23

4. 我们再去验证一下:

squid的简单应用_休闲_24

可以看到,我们能正常的访问远程主机。