代理服务器

在现实中我们连接Internet有两种技术nat和代理服务器

Nat:是网络层技术,可以根据地址 、协议、端口号进行控制,控制力度弱,优势是:支持绝大部分的应用,只有在实现***时的利用ipsec技术的ah加密手段不支持

代理服务器:位于应用层,控制力度强,不但可以基于网络层进行控制,还可以对应用层的参数进行控制(账号,内容,网址)但是代理服务器支持应用少

再现实中,则利用的是两者的结合,若能走代理服务器则走,若不行,则走nat

代理服务器的好处

代理服务器可以做到内外地址的转换,屏蔽内部网的细节,使非法分子无法探知内部结构。代理服务器提供特殊的筛选命令,可以禁止用户使用容易造成***的不安全的命令,从根本上抵御***

代理服务器的分类(软件)

Windows 平台上:wingate、winroute、bygate以及isa

Linux 平台上: squid

代理服务器的原理:(只有一个代理服务器)

Squid 代理服务器

代理服务器分为正向代理snat和反向代理dnat

1 正向代理原理:一个私有网络中(lan)的一台机器A访问某个网站,之间将访问的网站发给代理服务器,代理服务器则查看自己的缓存,若自己的缓存中有被访问的网站,则以局域网中的速度传输给你机器A,若代理服务器缓存中有所访问的网页,则称为命中,若代理服务器缓存中没有所要访问的网页,即没有命中,代理服务器就会以自己的合法ip请求机器A所要访问的网站,网站返回网页后,代理服务器将网页返回给机器A并且将网页放入自己的缓存中

2 反向代理的原理:Internet中有一个机器B,它想访问一个局域网中的私有ip,这时候需要使用反向代理,机器B不知道私有ip,它只知道私有ip的代理服务器地址。所以机器B访问代理服务器,代理服务器接到访问后,再以自己的ip去访问私有ip地址,然后返回请求并将请求结果放入缓存中

3 透明代理的原理 :它不需要在应用层的软件上配置代理服务器以及端口号

一般使用代理服务器时,每个用户需要在客户端程序中指明要使用代理,自行设置Proxy参数(如在浏览器中有专门的设置来指明HTTP或FTP等的代理)。而透明代理服务,用户不需要任何设置就可以使用代理服务器,简化了网络的设置过程:假设A为内部网络客户机,B为外部网络服务器,C为代理服务器。当A对B有连接请求时,TCP连接请求被代理服务器截取并加以监控。截取后当发现连接需要使用代理服务器时,A和C之间首先建立连接,然后代理服务器建立相应的代理服务通道与目标B建立连接,由此通过代理服务器建立A 和目标地址B的数据传输途径。从用户的角度看,A和B的连接是直接的,而实际上A 是通过代理服务器C和B建立连接的。反之,当B对A有连接请求时原理相同。由于这些连接过程是自动的,不需要客户端手工配置代理服务器,甚至用户根本不知道代理服务器的存在,因而对用户来说是透明的

反向代理

通常所说的web服务器加速就是反向代理,在外部网络和繁忙的web服务器之间增加一个高速的web缓冲服务器来降低实际的web服务器的负载的一种技术。
反向代理是针对web服务器提高加速功能,作为代理缓存,它并不是针对浏览器用户,而针对一台或多台特定的web服务器,它可以代理外部网络对内部网络的访问请求

反向代理的好处

1、 解决了网站服务器对外可见的问题;

2、 节约了有限的IP地址资源,企业内所有的网站共享一个在internet中注册的IP地址,这些服务器分配私有地址,采用虚拟主机的方式对外提供服务;

3、 保护了真实的web服务器,web服务器对外不可见,外网只能看到反向代理服务器,而反向代理服务器上并没有真实数据,因此,保证了web服务器的资源安全;

4、 加速了对网站访问速度,减轻web服务器的负担,反向代理具有缓存网页的功能,如果用户需要的内容在缓存中,则可以直接从代理服务其中获取,减轻了web服务器的负荷,同时也加快了用户的访问速度

CDN简介

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度

特点:1、本地Cache加速提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度,并大大提高以上性质站点的稳定性

2、镜像服务 消除了不同运营商之间互联的瓶颈造成的影响,实现了跨运营商的网络加速,保证不同网络中的用户都能得到良好的访问质量。

3、远程加速 远程访问用户根据DNS负载均衡技术智能自动选择Cache服务器,选择最快的Cache服务器,加快远程访问的速度

