企业员工要上网除了NAT技术就是走代理,NAT我已经说了好多了,前面在CISCO路由、windows服务器、ISA Server、Linux主机上都已经实现了,今儿来说说代理。
一说起代理大家肯定都会想到CCProxy,CCProxy虽然用起来虽然很简单,但性能还是不太稳定,更重要的是那玩意儿还得花钱买。本次与大家探讨Squid的应用。我将会说三个部分。前两个部分:基本代理和透明代理可能还比较常见。最后我会说到反向代理。欲知反向代理为何物?请看下文图文并貌分解。
RHEL5是默认安装这个软件的,就算是最小化安装也会安装的。所以咱们也不用装了但配置文件中的几个参数这里还是说一下。配置文件squid.conf位于/etc/squid/中,共有4500多行。一听4500行大家先别喊晕,有用的其实不多,几乎全是一些说明性的文字,下面列举几个常用的:
1>Http_port 3128 //用来指定代理服务监听的地址和端口,可以同时指定IP。
2>Cache_mem 64 MB //用来设置缓存功能的内存空间大小
3> Maximum_object_size 4096 KB //设置允许保存到高速缓存的最大对象(文件)大小。
4> Reply_body_max_size 10240000 allow all //设置允许用户下载的最大文件大小
5> Cache_dir ufs /var/spool/squid 100 16 256 //设置缓存数据时使用的目录参数
6>Access_log /var/log/squid/acess.log squid //设置日志的位置
明白了上面说的几个常用的参数之后,做起来就轻松多,不过还有一些访问控制列表之类的东西,这次可能说不完。先来看看关键的三个应用吧!下面是这次的拓扑图:
可以看到外网有web服务器,咱们首先要用squid基本及透明代理技术让内网中的用户快速访问外网。另外,还要把内网中的web服务器通过squid反向代理技术,代理给外网的用户们,也让他们来访问咱们内部的网站。这就是本次的目标,图可能不太清楚,我还是把上面的信息罗列到下面:
1> SquidServer有两块网卡,分别是连接外网的网卡Eth0(WAN) IP为61.134.1.4/8(注意:真实环境下要配置网关)和连接内网的网卡Eth1(LAN) IP为192.168.1.1/24.
2> 内网交换机上连接了三台web服务器分别是Server1 IP:192.168.1.2/24 DG:192.168.1.1;Server2 IP:192.168.1.3/24 DG:192.168.1.1;Server3 IP:192.168.1.4/24 DG:192.168.1.1。三台服务器将会使用同一个FQDN(www.zpp.com)
3>.外网有一台主机名为www.web.com的web服务器IP为:61.134.1.10/24
下面就来看看具体的配置:
第一部分:配置传统缓存代理实现快速上网。
1. 配置Squid代理服务器端
[root@server ~]# vi /etc/squid/squid.conf http_port 3128 //设置代理端口 visible_hostname proxy.zpp.com //指定squid服务器的主机名 reply_body_max_size 10240000 allow all //禁止下载超过10M的文件 http_access allow all //设置允许使用代理.注意应该放在“http_access deny all行之前” |
2. 初始化并启动代理服务
除了用services命令调用系统服务脚本启动代理服务,还可以用下面几个参数来初始化及启动squid服务,这样更简单,如图:
3. 修改客户端浏览器设置,指定所使用代理服务器的IP地址、端口。
4. 测试一下,OK!可以成功访问外网,注意我这里开了一台Linux主机模拟internet上的主机www.web.com。
5. 需要注意的是咱们如果使用代理的方式上网的话,客户机是不需要填写网关的,也就是说它没必要和外网有任何关系,从下图可以看到在客户机上是ping不通外网的,是通过代理服务器在上网,只要满足两点就可以实现代理上网。第一,代理服务器本身要能上网;第二,内网客户机要能够与代理服务器联系。
6. 现在再看看日志,可以看到系统对这些事件都是有记录的。说到日志的查看给大家介绍一个命令tail –f,这个命令可以看到实时的日志变化。大家可以试试看。
OK!Squid的基本代理就是这么简单,需要注意的的Squid服务器不但要和外网通信,它还需有DNS的支持。也就是说它自己要配网关还要配DNS。我这是本机上搭了个DNS。所以能够给自己解析,如图:
第二部分:配置透明代理
先说说为啥要使用透明代理。大家刚刚也看到了在内网客户机上虽然咱们没配网关但更麻烦的一点是要在客户端浏览器中添加代理服务器地址及代理端口。虽然windows的组策略能够很好的解决这个问题。但它需要域环境来支持。现在咱们使用透明代理的话就不用在客户端浏览器中添加代理服务器地址及代理端口了,只需要有网关即可。网关好配吧,有DHCP帮咱们。为什么有网关就可以不设代理了呢?因为有网关之后咱们就可以结合上次说的iptables规则将数据包进行重定向了。所以给各位网工同志们减轻了工作负担。何乐而不为?
在刚刚的基本代理之上配置透明代理那就更简单了,只有几步而已来看看吧!
1. 配置Squid支持透明代理
[root@server ~]# vi /etc/squid/squid.conf http_port 192.168.1.1:3128 transparent //基本上也就是添加了一个transparent(透明) |
2. 重新加载Squid服务配置
[root@server ~]# service squid reload |
3. 设置iptables规则,将访问HTTP的数据重定向给代理服务器
上次咱们在iptables中也说过这种用法的啊,REDIRECT(重定向)的意思,可以在防火墙主机内部转发数据包。下面咱们是把内部网络对于协议为TCP端口为80(web服务)的请求重定向给3128(squid默认的代理端口)。
4. 确认客户机的IP地址网关等设置。
这次可是要配置网关的啊,如图:
5. 浏览器这里不需要设置代理服务器,如果设置了建议改过来,不然有可能上不了网。
6. OK!现在可以成功访问外网,如图,说明咱们的透明代理设置成功。
上面两个技术可以很好的解决企业内部需要访问Internet的问题。礼尚往来!下面我们通过squid反向代理技术让外网的用户也来访问咱们。
第三部分:配置反向代理
反向代理部署起来还是比较灵活的,为什么这么说呢?因为后台真正提供Web服务的站点可以位于Internet,也可以位于局域网内部,并且提供web服务的主机可以有若干个。够灵活的吧!下面来看看具体的步骤。
1. 修改squid.conf配置文件添加反向代理支持以及指定Web服务器的主机位置
[root@server ~]# vi /etc/squid/squid.conf … … http_port 61.134.1.4:80 vhost //这个参数的用于支持主机映射 … … cache_peer 192.168.1.2 parent 80 0 originserver //指定第1台真实服务器的位置 cache_peer 192.168.1.3 parent 80 0 originserver //指定第2台真实服务器的位置 |
大家可能对于后面两行命令有疑问,看完下图就明白了哈!
2. 重新启动squid服务
注意:如果在80端口已经运行了httpd服务,就要先关闭。不然可能会导致无法启动,因为端口会被占用。
3. 现在来测试一下吧!
现在咱们到IP为61.134.1.100/8的外网客户端来访问一下内网的www.zpp.com.从下图可以看到可以成功访问内部网站www.zpp.com.
注意我这里是自己搭了两个web来模拟内网中的两台web服务器,并且内容是一致的。
客户机的IP请大家看一下,是61.134.1.100/8.并且通过DNS域名解析www.zpp.com得到的IP是squid服务器的外网地址61.134.1.4。从这一点也说明了squid不仅有提供内网用户上网的功能,还有发布服务器的功能。相对于服务器发布技术它倒是显得更灵活。
4. 再来看看日志信息。如图,咱们的一举一动都被日志大哥看在眼力啊。
OK!通过上面的三个技术,我想大家对squid又有了新的认识,特别是看完反向代理之后。更是觉得squid将大有可为。的确!希望这个不花钱的玩艺儿能让更多的人知道并使用。