一、Squid简介及作用
Squid是Linux下一个缓存Internet数据的代理服务器软件,其接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户想要下载一个主页时,可以向Squid发出一个申请,要Squid代替其进行下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份。当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
squid不仅可用在Linux系统上,还可以用在AIX、Digital Unix、FreeBSD、NetBSD、Nextstep、SCO和Solaris等系统上。
Squid与Linux下其它的代理软件如Apache相比,下载安装简单,配置简单灵活,支持缓存和多种协议。用ipchains+Squid的解决方案,就可以获得通过缓存高
性能的同时能够无缝的访问Internet。
Squid代理服务器的作用
1.通过缓存的方式为用户提供web访问加速
2.对用户的web访问进行过滤控制
缓存代理服务器又分为普通代理服务器,透明代理服务器,和反向代理服务器。
普通代理服务即指标准的,传统的代理服务,需要客户机在浏览器中指定代理服务器的地址,端口。
透明代理服务器适合企业的网关主机,客户机不需要指定代理服务器地址,端口等信息,需要设置防火墙策略将客户机的web访问数据转交给代理服务器。
反向代理服务为INTERNET用户访问网络内网站点提供缓存加速,提高访问效率。
二、squid常用命令及其相关配置
1. Squid命令
在开启squid之前,你应该验证其配置文件是否正确
# squid -k parse
初始化cache目录.即建立缓存目录的存储格式,观察这个过程,请使用-X选项
# squid –zX
启动squid服务
# service squid start
重配置运行中的squid进程
# squid -k reconfigure
最安全的停止squid的方法是使用squid -k shutdown命令:
# squid -k shutdown
2.Squid 主要组成部分
服务名:squid
主程序:/usr/sbin/squid
配置目录:/etc/squid
主配文件:/etc/squid/squid.conf
监听tcp端口号:3128
默认访问日志文件:/var/log/squid/access.log
3.squid 常用配置选项(/etc/squid/squid.conf)
http_port 3128 #监听端口
cache_mem 64MB #缓存占内存大小
maximum_object_size 4096KB #最大缓存块
reply_body_max_size 1024000 allow all #限定下载文件大小
access_log /var/log/squid/access.log #访问日志存放的文件
visible_hostname proxy.test.xom #可见的主机名
cache_dir ufs /var/spool/squid 100 16 256
usf:缓存数据的存储格式
/var/spool/squid 缓存目录
100 : 缓存目录占磁盘空间大小(M)
16 :缓存空间一级子目录个数
256 :缓存空间二级子目录个数
cache_mgr webmaster@test.com #定义管理员邮箱
http_access deny all #访问控制
4.squid中的访问控制
使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特
定站点或一组站点等等。 Squid 访问控制有两个要素:ACL 元素和 访问列表。
访问列表可以允许或拒绝某些用户对此服务的访问。
下面列出一些重要的 ACL 元素类型
src : 源地址 (即客户机IP地址)
dst : 目标地址 (即服务器IP地址)
srcdomain : 源名称 (即客户机名称)
dstdomain : 目标名称 (即服务器名称)
time : 一天中的时刻和一周内的一天
url_regex : URL 规则表达式匹配
urlpath_regex: URL-path 规则表达式匹配,略去协议和主机名
proxy_auth : 通过外部程序进行用户验证
maxconn : 单一 IP 的最大连接数
为了使用控制功能,必须先设置 ACL 规则并应用。ACL 声明的格式如下:
acl acl_element_name type_of_acl_element values_to_acl
注:
1. acl_element_name 可以是任一个在 ACL 中定义的名称。
2. 任何两个 ACL 元素不能用相同的名字。
3. 每个 ACL 由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算换
言之,即任一 ACL bbs.bitsCN.com
元素的值被匹配,则这个 ACL 元素即被匹配。
4. 并不是所有的 ACL 元素都能使用访问列表中的全部类型。
5. 不同的 ACL 元素写在不同行中,Squid 将把它们组合在一个列表中。
我们可以使用许多不同的访问条目。下面列出我们将要用到的几个:
* http_access: 允许 HTTP 访问。这个是主要的访问控制条目。
* no_cache: 定义对缓存请求的响应。
访问列表的规则由一些类似 'allow' 或 'deny' 的关键字构成,用以允许或拒绝向特定或一组 ACL 元素提供服务。
注:
1. 这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束。
2. 一个访问列表可以又多条规则组成。
3. 如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。
4. 一个访问条目中的所有元素将用逻辑与运算连接:
http_access Action 声明1 AND 声明2 AND 声明 OR.
http_access Action 声明3
多个 http_access 声明间用或运算连接,但每个访问条目的元素间用与运算连接。
5. 请记住列表中的规则总是遵循由上而下的顺序
5.CDN简介
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度
6.SDN主要特点
1、本地Cache加速 提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性
2、镜像服务 消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。
3、远程加速 远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度
4、带宽优化 自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点WEB服务器负载等功能。
5、集群抗*** 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防******以及降低各种D.D.o.S***对网站的影响,同时保证较好的服务质量 。
案例1-透明代理
实验原理:
1、在squid服务器上设置好内网外网的地址,我这里由于网络的原因将外网卡设置为了自动获得ip地址了。
2、由于squid不支持dns转换,需要允许流量通过nat出去解析地址。
3、在squid服务器上配置监听内网卡,把过来的要访问因特网的数据流转到3128端口上,进行代理
4、客户端需要自己配置好自己的IP地址、网关及DNS参数。
实验拓扑图:
系统要求:
linux 系统需要提前安装squid软件包:
透明代理步骤:
1、 客户端配置:dns指向,网关参数。
2、 服务器端:在squid上设置关于dns的nat转换
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -p udp --dport 53 -o eth1 -j MASQUERADE
3、 打开数据包转发功能:/etc/sysctl.conf 0改为1
4、 设置端口重定向:
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-ports 3128
5、在squid的配置中,添加一个参数,透明代理transparent:
6、squid配置文件需要修改的其它命令:
需要允许一些ip地址通过,squid默认是拒绝所有的!
简单的测试:
案例2-方向代理
实验原理:
著名的大的站点(如:百度)都有自己的代理服务器,这样方便不同区域的用户同时访问百度,而且速度一样的快。我们这里模拟一个简单的实验,PC机可以直接访问squid的eth0上的IP地址,这是squid服务器会返回给用户自己的缓存文件,如果缓存中没有,就把这个请求发送给Internet的父级服务器,就是主服务器。在把接到的数据发送给客户机。
实验拓扑
实验步骤:
1、squid上的简单配置:根据拓扑图配置ip地址
2、修改/etc/squid/squid.conf文件
[root@localhost ~]# vim /etc/squid/squid.conf
920 http_port 10.10.10.1:80 vhost
1187 cache_peer 192.168.100.200 parent 80 0 originserver
3、重启squid服务
4、web服务器的配置
配置ip地址,建立一个简单的测试web站点。
测试:
转载于:https://blog.51cto.com/shdw1999/977930