Squid
1. squid:web代理缓存。
三个目标:a.加速代理
b.追踪访问站点
c.限制访问站点
支持的协议:FTP,HTTP和其他数据流。
作用:a.通过缓存的方式为用户提供web访问加速
b.对用户的web访问进行过滤控制。
2.正向代理:A.普通代理:a.标准,传统的代理
b.需要客户机在浏览器中指定代理服务器
的地址,端口
B.透明代理:a.适用于企业的网关主机(共享接入Internet)中
b.客户机不需要指定服务器的地址,端口等。
c.需要设置防火墙等策略将客户机的web访问数据转交给代理服务程序处理。
反向代理:ngix(反向代理加速服务器)
反向代理监听外网端口的地址,反向代理和透明代理不嫩同时使用。
http_port IP:PORT(指定默认代理的代理端口)
cache_peer 192.168.0.254【服务器地址】 parent 80 0 【0:icp端口】originserver weight=5 max_conn=30 服务器类型
3.squid软件包:squid2.6.STABLE6
服务名:squid
主程序:/usr/sbin/squid
配置目录:/etc/squid
主配置文件:/etc/squid/etc/squid.conf
默认监听端口:3128/TCP
默认访问日志:/var/log/squid/access.log
4.常用配置:
http_port 3128 (监听端口)
cache_mem 64MB (内存)
maximun_object_size 4069KB ()
reply_body_max_size 10240000 allow all (单个文件最大值)
access_log /var/log/squid/access.log squid (日志存储)
#visible_hostname proxy.test.com (可见主机)
dns_testnames www.goole.com (DNS的域名,可根据 自己的DNS域名重新定义)
cache_dir ufs /var/spool/squid 100 16 256 (缓存目录)
ufs:缓存数据的存储格式
100:为缓存目录分配的磁盘空间
16:缓存空间的一级子目录的个数
256:缓存空间的二级子目录的个数
cache_mgr [email protected] (管理员邮箱)
cache_effective_group squid
error_directory /usr/share/squid/errors/语言(默认为English)
5 .a.修改主配置文件:vim /etc/squid/squid.conf
对于以上项需要修改的做一些修改,然后保存退出。
b.初始化缓存目录:squid -z
c.启动squid服务:squid –D(测试启动)
squid –d N(调试启动级别)
或者使用命令:service squid start
chkconfig squid on(将其加入开机自动启动列表中)
d.tail -t /var/log/squid/access.log(查看日志)
trace,跟踪服务,默认不退出
****************************************************************************
案例:(以虚拟机为实验环境)假设有一台服务器(IP地址:192.168.0.254/32),内网客户机为192.168.10.112/24,现在要求使用squid透明代理来实现内网对外网的访问,squid的【内网接口地址:eth0:192.168.10.110】,【外网接口地址:eth1:192.168.0.112】
要求:访问时间:18:30--8:30
只允许192.168.10.0/24访问
不能下载以.rmvb和.mp3为后缀的文件
实现透明代理
单个文件最大不能超过100M
代理端口为8080
错误提示为中文
管理员邮箱 [email protected]
内存大小为64M
缓存目录为1024M
必须设置可见主机名
准备工作:1.将代理服务器内网网卡的网关指向内网接口地址,并编辑文件/etc/squid/squid.conf
打开http_access allow all项(目的是为了过一会测试)
将默认项改为:http_port 192.168.10.110:8080
2. 在客户端打开浏览器,在浏览器中找到edit—>preferencesàAdvanced—>Network—>settingà
HTTP Proxy—>填入代理服务器的地址:192.168.10.110(squid的内网接口地址),端口号:8080
或者:export HTTP_PROXY=192.168.10.110:8080
3. 这时,基本设置已经完成,我们不妨测试一下,看是否内网地址能访问外网服务器。
在squid上我们需要重启服务,因为修改了主配置文件。
Service squid restart
此时,已经可以访问外网了,接着我们就需要根据上面的要求进行配置。
4. 编辑squid的主配置文件:
Vim /etc/squid/squid.conf
1. acl worktime time 18:30-23:59
acl worktime time 00:00-08:30
(访问时间限制:18:30--8:30)
2. acl mynetwork src 192.168.10.0/24
acl myserver dst 192.168.0.254/32
http_access allow mynetwork
(允许访问的网段)
3. acl notmp3 url_regex -i .*/.mp3
acl normvb url_regex -i .*/.rmvb
http_access allow mynetwork !notmp3
http_access allow mynetwork !notrmvb
(不允许下载以.rmvb和.mp3为后缀的文件)
4.在squid服务器上添加iptables规则:
iptables –t nat –A PREROUTING -i eth1 –s 192.168.10.0/24 –p tcp --dport 80 –j REDIRECT --to-ports 8080
透明代理:客户端浏览时,不需在browser中指定代理服务器的地址和端口。
5. reply_body_max_size 102400000 allow all
(单个文件最大不能超过100M)
6. http_port 192.168.10.110:8080(代理服务器监听内网网卡的8080端口)
7. error_directory /usr/share/squid/errors/Simplify_Chinese
(默认为English,此项是当出现错误时,用中文提示)
8. cache_mgr [email protected](管理员邮箱)
9. cache_mem 64 MB(内存大小,默认为8M)
10. cache_dir ufs /var/spool/squid 1024 16 256(各个数字表示什么意思,可参考前面的介绍)
11. visible_hostname mail.test.com(默认没有设置,需要自己添加)
12.分别对上面的设置进行配置
ACL访问控制
常用列表类型:src(基于客户端地址做控制)
dst ,port,srcdomain,dstdomain
time,maxconn,url_regex,urlpath_regex
1.基于源地址
acl mynetwork src 192.168.10.0/24
http_access allow mynetwork
地址可为:IP/SubMask 或者IP1~IP2/SubMask
2.基于目标地址:
acl mynetwork src 192.168.10.0/24
acl myserver dst 192.168.0.254/32
http_access mynetwork !myserver(所有mynetwork网段的都不允许访问myserver)
a1.http_access deny myserver (不允许访问
a2. http_access allow mynetwork 192.168.0.254 )
b1. http_access deny myserver(允许访问
b2. http_access deny myserver 192.168.0.254)
3.正则表达式:(url_regex)
acl alname url_regex [-i] pattern【-i的作用:忽略大小写】
eg:acl mynetwork src 192.168.10.0/24
acl notpdf url_regex -i ^http.*/.pdf (全路径,包括协议)
http_access mynetwork !notpdf(不允许mynetwork网段的地址访问pdf格式的文件)
4.正则表达式(urlpath_regex)
acl mynetwork src 192.168.10.0/24
acl notchm urlpath_regex –i .*/.chm$ (以某种格式结尾)
http_access mynetwork !notchm
5.基于协议:FTP,HTTP,ICP
acl myproto proto HTTP
6.基于browser
acl mynetwork src 192.168.10.0/24
acl notfire browser MOZILLA
http_access allow mynetwork !notfire
7.maxconn (并发可连接数)
acl mynetwork src 192.168.10.0/24
acl twoconn maxconn 2(最多允许两个)
http_access deny mynetwork twoconn
或者:http_access allow mynetwork !twoconn
8.srcdomain
基于域名做源地址控制,不常用,需反解。
acl mydomain srcdomain mail.test.com
http_access deny mydomain
9.dstdomain基于域名做目标地址控制
acl domainserver dstdomain [email protected]
http_access allow domainserver
11. 基于时间(time)
SàSunday MàMonday TàTuesday
WàWednesday HàThursday FàFriday
AàStaurday (星期)
acl worktime time 10:00—23:59
acl worktiime time 00:00-05:59
在acl中aclname相同时,取并集。
注意:客户机网关必须配置成squid服务器的内网IP地址