Linux新手随手笔记2.6-使用Squid部署代理缓存服务

 

Squid 代理服务php

1:正向代理模式 :分为标准和透明html

正向代理模式:实现多个用户经过一个IP地址上网(好比说咱们的路由器),ACL访问控制(好比说限制某我的不能上某些网站等)linux

2:反向代理模式数据库

配置Squid服务程序

先安装咱们的Squid服务windows

Squid服务程序的配置步骤虽然十分简单,但依然须要为你们交代一下实验所需的设备以及相应的设置。首先须要准备两台虚拟机,一台用做Squid服务器,另一台用做Squid客户端,后者不管是Windows系统仍是Linux系统皆可(本实验中使用的是Windows 7操做系统)。为了可以相互通讯,须要将这两台虚拟机都设置为仅主机模式(Hostonly),而后关闭其中一台虚拟机的电源,在添加一块新的网卡后开启电源,如图浏览器

因此下咱们实验的模式,是就是咱们其中一台服务器安装两个网卡,一个局域网一个外网,另外一台只安装一个局域网,仅主机模式,而后这样咱们就能够经过局域网两台计算机互相通信,并且又能够经过有外网服务器进行上网,要是咱们只有局域网的服务器也能够上网,那么就必定是另外一台服务器帮咱们转发了。那么这就是Squid代理的功劳。缓存

                            Squid服务器和客户端的操做系统和IP地址信息安全

主机名称 操做系统 IP地址
Squid服务器 RHEL 7 外网卡:桥接DHCP模式
内网卡:192.168.10.10
Squid客户端 Windows 7 192.168.10.20

安后咱们把那块外网网卡添加出来,你能够选择一种你喜欢的方式。服务器

别忘了重启网卡,咱们立刻就能够上网了。网络

咱们能够看到咱们有两块网卡了,第二块就是对外的桥接网卡。

咱们能够各类测试通不通。顺便开一下另外一台客户端(windows和Linux都行),而后测试一下局域网通不通

而后咱们关闭防火墙规则,而且保存他,这一步必须作,否则一会会访问不到。

而后咱们重启squid服务并添加启动项。

与以前配置过的服务程序大体相似,Squid服务程序的配置文件也是存放在/etc目录下一个以服务名称命名的目录中。表16-2罗列了一些经常使用的Squid服务程序配置参数,你们能够预先浏览一下。

                               经常使用的Squid服务程序配置参数以及做用

参数 做用
http_port 3128 监听的端口号
cache_mem 64M 内存缓冲区的大小
cache_dir ufs /var/spool/squid 2000 16 256 硬盘缓冲区的大小
cache_effective_user squid 设置缓存的有效用户
cache_effective_group squid 设置缓存的有效用户组
dns_nameservers IP地址 通常不设置,而是用服务器默认的DNS地址
cache_access_log /var/log/squid/access.log 访问日志文件的保存路径
cache_log /var/log/squid/cache.log 缓存日志文件的保存路径
visible_hostname linuxprobe.com 设置Squid服务器的名称
正向代理

标准正向代理

 

Squid服务程序软件包在正确安装并启动后,默认就已经能够为用户提供标准正向代理模式服务了,而再也不须要单独修改配置文件或者进行其余操做。接下来在运行Linux客户端。(确认客户端有局域网)

而后咱们先试一下能不能用浏览器访问外网。

看来咱们是想多了,下面就开始咱们的表演,设置一下。咱们以火狐为例

而后选择Edit,而后选最后一个高级选项

而后咱们保存,刷新一下网页。立刻就能够上网了。

这个就叫标准正向代理(windows7的话浏览器本身找一下)

算了,给大家看一下吧。

而后咱们进入到squid服务的配置文件看一下吧。

大概是59行,这个3128熟悉不,没错就是咱们配置网页时候得端口号,咱们也能够修改他。

然胡重启squid服务

咱们发现马上就被禁用了。咱们再配置一下。

咱们发现马上就能够了。

咱们在编辑完httpd服务程序的配置文件并重启服务程序后,被系统提示报错。尽管如今重启Squid服务程序后系统没有报错,可是用户还不能使用代理服务。SElinux安全子系统认为Squid服务程序使用3128端口号是理所固然的,所以在默认策略规则中也是容许的,可是如今Squid服务程序却尝试使用新的10000端口号,而该端口本来并不属于Squid服务程序应该使用的系统资源,所以还须要手动把新的端口号添加到Squid服务程序在SElinux域的容许列表中。

