代理服务器工作原理:当客户机通过代理请求web页面时,指定的代理服务器首先检查本地的缓存。如果缓存中存在客户机所请求的页面,代理服务器会将页面直接反馈到客户机;如果没有,代理服务器会将请求发送给web服务器,web服务器响应后,代理服务器会将响应的页面保存到本地缓存中,然后发给客户机。由于web请求实际有代理服务器来代替完成,从而起到了隐藏客户机的IP地址的作用。
代理服务器分为传统代理和透明代理,现在一般以透明代理使用居多。传统代理拥有的功能透明代理都有。两者的区别在于透明代理无需在客户机上指定代理服务器的地址、端口,而是透过防火墙策略将web访问重定向,交给代理服务器处理,整个过程客户机并不需要参与,对于客户机的用户来说是“透明”的。需要注意,使用透明代理,dns请求是优先发给dns服务器的。

操作部分
拓扑:

Squid代理服务_第1张图片
Squid代理服务_第2张图片
1、首先在web服务器上开启httpd服务,并为80端口(网站)开启例外,允许入站连接。
Squid代理服务
2、挂载squid的安装盘,解压到/usr/src下,进入/usr/src/squid-.tar.gz中。
Squid代理服务_第3张图片
3、配置squid。
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正则表达式
4、make编译和make install安装
Squid代理服务
5、优化执行路径,并创建squid用户,设置属主:属组。
Squid代理服务
6、在/etc/init.d/下编辑一个squid的服务脚本,用来控制squid服务(vim /etc/init.d/squid)。
Squid代理服务_第4张图片
7、为该squid服务脚本添加执行权限,并添加为系统服务。
Squid代理服务
8、编辑squid的配置文件,vim /etc/squid.conf
Squid代理服务_第5张图片
##这里需注意visible_hostname为主机名选项,需要填写squid服务器的主机名。最后一行前面本身有“#”,直接删除“#”即可。http_access allow all需要添加在deny all前面,先生效。
9、在本次试验中,我们将squid服务器作为代理服务器的同时,也将其作为网管使用。通过修改/etc/sysctl.conf,开启路由功能。将“net.ipv4.ip_forward = 0”改为“= 1”,执行sysctl -p使配置生效。
Squid代理服务_第6张图片
Squid代理服务_第7张图片
10、配置防火墙重定向。该策略可以将80端口的请求转给3128端口
Squid代理服务
11、配置SNAT实现内网接入internet互联网。
Squid代理服务
12、配置iptables策略允许3128端口的入站连接。
Squid代理服务
13、启动squid服务。下面前三个都需要依次敲。最后一个为查看squid的进程,确认是否启动。
Squid代理服务
14、地址配置,内网客户机192.168.1.2并配置网关为192.168.1.1;外网网站202.1.1.2;squid的eth0网卡192.168.1.1,eth1网卡202.1.1.1。
15、测试。使用内网的客户机登陆202.1.1.2网站。成功登陆网站。
Squid代理服务_第8张图片
16、验证网页请求是否经过代理服务器。在网站服务器上查看接入的日志。可以看到请求地址为202.1.1.1,也就是squid的外网网卡地址,而不是客户机。
Squid代理服务_第9张图片
17、另外,squid代理还提供了ACL控制列表。通过修改/etc/squid.conf文件进行ACL访问控制列表的定义。首先将上面做的允许所有的配置删除或者改为注释。
Squid代理服务_第10张图片
18、定义ACL,如下图
Squid代理服务_第11张图片
选项解析:
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$:定义以mp4、avi结尾的url路径
acl working time MWTHF 08:30-16:00定义squid工作时间
http access allow 允许以上定义项
19、第一条限定下载文件的大小;第二条限定最大缓存块。
Squid代理服务