Redhat6.5下Squid代理服务器的安装与配置(三种模式)

Redhat6.5搭建Squid三种代理模式配置过程
 
系统环境:
VMware:11.0.0 build-2305329
采用的是NAT网络模式;
 
Squid和Web服务器:使用redhat 2.6.32-431.el6.x86_64系统 最小化安装+开发库
客户端:Win_XP 
 
服务器已经作如下设置:
 
  1. SElinux =desibled 
  2. service iptables stop 
 
IP地址划分: 
 
 
一、 配置Web 服务器
A. 安装Apache:(挂载系统光盘以rpm按顺序安装即可)
 
  1. mount /dev/cdrom /mnt 
  2.  
  3. rpm -ivh /mnt/Packages/apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm 
  4. rpm -ivh /mnt/Packages/httpd-tools-2.2.15-29.el6_4.x86_64.rpm 
  5. rpm -ivh /mnt/Packages/httpd-2.2.15-29.el6_4.x86_64.rpm  
B. 启动Apache并加入开机启动
 
  1. /etc/init.d/httpd start 
  2. chkconfig httpd on 
  3. C. 创建index.html 
  4. echo "<h1>Squid-Web/10.0.10.10</h1>> /var/www/html/index.html 
 
二、Squid服务器的安装:
挂载Redhat6.5系统光盘,利用RPM安装Squid软件;
 
  1. mount /dev/cdrom /mnt 
  2.  
  3. rpm -ivh /mnt/Packages/perl-DBI-1.609-4.el6.x86_64.rpm 
  4. rpm -ivh /mnt/Packages/squid-3.1.10-19.el6_4.x86_64.rpm 
安装完检查是否成功:
 
  1. [root@redhat ~]# rpm -qa|grep squid 
  2. squid-3.1.10-19.el6_4.x86_64 
 
接下来修改配置文件:/etc/squid/squid.conf  养成良好习惯,修改前备份一下配置文件;
 
  1. [root@redhat ~]# cp /etc/squid/squid.conf /etc/squid/squid.conf.$(date +%F) 
  2. [root@redhat ~]# ls /etc/squid/squid.* 
  3. /etc/squid/squid.conf  /etc/squid/squid.conf.2015-11-06  /etc/squid/squid.conf.default 
其实默认系统已经有一个备份文件了:/etc/squid/squid.conf.default
 
上面已经完成了Squid的安装了;
 
 
三、普通代理服务
 
即标准的、传统的代理服务,需要客户机在浏览器中指定代理服务器的地址、端口。
 


 
3.1 Squid服务器IP地址确认:eth0为内网IP,eth1为外网IP:
 
 
3.2 编辑squid 主配置文件/etc/squid/squid.conf
我直接清空原有数据,只填入下面的数据:
 
  1. http_port 3128 
  2. cache_mem 64 MB 
  3. maximum_object_size 4 MB 
  4. cache_dir ufs /var/spool/squid 100 16 256 
  5. access_log /var/log/squid/access.log 
  6. acl lnet src 192.168.40.0/24 
  7. http_access allow lnet 
  8. http_access deny all 
  9. visible_hostname squid.david.dev 
  10. cache_mgr hz328@qq.com 
 
3.3 启动Squid
 
  1. /etc/init.d/squid start 
检查是否启动成功:
 
  1. [root@redhat ~]# ps -ef|grep squid 
  2. root       1195      1  0 15:12 ?        00:00:00 squid -f /etc/squid/squid.conf 
  3. squid      1198   1195  0 15:12 ?        00:00:00 (squid) -f /etc/squid/squid.conf 
  4. squid      1199   1198  0 15:12 ?        00:00:00 (unlinkd) 
  5. root       1202   1053  0 15:12 pts/0    00:00:00 grep squid 
3.4 配置客户端代理IP地址和端口:
 
 
 
3.5 测试,可以看到是可以成功打开网页的;
 
 
到此上面已经完成普通代理的配置;
 
四、透明代理服务
 
适用于企业的网关主机,客户机不需要指定代理服务器地址、端口等信息,通过iptables将客户机的Web访问数据转交给代理服务程序处理。
实验拓扑图如下:
 
 
 
4.1  修改squid 主配置文件/etc/squid/squid.conf
 
  1. http_port 3128 transparent 
  2. cache_mem 64 MB 
  3. maximum_object_size 4 MB 
  4. cache_dir ufs /var/spool/squid 100 16 256 
  5. access_log /var/log/squid/access.log 
  6. acl localnet src 192.168.40.0/24 
  7. http_access allow localnet 
  8. http_access deny all 
  9. visible_hostname squid.david.dev 
  10. cache_hz328@qq.com 
 
注意:在http_port 3128 后添加transparent 关键字。这是透明代理和普通代理的区别;
 
4.2 让上面的修改的配置生效。
 
  1. 可以使用:/etc/init.d/squid reload 
  2. 或者:squid -k reconfig 
 
4.3启动防火墙加iptables规则,把内部的http请求重定向到3128端口
 
  1. service iptables start 
  2. 清除现有iptables filter 表规则 
  3. iptables -F 
  4. 查看nat 表设置(已经是空的) 
  5. iptables -t nat -L -n 
  6. 4.4 添加规则: 
  7. 在nat表中新增一条规则 
  8. iptables -t nat -I PREROUTING -i eth0 -s 192.168.40.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128 
 
 
4.5 设置iptables 开机启动
 
  1. chkconfig iptables on 
4.6 修改客户端IP地址
将默认网关设置为squid 服务器的内网ip地址。
 
 
这里特别注意:在浏览器中,取消代理设置:
 
 
4.7 测试,同样成功打开网页;
 
 
到此,上面已经完成了透明代理的简单配置了;
 
五、反向代理服务
反向代理服能够为Internet用户访问企业Web站点提供缓存加速。
 
本次基于Apache的虚拟主机反向代理;
 
 
 
5.1 关闭防火墙
 
  1. /etc/init.d/iptables stop 
 
5.2 修改Apache Server 添加两个虚拟主机;
 
在根目录添加两个目录:
 
  1. [root@redhat ~]# mkdir /nginx.58jb.com 
  2. [root@redhat ~]# mkdir /www.testweb.com 
 
添加主页文件:
 
  1. nginx.58jb.com: 
  2. echo "<h1>Squid-Web/nginx.58jb.com</h1>" >/nginx.58jb.com/index.html 
  3. www.testweb.com: 
  4. echo "<h1>Squid-Web/www.testweb.com</h1>" >/www.testweb.com/index.html 
 
5.3 修改Apache配置文件,支持虚拟主机;
 
  1. cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%F) 
  2. vi /etc/httpd/conf/httpd.conf 
 
作如下修改:
 
  1. 990行: 
  2. #NameVirtualHost *:80 
  3. 去掉“#”号修改为: 
  4. NameVirtualHost *:80 
  5.  
  6. 在最后添加两个虚拟主机的配置: 
  7. <VirtualHost *:80> 
  8.     DocumentRoot /nginx.58jb.com 
  9.     ServerName nginx.58jb.com 
  10. </VirtualHost> 
  11.  
  12. <VirtualHost *:80> 
  13.     DocumentRoot /www.testweb.com 
  14.     ServerName www.testweb.com 
  15. </VirtualHost> 
由于我的网站目录建立在根目录,所以要把权限开放:302行左右:
 
  1.     302 <Directory /> 
  2.     303     Options FollowSymLinks 
  3.     304     AllowOverride None 
  4.     305 </Directory> 
  5.      
  6. 修改为: 
  7.     302 <Directory /> 
  8.     303     Options FollowSymLinks 
  9.     304     AllowOverride None 
  10.     305     order deny,allow 
  11.     306     allow from all 
  12.     307 </Directory> 
5.4 重启Apache服务:
 
  1. service httpd restart 
 
然后回到Squid服务器:
5.7 修改squid 主配置文件/etc/squid/squid.conf
 
 
  1. http_port 80 accel vhost  
  2. http_access allow all 
  3. cache_peer 10.0.10.10 parent 80 0 originserver name=a 
  4. cache_peer 10.0.10.10 parent 80 0 originserver name=b 
  5. cache_peer_domain a nginx.58jb.com 
  6. cache_peer_domain b www.testweb.com 
  7. cache_peer_access a allow all 
  8. cache_peer_access b allow all 
  9.  
  10. visible_hostname squid.david.dev 
 
注意:vhost 这个代理虚拟主机;
 
5.8 配置客户端
 
这里我们为了方便,就在hosts 文件里直接指定。
修改C:\Windows\System32\drivers\etc\hosts 文件
 
 
然后可以把上面透明代理加入的默认网关去掉:
 
5.9 测试后成功打开网页;
 
 
 
到此Squid服务三种代理模式已经成功测试;
当然这里也可以使用多台Web服务器,通过不同的域名访问不同的机器,简单实现企业应用中的负载均衡;