NAT与NAPT技术详解

一、定义

NAT: Network Address Transfer 网络地址转换。虚拟机。

NAPT: Network Address Port Transfer 网络地址端口转换。也叫PAT。内网路由器或FW。

NAT和NAPT的功能是完成内部私有地址和全局网络地址的转换,让计算机能与外界网络通信。其属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。

两者的区别:

NAT:一个全局IP对应一个私有IP(即一台计算机)(或者有一个IP地址池,里面有很多外部IP地址,当有内部IP地址要出去的时候,就随机选一IP地址作为其出口IP)。一对一,一个内部地址转换成一个外部地址进行通信。

NAPT:一个全局IP+不同的端口号对应多个私有IP(即多台计算机),需要一个全局IP对应多台计算时,比如局域网内部计算机访问外界网络时,就得用NAPT。一对多,多个内部地址使用同一地址不同端口转换成外部地址进行通信。缺点在于其通信仅限于TCP或UDP

好处:

  • NAT不仅完美地解决了lP地址不足的问题。
  • 能够有效地避免来自网络外部的攻击。
  • 隐藏并保护网络内部的计算机。
  • 实现TCP流量的负载均衡。

NAT不仅实现了一般的地址转换功能,同时提供了完善的地址转换ALG (Application Layer Gateway,应用级网关)机制,使其可以支持一些特殊的应用协议,而不需要对NAT平台进行任何的修改,具有良好的可扩充性。这些特殊协议的报文载荷里携带了地址或端口信息,该信息也可能需要进行地址转换。这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接。

可支持的特殊协议包括:FTP(File Transfer Protocol,文件传输协议)、ICMP(Internet Control Message Protocol,因特网控制消息协议)、DNS(Domain Name System,域名系统)、ILS(Internet Locator Service,Internet定位服务)、H.323、SIP(Session Initiation Protocol,会话发起协议)、NetMeeting 3.01、NBT(NetBIOS over TCP/IP,基于TCP/IP的网络基本输入输出系统)等。

NAT地址转换表

  • 不管本地主机的IP是什么,一律转换为外部全球IP。
  • 不管本地主机的TCP端口是什么,一律转换为互不相同的全新端口。

内网地址

  • 10.0.0.0~10.255.255.255          1个A类
  • 172.16.0.0~172.31.255.255      16个B类
  • 192.168.0.0~192.168.255.255  256个C类

穿透方法:

目前常用的针对UDP的NAT 穿透(NAT Traversal)方法主要有:STUNTURNICEuPnP等。其中ICE方式由于其结合了STUN和TURN的特点,所以使用最为广泛。针对TCP的NAT穿透技术目前仍为难点。实用的技术仍然不多。

二、工作原理

2.1 NAT

NAT是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用IP 地址空间的枯竭。

NAT的基本工作原理是,当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。NAT网关有2个网络端口,其中公共网络端口的IP地址是统一分配的公共IP,为202.204.65.2;私有网络端口的IP地址是保留地址,为192.168.1.1。私有网中的主机 192.168.1.2向公共网中的主机166.111.80.200发送了1个IP包(Des=166.111.80.200,Src=192.168.1.2)。当IP包经过NAT网关时,NAT会将IP包的源IP转换为NAT的公共IP并转发到公共网,此时IP包(Des=166.111.80.200,Src=202.204.65.2)中已经不含任何私有网IP的信息。由于IP包的源IP已经被转换成NAT的公共IP,响应的IP包(Des=202.204.65.2,Src=166.111.80.200)将被发送到NAT。 这时,NAT会将IP包的目的IP转换成私有网中主机的IP,然后将IP包(Des=192.168.1.2,Src=166.111.80.200)转发到私有网。对于通信双方而言,这种地址的转换过程是完全透明的。

2.2 NAPT

由于NAT实现是私有IP和NAT的公共IP之间的转换,那么,私有网中同时与公共网进行通信的主机数量就受到NAT的公共IP地址数量的限制。为了克服这种限制,NAT被进一步扩展到在进行IP地址转换的同时进行Port的转换,这就是网络地址端口转换NAPT(Network Address Port Translation)技术。NAPT也被称为“多对一”的NAT,或者叫PAT(Port Address Translations,端口地址转换)、地址超载(address overloading)。

NAPT与NAT的区别在于,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。这使得多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。(NAPT多了对TCP和UDP的端口号的转换)

