浅谈NAT服务-阿里云开发者社区

开发者社区> 云计算> 正文

浅谈NAT服务

简介:


        由于IP地址资源有限,一般在我们企业环境中,使用的都是私有IP地址。而私有IP地址是无法直接访问公网资源的,这个时候我们就需要用到NAT服务了(NAT服务用于将一个地址段映射到另一个地址段,即可通过NAT把内网地址(私有地址)转换成合法的公网IP地址,以便内网地址访问公网。)。

      NAT服务器有内部和外部两个网卡,只有当内外部网络之间需要进行数据传送时,才进行地址转换。在NAT服务器上都维护一张状态表,称为NAT表。该表记录每个数据包在NAT服务器上被转换的情况。根据采用的地址转换技术不同,可以分为三类:静态NAT、动态NAT和端口NAT。
静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。 
动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址对是随机的不确定的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。 
端口转换是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。目前在企业网络中应用最多的就是这种方式。
        下面我们就来具体看看这几种不同方式的运行情况:
        本文运行环境: 
        内网IP地址段为:192.168.50.0/24,网关内网IP地址为192.168.50.250/24,网关外网IP地址为61.152.194.122。除了网关使用了一个公网IP外,还有三个公网IP可以使用(61.152.194.123--61.152.194.125)。另外,公网上有一台Web服务器,IP地址为209.131.136.158,使用80端口发布web服务。如下图所示:

 
                             图1
 
一、静态地址转换
1. 工作过程:
1)首先,需要在NAT服务器上建立静态NAT映射表。比如,NAT服务器上的静态NAT表为:
内网IP 公网IP
192.168.50.51 61.152.194.123
192.168.50.52 61.152.194.124
192.168.50.53 61.152.194.125
2)当内部主机,需要建立一条到Internet的连接时,首先会将请求发送到NAT服务器。NAT服务器接收到请求后,根据接收到的数据包检查NAT表。如果已为该地址配置了静态地址转换,NAT服务器就使用对应的公网IP地址转发数据包,否则,NAT服务器不对地址进行转换,直接将数据包丢弃。
3)Internet主机接收到信息后,将应答信息返回给端口NAT服务器。
4)当NAT服务器接收到来自Internet上的主机返回的数据包后,检查静态NAT表。如果NAT表中存在匹配的映射项,则将目标地址转换为相应的内网IP,并将数据包转发给内网主机。如果不存在匹配映射项,则将数据包丢弃。
例如,内网主机PC2(IP地址为192.168.50.52/24),需要访问公网上的web服务器209.131.136.158。如图1所示,访问过程如下:
①. 内网主机PC2将请求数据包传送给NAT服务器,数据包如下:
源IP 192.168.50.52
目标IP 209.131.136.158
②. NAT服务器收到数据包后,将数据源地址改为对应的公网IP地址,数据包如下:
源IP 61.152.194.124
目标IP 209.131.136.158
同时,NAT服务器建立一个NAT表,记录数据包包头信息的变更情况,如下表:
源IP 192.168.50.52
目标IP 61.152.194.124
③. Web服务器收到数据包后,根据源IP和端口将返回内容传送给NAT服务器,数据包如下:
源IP 209.131.136.158
目标IP 61.152.194.124
④. NAT服务器接收到web服务器发过来的数据包后,根据之前建立的NAT表,变更IP数据包信息,如下表:
源IP 61.152.194.124
目标IP 192.168.50.52
经过上述步骤,内网主机与外部服务器间数据交互完成。
2. 配置实例:
以下以Cisco路由器做为NAT服务器为例,说明静态NAT转换配置:
网络环境如上,见图1。现在需要配置将内网地址192.168.50.51--192.168.50.53转换为合法的公网IP地址61.152.194.123--61.152.194.125,子网掩码为255.255.255.248。配置步骤如下: 
1)设置外部端口。 
interface  serial  0 
ip  address  61.152.194.122  255.255.255.248 
ip  nat  outside 
2)设置内部端口。 
interface  ethernet  0 
ip  address  192.168.50.250  255.255.255.0 
ip  nat  inside 
3)在内部本地与内部合法地址之间建立静态地址转换。 
ip  nat  inside  source  static  192.168.50.51  61.152.194.123
ip  nat  inside  source  static  192.168.50.52  61.152.194.124  
  ip  nat  inside  source  static  192.168.50.53  61.152.194.125
至此,静态地址转换配置完毕。
 
二、动态地址转换
1. 工作过程:
    1)当内部主机需要建立一条到Internet的连接时,首先将请求发送到NAT服务器上。NAT服务器接收到请求后,根据接收到的数据包,检查动态NAT表。如果已经存在该映射项,则NAT服务器根据该记录将源地址转换为对应的公网地址,将数据包发送到Internet主机上,并记录会话状态。
2)Internet主机接收到信息后,将应答信息返回给NAT服务器。
3)当NAT服务器接收到来自Internet返回的应答信息后,检查NAT表。如果存在匹配的映射项,则将目标IP地址转换为对应的内网IP地址,并将数据包转发到内网主机。如果不存在匹配的映射项,则将数据包丢弃。
动态地址转换跟静态地址转换的方式差不多,只是内网跟外网的IP地址不是一一对应的,而是动态分配的。
2. 配置实例:
以下以Cisco路由器做为NAT服务器为例,说明动态NAT转换配置:
网络环境如上,见图1。现在需要配置将内网地址192.168.50.0/24转换为合法的公网IP地址61.152.194.123--61.152.194.125,子网掩码为255.255.255.248。配置步骤如下: 
1)设置外部端口。 
interface  serial  0 
ip  address  61.152.194.122  255.255.255.248
ip  nat  outside   
2)设置内部端口。 
interface  ethernet  0 
ip  address  192.168.50.250  255.255.255.0
ip  nat  inside 
3)定义合法IP地址池。  
ip  nat  pool  net  61.152.194.123  61.152.194.125  netmask  255.255.255.248 
4)定义内部网络中允许访问Internet的访问列表。  
access-list  1  permit  192.168.50.0  0.0.0.255  
5)实现网络地址转换。 
ip  nat  inside  source  list 1  pool  net  
至此,动态地址转换设置完毕。
 
三、端口地址转换
1. 工作过程:
1)当内网主机需要与Internet建立连接时,首先将请求发送到端口NAT服务器。NAT服务器接收到请求后,根据接收到的数据包,检查端口NAT映射表。如果还没有为该内网主机建立地址转换映射项,则NAT服务器会创建一个会话,并给该会话分配一个端口。之后将源地址及端口改为企业公网IP地址及相应的端口,发送数据包到Internet主机上。
2)Internet主机接收到信息后,将应答信息返回给端口NAT服务器。
3)当端口NAT服务器接收到应答信息后,检查端口NAT映射表。如果端口NAT表存在匹配的映射项,则将目标地址及端口转换为对应的内网IP及端口,将数据包转发给内网主机。如果不存在匹配映射项,就将数据包丢弃。
例如,内网主机PC1(IP地址为192.168.50.51/24),需要使用端口4321访问公网上的web服务器209.131.136.158(端口为80)。如图1所示,访问过程如下:
①. 内网主机PC1将请求数据包传送给NAT服务器,数据包如下:
源IP 192.168.50.51
源端口 4321
目标IP 209.131.136.158
目标端口 80
②. NAT服务器收到数据包后,将数据源地址改为NAT服务器的公网IP地址,并将端口改为一个未使用的端口号,比如3698,数据包如下:
源IP 61.152.194.122
源端口 3698
目标IP 209.131.136.158
目标端口 80
同时,NAT服务器建立一个NAT表,记录数据包包头信息的变更情况,如下表:
源IP 192.168.50.51
源端口 4321
目标IP 61.152.194.122
目标端口 3698
③. Web服务器收到数据包后,根据源IP和端口将返回内容传送给NAT服务器,数据包如下:
源IP 209.131.136.158
源端口 80
目标IP 61.152.194.122
目标端口 3698
④. NAT服务器接收到web服务器发过来的数据包后,根据之前建立的NAT表,变更IP数据包信息,如下表:
源IP 61.152.194.122
源端口 3698
目标IP 192.168.50.51
目标端口 4321
经过上述步骤,内网主机与外部服务器间数据交互完成。
2. 配置实例:
以下以Cisco路由器做为网关为例,说明端口NAT转换配置:
网络环境如上,见图1。现在需要配置将内网地址转换为合法的公网IP地址:61.152.194.123,子网掩码为255.255.255.248。配置步骤如下: 
1)设置外部端口。 
interface  serial  0 
ip  address  61.152.194.122  255.255.255.248
in  nat  outside 
2)设置内部端口。 
interface  ethernet  0 
ip  address  192.168.50.250  255.255.255.0 
ip  nat  inside 
3)定义合法IP地址池。 
in  nat  pool  onlyone  61.152.194.123  61.152.194.123  netmask  255.255.255.248
  4)定义内部访问列。 
access-list 1  permit  192.168.50.0  0.0.0.255 
5)设置复用动态地址转换。 
ip  nat  inside  source  list1  pool  onlyone  overload 
至此,端口复用动态地址转换完成。
   本文主要介绍了NAT的工作过程和在路由器中的一些设置步骤,了解了NAT服务,更有利于了解数据交换等问题。






     本文转自Tonyguo 51CTO博客,原文链接:http://blog.51cto.com/tonyguo/191467,如需转载请自行联系原作者

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章