代理服务器工做原理:当客户机经过代理请求web页面时,指定的代理服务器首先检查本地的缓存。若是缓存中存在客户机所请求的页面,代理服务器会将页面直接反馈到客户机;若是没有,代理服务器会将请求发送给web服务器,web服务器响应后,代理服务器会将响应的页面保存到本地缓存中,而后发给客户机。因为web请求实际有代理服务器来代替完成,从而起到了隐藏客户机的IP地址的做用。
代理服务器分为传统代理和透明代理,如今通常以透明代理使用居多。传统代理拥有的功能透明代理都有。二者的区别在于透明代理无需在客户机上指定代理服务器的地址、端口,而是透过防火墙策略将web访问重定向,交给代理服务器处理,整个过程客户机并不须要参与,对于客户机的用户来讲是“透明”的。须要注意,使用透明代理,dns请求是优先发给dns服务器的。linux
操做部分
拓扑:web
一、首先在web服务器上开启httpd服务,并为80端口(网站)开启例外,容许入站链接。
二、挂载squid的安装盘,解压到/usr/src下,进入/usr/src/squid-.tar.gz中。
三、配置squid。
##各配置项含义:
--prefix:安装目录
--sysconfdir:配置文件目录
--enable-arp-acl:设置经过MAC地质管理防止arp欺骗
--enable-linux-netfilter:使用内和过滤
--enable-linux-tproxy:支持透明模式
--enable-err-language:错误信息显示语言的类型
--enable-underscore:容许url中使用下划线
--enable-poll:poll模式,性能优化
--enable-gnuregex:使用GNU正则表达式
四、make编译和make install安装
五、优化执行路径,并建立squid用户,设置属主:属组。
六、在/etc/init.d/下编辑一个squid的服务脚本,用来控制squid服务(vim /etc/init.d/squid)。
七、为该squid服务脚本添加执行权限,并添加为系统服务。
八、编辑squid的配置文件,vim /etc/squid.conf
##这里需注意visible_hostname为主机名选项,须要填写squid服务器的主机名。最后一行前面自己有“#”,直接删除“#”便可。http_access allow all须要添加在deny all前面,先生效。
九、在本次试验中,咱们将squid服务器做为代理服务器的同时,也将其做为网管使用。经过修改/etc/sysctl.conf,开启路由功能。将“net.ipv4.ip_forward = 0”改成“= 1”,执行sysctl -p使配置生效。
十、配置防火墙重定向。该策略能够将80端口的请求转给3128端口
十一、配置SNAT实现内网接入internet互联网。
十二、配置iptables策略容许3128端口的入站链接。
1三、启动squid服务。下面前三个都须要依次敲。最后一个为查看squid的进程,确认是否启动。
1四、地址配置,内网客户机192.168.1.2并配置网关为192.168.1.1;外网网站202.1.1.2;squid的eth0网卡192.168.1.1,eth1网卡202.1.1.1。
1五、测试。使用内网的客户机登录202.1.1.2网站。成功登录网站。
1六、验证网页请求是否通过代理服务器。在网站服务器上查看接入的日志。能够看到请求地址为202.1.1.1,也就是squid的外网网卡地址,而不是客户机。
1七、另外,squid代理还提供了ACL控制列表。经过修改/etc/squid.conf文件进行ACL访问控制列表的定义。首先将上面作的容许全部的配置删除或者改成注释。
1八、定义ACL,以下图
选项解析:
acl safeport port 80 443:定义端口为80、443
acl mylan src 192.168.1.0/24:定义源地址池为192.168.1.0网段
acl mediafile urlpath_regex -i .mp4$ .avi$:定义以mp四、avi结尾的url路径
acl working time MWTHF 08:30-16:00定义squid工做时间
http access allow 容许以上定义项
1九、第一条限定下载文件的大小;第二条限定最大缓存块。正则表达式