Squid代理配置

Squid代理

目标:

了解squid的工作原理,熟练掌握squid的配置,实现其普通代理,透明代理,方向透明代理,http_access控制

内容:

A.Squid简介:

Squid代理是目前使用非常普遍的一种将局域网和interner连接到一起的方式,这样做的理由和好处入下:

1, 可以预存缓存,减轻服务器的访问压力,同是也可以提高client的访问速度。例如我们平时用的126,163,都是基于squid代理

2, 在一定程度上很大的解决了IP紧张的问题。

3, 它可以对web访问的方式基于应用层内容进行过滤控制,同时因为它介于服务器和client之间,在一定程度上提高了服务器的安全性。

缺点:

Squid支持的服务种类较少:HTTP. FTP.

Squid根据代理的方式分为普通代理,透明代理,方向透明代理。

1 标准的代理缓冲服务器

一个标准的代理缓冲服务器主要用来存储用户访问过的网页信息,当client向squid服务器请求时,squid服务器在向web请求数据,将数据传给client的同时会缓存一份在自己缓存器中,在一定时间内有同样的请求时,squid就不用再向webserver请求数据,而是直接将缓存中的数据恢复给库户端,这样既提高了client的访问速度,又大大减轻了服务器的访问压力。但是其最大的缺点是client需要在自己的web浏览器中配置squid代理服务器的地址和端口号,这很大程度上增加了client的难度和网络管理员的管理难度。因此出项了下面的透明代理

2 透明代理缓冲服务器

透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即无需指明代理服务器的IP和端口)。我们需要在linux squid代理服务器上做最一些相应的改动,并做iptables的端口转发即可。这对与企业的网管主机共享接入到Internet很实用。

3 反向代理缓冲服务器

反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低本地WEB服务器的负载。反向代理服务器承担了对原始WEB服 务器的静态页面的请求,防止本地服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求, 组织了WEB服务器和Internet的直 接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载

B.Squid的基本配置

v squid软件包

ü 软件包名:squid-2.6.STABLE6

ü 服务名:squid

ü 主程序:/usr/sbin/squid

ü 配置目录:/etc/squid/

ü 主配置文件:/etc/squid/squid.conf

ü 默认监听端口:TCP 3128

ü 默认访问日志文件:/var/log/squid/access.log

v 常用配置项

ü http_port 3128

ü cache_mem 64 MB (为自己物理内存的1/3即可)

ü maximum_object_size 4096 KB

ü reply_body_max_size 10240000 allow all

ü access_log /var/log/squid/access.log squid

ü visible_hostname proxy.test.com

ü cache_dir ufs (unix file system) /var/spool/squid (为缓存目录分配的磁盘空间) 100 (为缓存目录分配的磁盘空间(MB) 16 (缓存空间的一级子目录个数)256 (缓存空间的二级子目录个数)

常用命令

Squid �Cz 初始化缓存

Squid -k parser 分析配置文件语法错误

Squid -d 调试启动 -D 启动squid服务。

我们来做个简单实验来实现一个简单的透明代理:

实验环境:

外网:192.168.0.254 (httpd,ftp)

Squid:eth0 192.168.0.20

eth1 10.0.2.150

内网:10.0.2.20

注意:

Squid默认是deny all的。我们需要事先在squid.conf配置文件中在http_access deny all 的前面加入http_access allow all。启动squid代理服务。在10.0.2.20的IE中加入squid的端口号以及IP地址。显示出 RedHat enterprise test page为正常

下面我们来正是开始我们的实验:

1. 实现透明代理

透明代理的实现步骤:

修改squid.conf配置文件,并重新加载该配置

http_port 192.168.0.20:8080 transparent

[root@congtou squid]# service squid reload

添加iptables规则

[root@congtou squid]# iptables -t nat -A PREROUTING -i eth1 -s 10.0.2.150 -p tcp --dport 80 -j REDIRECT --to-ports 8080

客户机浏览器

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

2. 实现反向透明代理

http_port 218.29.30.31:80 vhost

cache_peer 192.168.10.7 parent 80 0 originserver weight=5 max-conn=30

cache_peer 192.168.10.8 parent 80 0 originserver weight=5 max-conn=30

注意:

这里需要注意的是反向透明代理是不能和透明代理一块的实现的。

我们需要取消掉刚才透明代理的配置,再开始做反向透明代理。

反向透明代理的实现步骤

[root@mail postfix]# vim /etc/squid/squid.conf 在配置文件中添加如下语句:

http_port 10.0.2.100:80 vhost

cache_peer 192.168.0.254 parent 80 0 originserver weight=5 max-conn=30

cache_peer Web服务器地址 服务器类型 http端口 icp端口 [可选项]

(因为我们这里只有一个web服务服务器,这里的意思是想让大家了解下这个语句的用法) 权重为5,最大的链接数为30

测试

在10.0.2.150地址栏输入 http;//10.0.2.100 出现测试页为正常

查看日志记录

[root@congtou named]# tail -1 /var/log/squid/access.log

1267973512.539 40 10.0.2.150(source) TCP_MISS/200 2795 GET http://10.0.2.100(destination)/icons/apache_pb2.gif - FIRST_UP_PARENT/192.168.0.254 (server)image/gif

下面我们来做一些访问规则的配置测试

v 访问控制规则的匹配顺序

ü 没有设置任何规则时

―― 将拒绝所有客户端的访问请求

ü 有规则但找不到相匹配的项时

n 将采用与最后一条规则相反的权限,即如果最后一条规则是allow,那么就拒绝客户端的请求,否则允许该请求

n 当两个命令罗列到一块是取其交集

选项:

ü src

ü dst

ü port

ü srcdomain 来源域限制

ü dstdomain 转发域限制

ü time 时间限制

ü maxconn 最大连接数限制

ü url_regex 正则表达式限制

ü urlpath_regex 正则表达路径限制

ü arp mac限制

ü proto 协议限制

规则示例:

ü acl LAN1 src 192.168.10.0/24

ü acl PC1 src 192.168.10.12/32

ü acl Blk_Domain dstdomain .qq.com

ü acl Work_Hours time MTWHF 08:30-17:30

ü acl Max20_Conn maxconn 20

ü acl Blk_URL url_regex -i ^rtsp:// ^mms://

ü acl Blk_Words urlpath_regex -i sex adult

ü acl RealFile urlpath_regex -i \.rmvb$ \.rm$

要求:

允许10.0.2.0网段的主机在每天的800-1800登录192.168.0.254ftp服务,但是不能下载pdf格式的文件。

允许10.0.2.0网段的主机在2200 -2359 0000-800 访问服务器的httpd服务

在配置文件中做如下修改:

acl srcnetwork src 10.0.2.0/24 来源限制

acl desnetwork dst 192.168.0.0/24

acl ftptime time 8:00-18:00

acl httptime time 22:00-23:59

acl httptime time 00:00-8:00

acl ftp proto FTP

acl http proto HTTP

acl class url_regex ^.*\.pdf$

http_access allow srcnetwork desnetwork ftptime ftp !class

http_access allow srcnetwork desnetwork httptime http ==========》经测试成功,以上均成功

其他的命令大家可以自己测试试试。

Over

你可能感兴趣的:(代理,职场,squid,休闲)