4、带宽优化 自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点web服务器负载等功能。

5、集群抗*** 广泛分布的CDN节点加上节点之间的智能冗余机制,可以有效地预防******以及降低各种D.D.o.S***对网站的影响,同时保证较好的服务质量

优势

CDN能几乎涵盖国内所有线路。而在可靠性上, CDN 在结构上实现了多点的冗余,即使某一个节点由于意外发生故障,对网站的访问能够被自动导向其他的健康节点进行响应。CDN能轻松实现网站的全国铺设,不必考虑服务器的投入与托管、不必考虑新增带宽的成本、不必考虑多台服务器的镜像同步、不必考虑更多的管理维护技术人员

CDN采用的技术

(1)内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处;

(2)内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应;

(3)内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;

(4)性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态

案例是copy的

案例1:

实验要求:

公司希望通过代理服务器实现透明代理,要求上班时间只允许技术部通过网页来访问Internet;而市场部不可以在上班时间访问Internet;

技术部的地址(192.168.10.10-192.168.10.100/24)在工作中能够访问网页;

市场部的地址(192.168.10.101-192.168.10.200/24)在工作中不能访问网络;

在下班时间中都能访问网络;

拓扑图:

clip_image002

实验步骤:

配置代理服务器的网络:

##配置网卡地址:

clip_image004

由于是出于内网中进行测试,所以代理服务器的外网接口使用的私有ip,并且配置了网关指向;

clip_image006

##配置DNS指向:

clip_image008

##重启网路服务:

clip_image010

挂载光盘:

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]#

安装squid服务:

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm

Preparing... ########################################### [100%]

1:squid ########################################### [100%]

[root@localhost Server]#

编辑squid主配置文档:

[root@localhost ~]# vim /etc/squid/squid.conf

##设置代理监听端口:

clip_image012

监听端口指定为代理服务器内网卡地址的3128端口,是为了不通过外网卡进行代理服务,保证代理服务器的正确性;

transparent表示开启代理服务器的透明代理;

##设置visible hostname内容:

clip_image014

当访问的页面被拒绝时,代理服务器会返回是谁拒绝了你。

编写acl控制策略:

clip_image016

注意顺序,注意逻辑;在做策略控制时笔者很纠结!

打开代理服务器的数据包转发功能:

[root@localhost ~]# vim /etc/sysctl.conf

clip_image018

clip_image020

使用iptable实现dns的转发:用于实现内网的dns解析:

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

通过iptable的nat转换实现端口转发,来实现【端口重定向】

[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-ports 3128

实验测试:

1 、技术部测试PC的地址:

clip_image022

##处于上班时间:

clip_image024

##技术部可以通过80(http)或443(https)访问网络:

clip_image026

##处于下班时间:

clip_image028

##这时市场部能够访问网络:

clip_image030

##市场部测试PC地址:

clip_image032

##处于上班时间是:

clip_image034

##市场部的主机不能通过浏览器访问网络:

clip_image036

clip_image038

##在下班时间:

clip_image040

##市场部能够访问网络:

clip_image026[1]

案例2:

实验要求:

公司希望通过squid的反向代理实现WEB服务器加速;

拓扑图:

clip_image042

实验步骤:

配置代理服务器的网络:

##配置网卡地址:

clip_image044
clip_image046

##重启网络服务:

clip_image048

挂载光盘:

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]#

安装squid代理服务:

[root@localhost ~]# cd /mnt/cdrom/Server/

[root@localhost Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm

Preparing... ########################################### [100%]

1:squid ########################################### [100%]

[root@localhost Server]#

配置squid主配置文档:

##反向代理端口

clip_image050

##缓存的对端是兄弟还是父亲:

clip_image052

页面缓存地址是谁,属于父亲级的主机,端口80 我的访问端口是3130

##禁用掉阻止所有代理的策略,并允许所有:

clip_image054

启动squid服务:

[root@localhost ~]# service squid start

init_cache_dir /var/spool/squid... Starting squid: ........[ OK ]

[root@localhost ~]#

web服务器配置:

##Web服务器地址配置:

clip_image056

##测试页面:

clip_image058

##web网站ip地址:

clip_image060

##默认首页面格式:

clip_image062

##浏览测试页:

clip_image064

测试:

##客户端ip地址

clip_image066

##通过http协议访问代理服务器的外网接口:

clip_image068