squid简介
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid是一个缓存Internet数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向Squid发出一个申请,要Squid代替其进行下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS等协议并且,Squid可以自动地进行处理,可以根据自己的需要设置Squid,使之过滤掉不想要的东西。在使用过程中,合理使用访问控制是非常重要的工作。使用访问控制特性,可以控制其在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。Squid访问控制有两个要素:ACL元素和访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。
CDN简介
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

案例一(标准代理)

拓扑图:

squid服务器配置步骤:

1.[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm
2.vim /etc/resolv.conf      //设置dns
文件内容增加:

  1. nameserver 222.88.88.88  
  2. nameserver 222.85.85.85   

3.vim /etc/squid/squid.conf   //编辑配置文件

文件内容修改:

  1. visible_hostname 192.168.2.100  //访问不通时,地址反馈给客户端  
  2. http_port 192.168.2.10:3128        
  3. http_access allow all                    //允许所有地址访问 

4.vim /etc/squid/squid.conf   //控制部分修改

文件内容修改:
acl badip src 192.168.2.10/32
http_access deny badip                    //拒绝来源地址访问

acl webip dst 192.168.101.254/32
http_access deny webip                   //拒绝访问目的地址

acl webip dst 192.168.101.254/32
acl mangerip src 192.168.145.10/32
http_access deny !mangerip webip   //只允许145.10访问101.100

acl badweb dstdomain .sina.com.cn
http_access deny badweb               //拒绝访问域名为sina.com.cn网址

acl worktime time MTWHF 08:00-18:00
http_access deny worktime(data 082918002012月日小时分年)  //拒绝工作时间访问

acl worktime time MTWHF 08:00-18:00 
acl badcontent urlpath_regex -i \.jpg$
http_access deny worktime badcontent  //拒绝工作时间访问不好的内容

acl badurl url_regex -i sina
http-access deny badurl                       //拒绝访问网址内容带有sina的网站

5.重新启动squid服务

 service squid restart

客户端配置:

内网地址不需要设置网关和dns,只需要打开代理服务器
如图:

 

 

客户端测试:

客户端能够访问到internet.

案例二(透明代理)

拓扑图:

squid服务器配置步骤:

1.设置关于dns的nat转换

[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p udp --dport 53  -o eth1 -j MASQUERADE

命令说明:
-A :追加规则

-s :来源  

--dport 53 :目标端口,DNS解析的协议端口是udp53 ,主服务器和备份服务器区域文件传输的协议端口是tcp53 

-o :出口

-j :动作

MASQUERADE :地址伪装 

2.设置端口重定向
 [root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0  -j REDIRECT --to-ports 3128
3.vim /etc/squid/squid.conf   //设置透明代理

文件内容修改:
http_port 192.168.2.10:3128 transparent
4.vim /etc/sysctl.conf   //打开数据包转发能力

文件内容修改:
net.ipv4.ip_forward = 1
启动转发功能:
 [root@localhost ~]#sysctl -p

客户端配置:

dns指向和网关参数:

客户端测试:
C:\Documents and Settings\yang>ping www.baidu.com

Pinging www.a.shifen.com [119.75.217.56] with 32 bytes of

案例三(反向代理)

拓扑图:

squid服务器配置步骤:

1.vim /etc/squid/squid.conf

文件内容修改:

  1. http_access allow all  
  2. http_port 192.168.101.11:80  vhost  
  3. cache_peer 192.168.2.100         parent   80  0    originserver 

linux的web服务器配置步骤:
1.[root@localhost Server]# rpm -ivh httpd-2.2.3-22.el5.i386.rpm
2.[root@localhost ~]# echo "hello" >/etc/www/html/index.html
3.[root@localhost Server]# rpm -ivh lynx-2.8.5-28.1.el5_2.1.i386.rpm
4.[root@localhost Server]# lynx http://127.0.0.1
如图:

 网络中客户端配置:

 

外网客户端测试:
外网访问squid服务器的外端口地址

见图: