共计 6981 个字符,预计需要花费 18 分钟才能阅读完成。
一:squid 服务概述
Squid cache(简称为 Squid)是一个流行的自由软件(GNU 通用公共许可证)的代理服务器和 Web 缓存服务器。Squid 有广泛的用途,从作为网页服务器的前置 cache 服务器缓存相关请求来提高 Web 服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid 主要设计用于在 Unix 一类系统运行。
代理服务器是介于 Internet 和内网计算机之间的联系桥梁,他的功能就是代替内网计算机去访问互联网信息。使用代理服务器,可以有效的节约 IP 资源,多台内网计算机可以通过同一个 IP 访问 Internet。目前大部分企业都是通过代理服务器为企业内部员工提供上网服务。
端口: 3128
二:实验安装
1:安装 squid:
[root@xuegod63 ~]# yum install squid -y
2:配置文件位置:
[root@xuegod63 ~]# ls /etc/squid/squid.conf
3:启动服务
[root@xuegod63 ~]# /etc/init.d/squid start
[root@xuegod63 ~]# netstat -antup | grep 3128
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 4376/(squid)
[root@xuegod63 ~]# chkconfig squid on
[root@xuegod63 ~]# chkconfig –list squid
squid 0: 关闭1: 关闭2: 启用3: 启用4: 启用5: 启用6: 关闭
4:服务启动失败的解决方法
[root@xuegod63 ~]# vim /etc/hosts
192.168.10.20 squid_A.tarena.com sxueod63
[root@xuegod63 ~]# squid -z #初始化缓存
2014/03/12 14:06:39| Creating Swap Directories
[root@xuegod63 ~]# /etc/init.d/squid start
三:实战举例
根据实现的方式不同,代理服务可以分为 正向代理和反向代理,正向代理包括 传统代理和透明代理,这两种代理服务完成的工作相差不多。
第一块:正向代理
1:正向传统代理服务器:
在客户端使用的时候需要在 web 游览器中进行设置,来指定服务器的端口和地址,这种代理主要是针对局域网访问 internet 的时候用的比较广泛, 但由于客户端需要进行设置,所以这种并不是最常用的。
1)加速原理:
代理服务器的功能是代替网络用户去访问网络信息,并把获得的信息返回给用户,其工作步骤大致如下:
(1)客户机向代理服务器发起访问互联网的请求
(2)代理服务器收到请求后检查请求是否被允许,如果允许将会进行下一步处理,否则丢弃该请求。
(3)代理服务器先查找本地缓存中是否有客户机请求的数据,如果有则直接返回给客户端,否则继续下一步。
(4)如果没有找到数据缓存,则代替客户机在互联网上发起请求。
(5)接到请求回应后复制一份到缓存中,然后返回给客户机
1)实验拓扑
2)实验需求:
搭建 squid 代理服务器,使内网主机xuegod64:192.168.2.2, 能够 通过xuegod63 上的 squid 代理服务器加速上网。
3)实验环境
配置xuegod63 网络:eth0: 192.168.1.63 添加 eth1,配置 IP:192.168.2.1 vmnet4
配置xuegod64 网络:添加 eth0,配置 IP:192.168.2.2 网关:192.168.2.1 vmnet4
4)实验步骤
xuegod63 配置:
[root@xuegod63 ~]# vim /etc/squid/squid.conf
改: #http_access deny all
为: http_access allow all // 允许所有用户使用 它作为代理
5)启动服务
[root@xuegod63 ~]# service squid restart
[root@xuegod63 ~]# chkconfig squid on
6)配置 xuegod64 客户端
在浏览器里指定代理服务器的 ip 地址(192.168.2.1) 和端口号(3128)。
7)测试:
# 在 xuegod64 上的浏览器中打开 www.163.com 可以访问,但是当 ping www.163.com ping 是不通的
# 在 xuegod64 上的浏览器中打开 192.168.1.1 可以访问到当前的路由器,并且找到了当前的 主机是匿名主机的 IP 地址是 192.168.1.63 而不是 xuegod64 上的 IP 地址。这样 xuegod63 就是一个代理服务器了,客户端(xuegod63)通过代理服务器(xuegod64)访问到网络,而客户端本身自己是不能访问网络的。
2:正向透明代理服务器:
提供与传统代理相同的服务,但不需要用户进行设置,而是通过默认路由和防火墙的重定向功能,在整个过程中用户不知道其中的过程,所以称之为透明代理。使用透明代理时网页游览器访问网站时的域名解析请求优先发给DNS 服务进行解析。透明代理必须在 linux 操作系统的防火墙上进行操作。操作上不是很灵活。
1)实验拓扑
2)实验要求
客户端 不用在浏览器里指定代理服务器的 ip 地址和端口号,就可以直接访问公网上的网站服务器。配置透明 squid 代理提升访问速度
透明代理= squid + iptables
3)实验步骤
(1)修改配置文件 , 配置支持透明代理
[root@xuegod63 ~]#vim /etc/squid/squid.conf
改:http_port 3128
为:http_port 3128 transparent (透明的)
[root@xuegod63 ~]# service squid restart
(2)开启路由转发功能:
[root@xuegod63 ~]# vim /etc/sysctl.conf
改:net.ipv4.ip_forward = 0
为:net.ipv4.ip_forward = 1
[root@xuegod63 ~]# sysctl –p
(3)配置iptables:
[root@xuegod63 ~]# iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT –to 192.168.1.63 #让内网可以上网
或者
[root@xuegod63 ~]# iptables -t nat -A PREROUTING -s 192.168.2.0/24 -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
(4)测试:把浏览器取消代理。
[root@xuegod64 ~]# ping g.cn
PING g.cn (203.208.48.144) 56(84) bytes of data.
64 bytes from 203.208.48.144: icmp_seq=1 ttl=43 time=72.4 ms
64 bytes from 203.208.48.144: icmp_seq=2 ttl=43 time=73.7 ms
64 bytes from 203.208.48.144: icmp_seq=3 ttl=43 time=74.0 ms
# 这样就可以上网了
第二块:反向代理
反向代理服务器的工作原理 :
反向代理方式是指以代理服务器来接受Internet 上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
通常的代理服务器,只用于代理内部网络对Internet 的连接请求,客户机必须指定代理服务器, 并将本来要直接发送到 Web 服务器上的 http 请求发送 到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。
1、作内容服务器的替身
如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。
当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。
这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访 问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。
2、作为内容服务器的负载均衡器
可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。
对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。
可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期 间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。
例:配置squid 反向代理加速度内网 web 服务器访问速度
1):实验拓扑图:
2):实验要求
让 客户端物理机 访问 192.168.1.63 代理服务器。192.168.1.63 代理服务器缓存 客户端所需要的 web 服务器中的数据。实现 xuegod63 给 xuegod64 加速度 端口80 和 81 两个服务。只加速度静态页面或视频。
思路:
1:在代理服务器上,squid 的主配置文件中开启支持虚拟主机功能,然后配置 squid 主配置文件,指定内容 web 服务器的 IP 地址。
2:在内容服务器上,开启 web 服务器,在 httpd 服务的主配置文件中配置虚拟主机。
3):实验步骤
(1):公网客户端,物理机:修改物理机hosts 文件:
windows 下的 hosts 文件在:C:\Windows\System32\drivers\etc。首先,在 Client 端修改 hosts 文件,添加如下两行:
192.168.1.63 www.serverA.com
192.168.1.63 www.serverB.com
# 在这里面第一次修改是不 给修改的,只需要将hosts 文件拖到桌面就可以修改了,之后再将修改的文件拖到此文件夹中
(2):配置xuegod63 squid 代理服务器:
#这里,Squid 反向代理服务器监听端口:8000(默认是:3128)访问时,需要在客户端,打开浏览器,在浏览器地址栏输入:www. servera.com:8000
[root@xuegod63 ~]# vim /etc/squid/squid.conf
改:59 #http_access denny all
为:60 http_access allow all
改:http_port 3128
为:http_port 8000 vhost
# 配置 Squid 服务器监听本机 8000 端口,开启 vhost 支持虚拟主机功能,这样也可以给多台服务器加速。
(3):打开虚拟主机支持 ,在此行下面,添加以红色内容:
[root@xuegod63 ~]# vim /etc/squid/squid.conf
cache_peer 192.168.2.2 parent 80 0 no-query originserver weight=1 name=a
cache_peer 192.168.2.2 parent 81 0 no-query originserver weight=1 name=b
cache_peer_domain a www.serverA.com
cache_peer_domain b www.serverB.com
#以上 4 行配置,让 Squid 服务器知道:
#从客户端过来的请求 , 如果 找的 是www.serverA.com,则 Squid 代理服务器 向客户端 192.168.2.2 的端口 80 发送 回复;
#从客户端过来的请求 , 如果 找的 是www.serverB.com,则 Squi d 代理服务器 向客户端 192.168.2.2 的端口 81 发送 回复;
cache_peer_access a allow all
cache_peer_access b allow all
# cache_peer 设置:允许其它 cache 机和访问 a 和 b
[root@xuegod63 ~]# service squid restart
(4):配置两个站点web 服务器,xuegod64 配置 HTTP 虚拟主机:基于端口做虚拟主机:
[root@xuegod64 ~]# cp -r /boot/grub/ /var/www/html/
[root@xuegod64 ~]#echo www.serverA.com > /var/www/html/index.html
[root@xuegod64 ~]#echo www.serverB.com > /var/www/html/grub/index.html
[root@xuegod64 ~]# vim /etc/httpd/conf/httpd.conf
#Listen 12.34.56.78:80
Listen 80
Listen 81
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html # 虚拟主机 80 端口的网站根目录
ServerName www.serverA.com # 虚拟主机(web 服务器)名称
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost *:81>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html/grub# 虚拟主机 81 端口的网站根目录
ServerName www.serverB.com # 虚拟主机(web 服务器)的名称
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
[root@xuegod64 ~]# service httpd restart
(5) :测试:http://www.servera.com:8000/
http://www.serverb.com:8000/
Linux 下 Squid 代理缓存服务环境部署 http://www.linuxidc.com/Linux/2016-10/136594.htm
Squid:实现高速的 Web 访问 http://www.linuxidc.com/Linux/2013-04/83512.htm
CentOS 6.2 编译安装 Squid 配置反向代理服务器 http://www.linuxidc.com/Linux/2012-11/74529.htm
Squid 代理 http 和 https 方式上网的操作记录 http://www.linuxidc.com/Linux/2017-02/140398.htm
Squid 代理服务器搭建及配置 http://www.linuxidc.com/Linux/2016-03/129392.htm
CentOS 6.4 下 DNS+Squid+Nginx+MySQL 搭建高可用 Web 服务器 http://www.linuxidc.com/Linux/2014-04/99984.htm
Squid 的详细介绍:请点这里
Squid 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143460.htm