私有网主机192.168.1.2要访问公共网中的 Http服务器166.111.80.200。首先,要建立TCP连接,假设分配的TCP Port是1010,发送了1个IP包(Des=166.111.80.200:80,Src=192.168.1.2:1010),当IP包经过NAT 网关时,NAT会将IP包的源IP转换为NAT的公共IP,同时将源Port转换为NAT动态分配的1个Port。然后,转发到公共网,此时IP包 (Des=166.111.80.200:80,Src=202.204.65.2:2010)已经不含任何私有网IP和Port的信息。由于IP包的源 IP和Port已经被转换成NAT的公共IP和Port,响应的IP包 (Des=202.204.65.2:,Src=2010166.111.80.200:80)将被发送到NAT。这时NAT会将IP包的目的IP转换成私有网主机的IP,同时将目的Port转换为私有网主机的Port,然后将IP包 (Des=192.168.1.2:1010,Src=166.111.80.200:80)转发到私网。对于通信双方而言,这种IP地址和Port的转换是完全透明的。

2.3 实现方法

NAT的实现方式有三种,即静态转换Static Nat动态转换Dynamic Nat端口多路复用OverLoad

静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。

建立内部本地地址和全局地址的一对一永久映射。

动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

建立内部本地地址和全局地址池的临时映射关系,过一段时间没有用就会删除映射关系。

端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation)。采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

ALG(Application Level Gateway),即应用程序级网关技术:传统的NAT技术只对IP层和传输层头部进行转换处理,但是一些应用层协议,在协议数据报文中包含了地址信息。为了使得这些应用也能透明地完成NAT转换,NAT使用一种称作ALG的技术,它能对这些应用程序在通信时所包含的地址信息也进行相应的NAT转换。例如:对于FTP协议的PORT/PASV命令、DNS协议的 "A" 和 "PTR" queries命令和部分ICMP消息类型等都需要相应的ALG来支持。

如果协议数据报文中不包含地址信息,则很容易利用传统的NAT技术来完成透明的地址转换功能,通常我们使用的如下应用就可以直接利用传统的NAT技术:HTTP、TELNET、FINGER、NTP、NFS、ARCHIE、RLOGIN、RSH、RCP等。

三、示例

 1. 私有ip为192.168.0.2的计算机想和外界网络通信,如果地址未经转换,网络方因为只识别全局IP,不识别私有IP,将无法回信。

 

 2. 通过NAT把私有IP转换成全局IP就可以和外界顺畅通信了


3. 假设这个局域网内还有一台私有IP为192.168.0.3的计算机也要外界网络通信。此时用同一个全局IP的话,网络将不知道回复给哪个私有IP。NAT到这儿就不灵了。

 

 

4. 如果在地址转换的时候,加上端口号来区分是哪个私有IP,就可以解决上面的多台内部计算机和外界通信的问题了。这就是NAPT。

 

 

四、easy IP

Easy IP 方式的实现原理与上节介绍的地址池NAPT转换原理类似,可以算是NAPT的一种特例,不同的是Easy IP 方式可以实现自动根据路由器上WAN接口的公网IP地址实现与私网IP地址之间的映射(无需创建公网地址池)。

Easy IP 主要应用于将路由器WAN 接口IP 地址作为要被映射的公网IP 地址的情形,特别适合小型局域网接入Internet 的情况。这里的小型局域网主要指中小型网吧、小型办公室等环境,一般具有以下特点:内部主机较少、出接口通过拨号方式获得临时(或固定)公网IP 地址以供内部主机访问Internet。

图示为Easy IP 方式的实现原理,具体过程如下:



① 假设私网中的Host A 主机要访问公网的Server,首先要向Router 发送一个请求报文(即Outbound 方向),此时报文中的源地址是10.1.1.100,端口号1540。
② Router 在收到请求报文后自动利用公网侧WAN 接口临时或者固定的“公网IP地址:端口号”(162.10.2.8:5480),建立与内网侧报文“源IP 地址:源端口号”间的Easy IP转换表项(也包括正、反两个方向),并依据正向Easy IP 表项的查找结果将报文转换后向公网侧发送。此时,转换后的报文源地址和源端口号由原来的(10.1.1.100:1540)转换成了(162.10.2.8:5480)。
③ Server 在收到请求报文后需要向Router 发送响应报文(即Inbound 方向),此时只须将收到的请求报文中的源IP 地址、源端口号和目的IP 地址、目的端口号对调即可,即此时的响应报文中的目的IP 地址、目的端口号为162.10.2.8:5480。
④ Router 在收到公网侧Server 的回应报文后,根据其“目的IP 地址:目的端口号”查找反向Easy IP 表项,并依据查找结果将报文转换后向内网侧发送。即转换后的报文中的目的IP地址为10.1.1.100,目的端口号为1540,与Host A 发送请求报文中的源IP地址和源端口完全一样。
如果私网中的Host B 也要访问公网,则它所利用的公网IP 地址与Host A 一样,都是路由器WAN 口的公网IP地址,但转换时所用的端口号一定要与Host A 转换时所用的端口不一样。 

Easy IP功能是指进行地址转换时,直接使用接口的外网IP地址作为转换后的源地址,能够最大程度的节省IP地址资源,不需要公网IP地址池。它也可以利用访问控制列表控制哪些内部地址可以进行地址转换。
 

  • 17
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值