代理服务器和网络地址转换NAT

来源:互联网 发布:淘宝定做衣服 编辑:程序博客网 时间:2024/05/17 01:00

NAT(网络地址转换)

工作在网络层,对数据包进行地址转换后再转发。解决网络地址不够用,通过隐藏局域IP地址来保护网络安全。
NAT路由器(需要装入NAT软件的路由器),至少有一个有效的外部全球IP地址,所有使用本地地址主机(局域网内192.168.0.0所有主机的IP地址都是本地IP地址192.168.x.x)和外网通信时都要在NAT路由器上将其本地地址转换成全球IP地址,才能与因特网连接。
NAT的工作原理:

1).局域网内某主机(源主机)向NAT路由器提交访问外网请求

2).NAT路由器对请求包进行地址转换(即将源IP地址转换为新的源IP地址:全球IP地址)

3).NAT路由器将映射记入转换表,并将转换后请求提交给外网服务器

4).外网服务器向NAT路由器返回一个应答包

5).NAT路由器查找转换表获取映射信息并转换应答包

6).NAT路由器将转换后的应答包返回给局域网主机(源主机).

具体如下:

如下图所示,NAT网关有2个网络端口,其中公共网络端口的IP地址是统一分配的公共 IP,为202.20.65.5;私有网络端口的IP地址是保留地址,为192.168.1.1。私有网中的主机192.168.1.2向公共网中的主机202.20.65.4发送了1个IP包(Dst=202.20.65.4,Src=192.168.1.2)。

 

当IP包经过NAT网关时,NAT Gateway会将IP包的源IP转换为NAT Gateway的公共IP并转发到公共网,此时IP包(Dst=202.20.65.4,Src=202.20.65.5)中已经不含任何私有网IP的信息。由于IP包的源IP已经被转换成NAT Gateway的公共IP,Web Server发出的响应IP包(Dst= 202.20.65.5,Src=202.20.65.4)将被发送到NAT Gateway。
这时,NAT Gateway会将IP包的目的IP转换成私有网中主机的IP,然后将IP包(Des=192.168.1.2,Src=202.20.65.4)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。转换示意图如下。

 

如果内网主机发出的请求包未经过NAT,那么当Web Server收到请求包,回复的响应包中的目的地址就是私网IP地址,在Internet上无法正确送达,导致连接失败。
连接跟踪
在上述过程中,NAT Gateway在收到响应包后,就需要判断将数据包转发给谁。此时如果子网内仅有少量客户机,可以用静态NAT手工指定;但如果内网有多台客户机,并且各自访问不同网站,这时候就需要连接跟踪(connection track)。如下图所示:

 

在NAT Gateway收到客户机发来的请求包后,做源地址转换,并且将该连接记录保存下来,当NAT Gateway收到服务器来的响应包后,查找Track Table,确定转发目标,做目的地址转换,转发给客户机。
 端口转换
以上述客户机访问服务器为例,当仅有一台客户机访问服务器时,NAT Gateway只须更改数据包的源IP或目的IP即可正常通讯。但是如果Client A和Client B同时访问Web Server,那么当NAT Gateway收到响应包的时候,就无法判断将数据包转发给哪台客户机,如下图所示。

此时,NAT Gateway会在Connection Track中加入端口信息加以区分。如果两客户机访问同一服务器的源端口不同,那么在Track Table里加入端口信息即可区分,如果源端口正好相同,那么在时行SNAT和DNAT的同时对源端口也要做相应的转换,如下图所示。

 


代理服务器:

代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache).代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求和暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去因特网防卫该资源。
代理服务器可在客户端或服务器端工作,也可在中间系统工作。
代理服务器(Proxy Server)是一种重要的服务器安全功能,它的工作主要在开放系统互联(OSI)模型的会话层

一个完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。在后一种情况中,代理服务器可能对目标服务器的资源下载至本地缓存,如果客户端所要获取的资源在代理服务器的缓存之中,则代理服务器并不会向目标服务器发送请求,而是直接返回缓存了的资源。一些代理协议允许代理服务器改变客户端的原始请求、目标服务器的原始响应,以满足代理协议的需要。


proxy不同于nat,NAT绝大部分情况下只是修改数据包中的地址和端口,然后记录对应关系后把数据转发出去。proxy客户端需要访问互联网时,会先通知proxy服务器软件要做什么,然后proxy代理服务器去扮演客户请求而完成,然后将结果回传给客户端。Proxy服务器端先要分析数据包的内容,弄清楚要干什么,然后以自己的身份来“代理”完成这个请求,并且将结果发送回客户端。


两者的优缺点:

对客户端来说:
NAT设置简单,无需客户端软件
Proxy针对每一种应用设置代理服务器,或者安装一个客户端软件,设置相对复杂一些.并且并不一定支持所有的应用,如VPN客户端登录很多Proxy就无法代理应用.

对服务器来说:
Proxy需要耗用的资源更多一些(内存,硬盘等),以存CACHE内容,正因如此,在大量用户的情况下,获得的性能更高一些.
NAT方式相当于一个软路由器,在中小访问量的情况下,速度也不错,资源占用少,所以适用普遍使用.
从安全方面来说,二者并不差别.
nat和proxy都是一台接入互联网的服务器上的服务软件.


代理服务器在使用中有很多种类型,最常见的是下面6种基本类型:
1.HTTP代理:能够代理客户机的HTTP访问,主要是代理浏览器访问网页。   
2.FTP代理:能够代理客户机上的FTP软件访问FTP服务器。   
3.RTSP代理:代理客户机上的Realplayer访问Real流媒体服务器。   
4.POP3代理:代理客户机上的邮件软件用POP3方式收发邮件。
5.VPN代理:指在共用网络上建立专用网络的技术。之所以称为虚拟网主要是因为整个VPN网络的任意两个结点之间的连接并没有传统专网建设所需的点到点的物理链路,而是架构在公用网络服务商ISP所提供的网络平台之上的逻辑网络。用户的数据是通过ISP在公共网络(Internet)中建立的逻辑隧道(Tunnel),即点到点的虚拟专线进行传输的。通过相应的加密和认证技术来保证用户内部网络数据在公网上安全传输,从而真正实现网络数据的专有性。  
6.SOCKS代理:SOCKS代理与其他类型的代理不同,它只是简单地传递数据包,而并不关心是何种应用协议,既可以是HTTP请求,所以SOCKS代理服务器比其他类型的代理服务器速度要快得多。SOCKS代理又分为SOCKS4和SOCKS5,二者不同的是SOCKS4代理只支持TCP协议(即传输控制协议),而SOCKS5代理则既支持TCP协议又支持UDP协议(即用户数据包协议),还支持各种身份验证机制、服务器端域名解析等。SOCK4能做到的SOCKS5都可得到,但SOCKS5能够做到的SOCKS则不一定能做到,比如我们常用的聊天工具QQ在使用代理时就要求用SOCKS5代理,因为它需要使用UDP协议来传输数据。