1、上网行为管理和缓冲1.squid web proxy cache 缓存2.跟踪哪些人访问哪些站点(记录在日志)/var/log/squid/access.log3.限制某些站点某些人的访问4.转发 ssl 请求5.加速内容访问速度缓存支持 FTP HTTP 支持转发 SSL 加密套接字协议层 高级功能:支持访问控制 缓存 HTTP 服务器访问 -分类:1.普通代理: 即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口.2.透明代理:适用于企业的网关主机(共享接入 Internet)中 客户机不需要指定代理服务器地址、端口等信息,需要设置防火墙策略将客户机的 Web 访问数
2、据转交给代理服务程序处理.3.反向代理:Web 服务器加速(反向代理)是针对 Web 服务器提供加速功能的。它作为代理 Cache,但并不针对浏览器用户,而针对一台或多台特定 Web 服务器(这也是反向代理名称的由来)1.标准的代理缓冲服务器一个标准的代理缓冲服务被用于缓存静态的网页(例如:html 文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里获取请求数据而不再向原 web 站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的 I
3、P 地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程 web 服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。2.透明代理缓冲服务器透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的 IP 和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的 HTTP(80 端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程 web 服务器发出请求,其余操作
4、和标准的代理服务器完全相同。对于 Linux 操作系统来说,透明代理使用 Iptables 或者 Ipchains 实现。因为不需要对浏览器作任何设置,所以,透明代理对于 ISP(Internet 服务器提供商)特别有用。3.反向代理缓冲服务器反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始 WEB 服务器的负载。反向代理服务器承担了对原始 WEB 服务器的静态页面的请求,防止原始服务器过载。它位于本地 WEB 服务器和 Internet 之间,处理所有对 WEB 服务器的请求,阻止了WEB 服务器和 Internet 的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的
5、话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向 WEB 服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向 WEB 服务器的请求数从而降低了 WEB 服务器的负载。当用户浏览器发出一个 HTTP 请求时,通过域名解析将请求定向到反向代理服务器(如果要实现多个 WEB 服务器的反向代理,需要将多个 WEB 服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如 html 网页和图片等),而一些 CGI 脚本程序或者 ASP 之类的程序不缓存。它根据从 WEB 服务器返回的 HTTP 头标记来缓冲静态页面。有四个最重要
6、HTTP 头标记:Last-Modified: 告诉反向代理页面什么时间被修改Expires: 告诉反向代理页面什么时间应该从缓冲区中删除Cache-Control: 告诉反向代理页面是否应该被缓冲Pragma: 告诉反向代理页面是否应该被缓冲.包名字:squid主程序:/usr/sbin/squid脚本:/etc/init.d/squidport:TCP 3128(squid)(端口可以修改)配置文件:/etc/squid*默认访问日志文件:/var/log/squid/access.log yum install squid/etc/squid/squid.conf1.http_port
7、31282.cache_dir ufs /var/spool/squid 100 16 256 设置高速缓存目录和高速缓存可以使用的硬盘空间,100 表示最大可使用 100MB,16 表示第一层子目录最多可以有 16 个,256 表示每个第一层子目录下最多可以有 256 子目录。cache_dir ufs /var/spool/squid 100 16 256 文件类型 目录 缓存轮询大小(超覆盖) 一级目录 二级目录一天缓存流量 100M 设置为 100M 表示一天清理一下 提高工作效率(缓存随机写随机读)3.cache_mem 64 MB 设置 PROXY SERVER 可使用多少内存作为
8、高速缓存,一般要设置为物理内存的 1/34.reply_body_max_size 10 MB allow all 禁止下载超过 10M 的文件5.maximum_object_size 4096 KB 指定多大的文件可以被保存到磁盘中6.cache effective user/group squid 设置缓存的有效用户和组 7.dns nameservers 192.168.1.1 设置 DNS server8.cache access_log /var/log/squid/access.log 设置访问日志文件8.cache store_log /var/log/squid/store.
9、log 设置网页缓存日志文件9.visible_hostname 设置 squid 主机名称10.cache mgr 设置管理员邮箱acl all(定义的名称) src 0.0.0.0/0.0.0.0acl localhost(名称) src 127.0.0.1/255.255.255.255http_access allow localhost(调用)http_access deny all(调用)有先后顺序 先许可后拒绝 ACCESS CONTROLS 定义 acl 类型acl aclname src ip/mask (客户端 ip)acl aclname src ip1-ip2/ma
10、sk 地址池acl aclname dst ip/maskacl aclname myip ip/mask 本地 acl aclname arp mac-addresssrcdomain dstdomain 对目标域控制srcdom_regex -i xxx 匹配客户端主机名dstdom_regex -i xxx 匹配服务器主机名日期 时间 日期(S-sunday M T W H F A)时间 h1:m1-h2:m2 几点几分 url_regex -i http:/. 整个网站urlpath_regex -i .gif$ 配置指定路径的以指定内容结尾的urllogin -i a-zA-Z0-
11、9 .port 80 70 21 .port 0-1024透明代理:echo “1“ /proc/sys/net/ipv4/ip_forward配置 iptables 设定 nat,即透明代理 iptables -t nat -A PREROUTING -i eth0 -p tcp -dport 80 -j REDIRECT -to-ports 3128 如果只设置下面一句而上面一句不设置,客户端也可以上网,只是不通过 squidiptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 保存 iptables 设置 service iptable
12、s save 2、修改 selinux 设置 setsebool -P squid_disable_trans on 如果配置 squid 透明代理,要开启 selinux 的 squid_disable_trans,否则 squid 不能启动3, http_port 3128 transparent 支持透明代理设置访问日志cache_access_log /var/log/squid/access.log设置缓存日志cache_log /var/log/squid/cache.log设置网页缓存日志cache_store_log /var/log/squid/store.log设置 squ
13、id 进程所有者 cache_effective_user squid 设置 squid 进程所属组 cache_effective_group squid 设置 squid 可见主机名 visible_hostname 192.168.8.188 禁止上网实例:禁止地址为 192.168.1.1 客户端上网acl badclientip1 src 192.168.1.1 (可以是网段 192.168.1.0/24)http_access deny badclientip1 禁止访问客户段访问目的地址为 202.96.110.10 的网站acl badsrvip1 dst 202.96.110
14、.10 http_access deny badsrvip1禁止用户访问域名为 的网站acl baddomain1 dstdomain http_access deny baddomain1禁止用户访问域名含有 的网站acl badurl1 url_regex -i i(忽略大小写)http_access deny badurl1禁止用户访问含有 sex 关键字的 RULacl badurl2 url_regex -i sex (可以接多个关键字)http_access deny badurl2 禁止 ip 为 192.168.1.1 客户端并发最大连接数为 5acl clientip1
15、 src 192.168.1.1acl conn5 maxconn5http_access deny clientip1 conn5 (注意先后顺序)禁止 192.168.1.0 子网内的所有客户机在周一到周五的 9:30-18:00 上网acl clientnet1 src 192.168.1.0/255.255.255.0 acl worktime time MTWHF 9:30-18:00http_access deny clientnet1 worktime 禁止客户机下载*.mp3 *.exe *.zip *.rar 类型文件 网页内容acl badfile1 urlpath_reg
16、ex -i .mp3$ .exe$ .zip$ .rar$http_access deny badfile1 禁止 QQ 通过代理上网acl qq url_regex -i http_access deny qq排错:quid.out 1.普通代理:62 http_port 312862 http_port 192.168.1.11:3128acl aclname src ip/mask 59 http_access allow(deny) aclname 2.配置透明代理 前提: 客户机的 Web 访问数据要能经过防火墙代理服务构建在网关(防火墙)主机中 配置要求:代理服务程序能够支持透明
17、代理设置防火墙规则,将客户机的 Web 访问数据自动重定向给代理服务程序处理。echo “1“ /proc/sys/net/ipv4/ip_forwardvi /etc/sysctl.confsysctl -p # ServerAdmin # DocumentRoot /www# ServerName # ServerAdmin # DocumentRoot /bbs# ServerName DNSzone ““type master;file“test1.zone”;vim test1.zone$TTL 1D IN SOA . root (0 ; serial1D ; refresh1H ;
18、 retry1W ; expire3H ) ; minimumIN NS .www IN A 202.96.100.2(squid 公网)bbs IN A 202.96.100.2(squid 公网)vim /etc/squid/squid.confhttp_port 80 vhostcache_peer 172.16.1.1 parent 80 0 originserver name=www(真实 web server 地址与站点对应关系)cache_peer 172.16.1.1 parent 80 0 originserver name=bbs(真实 web server 地址与站点对应
19、关系)cache_peer_domain #web 站点cache_peer_domain bbs #web 站点cache_peer Web 服务器地址 服务器类型 http 端口 icp 端口 可选项 cache_peer 指定真正 WEB 服务器的位置parent 服务器类型对应到目标主机的缓存级别,上游 Web 主机一般使用“parent”(父服务器)icp 端口用于连接相邻的 ICP(Internet Cache Protocol)缓存服务器(通常为另一台 Squid 主机),如果没有,则使用 0;originserver 表示该服务器作为提供 Web 服务的原始主机,weigh
20、t=n”指定服务器的优先权重,n 为整数,数字越大优先级越高(缺省为 1)max-conn=n”指定反向代理主机到该 web 服务器的最大连接数。公网客户端访问vim /etc/resolv.confnameserver 202.96.100.11(squid 公网接口)host host http:/http:/查看代理服务器的访问日志文件/var/log/squid/access_log 查看内网 WEB 服务器虚拟主机的访问日志文件 access_log 客户端访问想访问真实 web server 首先查询 DNS,DNS 指向 squid,squid 有真实 server 和所需访问 web 的映射关系。