[root@linuxprobe ~]# semanage port -l | grep squid_port_t squid_port_t tcp 3128, 3401, 4827 squid_port_t udp 3401, 4827 [root@linuxprobe ~]# semanage port -a -t squid_port_t -p tcp 10000 [root@linuxprobe ~]# semanage port -l | grep squid_port_t squid_port_t tcp 10000, 3128, 3401, 4827 squid_port_t udp 3401, 4827
透明正向代理

正向代理服务通常是针对企业内部的全部员工设置的,鉴于每位员工所掌握的计算机知识不尽相同,若是您所在的公司不是IT行业的公司,想教会你们如何使用代理服务也不是一件容易的事情。再者,不管是什么行业的公司,公司领导都但愿能采起某些措施限制员工在公司内的上网行为,这时就须要用到透明的正向代理模式了。

“透明”二字指的是让用户在没有感知的状况下使用代理服务,这样的好处是一方面不须要用户手动配置代理服务器的信息,进而下降了代理服务的使用门槛;另外一方面也能够更隐秘地监督员工的上网行为。

在透明代理模式中,用户无须在浏览器或其余软件中配置代理服务器地址、端口号等信息,而是由DHCP服务器将网络配置信息分配给客户端主机。这样只要用户打开浏览器便会自动使用代理服务了。若是你们此时并无配置DHCP服务器,能够像如图所示来手动配置客户端主机的网卡参数。

为了咱们实验的真实,咱们给他设置回去,如今是没有设置标准正向代理,而后咱们就要是用的高透明正向代理模式了。就是不用用户去配置什么,有时候用户基本是不想本身去配置这些东西的,亲身体验。因此咱们就要想办法了,不能一个一个去配置吧。可是咱们要设置一下这个客户端网卡的,把网关指向到咱们的服务器。而后DNS指向到一个外网的DNS,其实这个咱们也不用咱们的用户来配的,由于咱们能够经过咱们以前学的DHCP服务直接为咱们的用户去分配一下信息

那么咱们的用户省事了,那么咱们就须要作点什么了,总有我的须要站出来的不是么。

而后咱们再配置一下咱们的squid配置文件

 咱们先把端口号改回去,而后后面加上transpqrent,是转发的意思。

而后咱们找到62行,把他开启了,这表明就是一个缓存目录的意思,待会咱们就会有不少不少/var/spool/squid这样的缓存目录生成出来,就是当咱们有第一个用户访问百度的时候,就会在咱们服务器内部里面保存www.baidu.com这个网页的内容,当有第二我的访问同一个网站的时候,那么就会直接将咱们服务器的这个信息传送给咱们的客户端,目的呢就是加快了网站的二次相应速度。

咱们看一下咱们在客户端如今是ping不通百度的。

既然要让用户在无需过多配置系统的状况下就能使用代理服务,做为运维人员就必须提早将网络配置信息与数据转发功能配置好。前面已经配置好的网络参数,接下来要使用SNAT技术完成数据的转发,让客户端主机将数据交给Squid代理服务器,再由后者转发到外网中。简单来讲,就是让Squid服务器做为一个中间人,实现内网客户端主机与外部网络之间的数据传输。

因为当前尚未部署SNAT功能,所以当前内网中的客户端主机是不能访问外网的

咱们先清空一下防火墙。

若是咱们选择firewall作的话直接

咱们说过它里面有一个假装技术,咱们只须要点一下那个√,就OK了,咱们ping一下。(都是在服务器上作的步骤,都说了不想让客户操做,应该明白吧)

 

咱们会发如今客户端马上就会ping通百度,可是这样是否是太简单了,没意思。咱们仍是给他关上用iptables试一下吧。

要想让内网中的客户端主机可以访问外网,客户端主机首先要能获取到DNS地址解析服务的数据,这样才能在互联网中找到对应网站的IP地址。下面经过iptables命令实现DNS地址解析服务53端口的数据转发功能,而且容许Squid服务器转发IPv4数据包。sysctl -p命令的做用是让转发参数当即生效:

先介绍一下这个命令的做用,定义为这是一个SNAT的模式,叫作源地址转换协议,(53端口号的udp服务其实就是指的是DNS服务能够去网上查一下,就像ftp是21端口号,ssh服务是22端口号同样,咱们的网站是80端口号),就是指的全部用户查询DNS服务的话就能够直接吧信息交由咱们eno33554992对外网卡来处理,这个网卡必定要以你的实际为准,别抄这里的。MASQUERADE是假装的意思,他就是会自动获取你最新的IP地址(好比说咱们每次重启路由器都会获取一个新的地址,不信你本身试试)。

下面咱们编辑这个文件,添加一个参数

net.ipv4.ip_forward他值得就是咱们IPV4的网络支持咱们ipv4的转发,咱们写上1。这样就能够通过咱们的路由器转发咱们DNS的信息了。

这样作好了咱们再在客户端ping一下咱们的百度。

那确定是ping不一样的。可是的话咱们已经能够作DNS的解析了,看111.13.100.92

不信咱们用nslookup看一下。

对吧。

而后咱们进入到服务端把刚才配置的squid服务先给他关闭起来。这里有一个小BUG,就是咱们先要把这个squid服务给他关闭起来,而后咱们才可使用到squid。

这里-k是对咱们代理模式进行一个初始化工做,

而后咱们再用一个squid -z进行初始化缓存目录。

在配置稳当并重启Squid服务程序且系统没有提示报错信息后,接下来就能够完成SNAT数据转发功能了。它的原理其实很简单,就是使用iptables防火墙管理命令把全部客户端主机对网站80端口的请求转发至Squid服务器本地的3128端口上。SNAT数据转发功能的具体配置参数以下。

必定要注意画红的地方,是你本机的,网卡名称是你桥接外网的网卡名称,IP是桥接外网分配给你的IP,不要照抄。而后咱们说一下这些参数的做用。

第一个是nat -A PREROUTING仍是一个SNAT技术,全部来自于咱们用户的网站的请求都会被定义在3128端口号上面,也就是说全部向咱们这个网关发送的80端口号网站的请求都会被转移到3128端口号上面。3128端口号他就是squid服务。

下面是说咱们全部来自于192.168.10.0/24这个网段的用户的全部的请求都会经过咱们对外的网卡转发出去。

咱们能够看到他能够通了,也就是能够上网了。

------------------------------------------------------------------------------------------------------------------

到这里咱们有人可能会想,究竟是不是squid服务的做用这个实验到底生没生效,那么咱们在squid服务上作一些限制,若是咱们能限制咱们的用户的话,说明他就是经过咱们的squid服务了。那咱们接下来看ACL访问控制。

 ACL访问控制

说若是咱们不太喜欢一我的,不想让他上网怎么办呢,咱们看一下效果。

咱们编辑一下咱们squid服务主配置文件。

只容许IP地址为192.168.10.20的客户端使用服务器上的Squid服务程序提供的代理服务,禁止其他全部的主机代理请求。

下面的配置文件依然是Squid服务程序的配置文件,可是须要留心配置参数的填写位置。若是写的太靠前,则有些Squid服务程序自身的语句都没有加载完,也会致使策略无效。固然也不用太靠后,大约在26~32行的位置就能够,并且采用分行填写的方式也便于往后的修改。

26行咱们定义一个别名,当咱们再看到这个client的时候,就是看到了192.168.10.20

31行下面写上咱们的规则就是http_access咱们的网站请求,若是说咱们的用户名称他叫作client(192.168.10.20)的时候咱们就容许,32行是说,若是不是的话咱们就禁止所有。

重启一下squid服务

 当咱们没有换IP的时候是能够访问的,(原来的IP就是192.168.10.20)。

咱们如今把他换成192.168.10.30再看。

咱们发现他仍是能够,可是咱们其中的一个时候就报错了。

是这样的,这个功能他是有局限性的,它是不可以限制加密网站的,若是这个网站不是加密的话就会限制掉,加密的话就没法限制。

禁止全部客户端访问网址中包含linux关键词的网站

Squid服务程序的这种ACL功能模式是比较粗犷暴力的,客户端访问的任何网址中只要包含了某个关键词就会被当即禁止访问,可是这并不影响访问其余网站。

继续编辑咱们配置文件

 其中-i参数就是限制一个关键词的意思,咱们定义一个haha的别名,而后限制关坚持linux,见到haha就等因而linux,而后咱们下面限制别名。

咱们看一下有liinux的就不行,可是前面是https就不行。不受限制的。其余的只要有linux的就会被限制。

没有linux的就能够。

禁止全部客户端访问某个特定的网站。

因为咱们禁止全部客户端访问网址中包含linux关键词的网站,这将形成一大批网站被误封,从而影响同事们的正常工做。其实经过禁止客户端访问某个特定的网址,也就避免了误封的行为。下面按照以下所示的参数配置Squid服务程序并重启,而后进行测试,其测试结果如图

继续编辑咱们配置文件

 仍是定义一个deny_url别名,而后禁止网站www.linuxcool.com

重启服务,而后试一下。

咱们看开始是能够的,

而后咱们重启一下再试,

就被禁止了。

 禁止员工在企业网内部下载带有某些后缀的文件

在企业网络中,总会有一小部分人利用企业网络的高速带宽私自下载资源(好比游戏安装文件、电影文件等),从而对其余同事的工做效率形成影响。经过禁止全部用户访问.rar或.avi等后缀文件的请求,能够防止他们继续下载资源,让他们知难而退。下面按照以下所示的参数配置Squid服务程序并重启,而后进行测试,其测试结果如图

若是这些员工是使用迅雷等P2P下载软件来下载资源的话,就只能使用专业级的应用防火墙来禁止了。

仍是先编辑咱们的主配置文件。

定义一个badfile别名,而后-i禁止mp3和rar格式文件下载,咱们使用\.给他转译,$符是后缀的意思。

而后咱们从新启动两边squid服务,这多是一个bug吧,很烦。

首先咱们看一下原网站是能够访问的。

而后咱们随便加一个东西,出现这个没找到,可是说明还能访问。

可是当咱们后面加上rar的时候,就直接报错被禁止了。

squid反向代理

网站页面是由静态资源和动态资源一块儿组成的,其中静态资源包括网站架构CSS文件、大量的图片、视频等数据,这些数据相对于动态资源来讲更加稳定,通常不会常常发生改变。可是,随着建站技术的更新换代,外加人们不断提高的审美能力,这些静态资源占据的网站空间愈来愈多。若是可以把这些静态资源从网站页面中抽离出去,而后在全国各地部署静态资源的缓存节点,这样不只能够提高用户访问网站的速度,并且网站源服务器也会由于这些缓存节点的存在而下降负载。

反向代理是Squid服务程序的一种重要模式,其原理是把一部分本来向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。可是这种技术的弊端也很明显,若是有心怀不轨之徒将本身的域名和服务器反向代理到某个知名的网站上面,从理论上来说,当用户访问到这个域名时,也会看到与那个知名网站同样的内容(有些诈骗网站就是这样骗取用户信任的)。所以,当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也能够避免这种窃取行为。

网站=动态资源+静态资源

动态资源=数据库、脚本

静态资源=html,图片,视频,php静态文件等。

咱们还原一下虚拟机从新安装squid服务,避免实验之间的冲突。

当前许多网站都默认禁止了反向代理功能。开启了CDN(内容分发网络)服务的网站也能够避免这种窃取行为.

如今告诉你们怎么找没有限制的网站,就是咱们先找到他的域名而后ping一下

若是你能用这个IP也能给他访问到的话,说明这个网站就没有作限制的,这很不安全。

下面咱们开始实验这个技术,

首先咱们给虚拟机网卡调成桥接模式。技术须要

编辑网卡,咱们给他调成DHCP

把原来配置的移除了

而后重启网卡。

而后咱们评一下百度网址。

能够,那么好,咱们开始配置squid服务的配置文件。

由于正向和反向代理是不能同时使用的,因此咱们把他删掉而后写咱们的反向代理。而后59行IP是咱们桥接模式分配给咱们地址,别抄这里的,ifconfig本身看一下。而后80端口号,vhost值得是咱们本身是一个虚拟主机。

而后咱们定义一下咱们缓存服务器的地址就写咱们刚才看到的那个。58.247.138.211,而后parent是一个父类地址,咱们对他进行一个缓存,他的端口号是80,他是一台原始服务器。

而后重启服务。

咱们会发现,他们原网站IP也能够访问,咱们本地能够用访问这个网址。

相关文章
相关标签/搜索