理解:思科设备上的网络地址翻译功能(NAT)功能-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

理解:思科设备上的网络地址翻译功能(NAT)功能

简介:
+关注继续查看

现在全世界的IPv4地址已经被宣布彻底耗尽,所以为全世界的计算机都分配一个被公共网络认可的IP地址,这将是不可能的事实!所有RFC1918定义了一个属于私有地址的空间供给企业或者家庭内部网络使用,目标在于缓解IPv4地址资源紧张的问题。被RFC1918定义的私有IP地址如下所示,它对于Internet而言,是无效的IP地址,此时就提出了一些关于网络访问的问题,比如:既然RFC1918所定义的IP地址是私有专用IP,公共网络不会认可这些IP地址,那么,使用私有专用IP的计算机如何访问Internet?企业内部使用了私有专有地址来架设服务器,如果这些服务器需要被公共网络(Internet)上的主机访问怎么办?


RFC1918所定义的私用网络专用IP地址的范围:

nA类私有IP地址:10.0.0.0-10.255.255.255

nB类私有IP地址:172.16.0.0-172.31.255.255

nC类私有IP地址:192.168.0.0-192.168.255.255


理解NAT的定义:

NAT是NetworkAddress Translation,网络地址转换的缩写,它的主要功能是将IP报头中的一个私有网络IP 地址转换为另一个被公共网络认可的IP 地址。它能够成功的解决私有网络访问公共网络的功能,通常在这种情况下是将多个企业内部的私有网络专用地址转换为企业出口网关的一个公共IP地址来访问Internet,这种解决方案,通过使用少量的公有IP 地址代表较多的私有网络专用IP 地址的方式,有助于缓解可用的IP地址空间的枯竭。同时可以提高企业内部的安全性,因为内部私有专用地址对外是透明的。NAT的形式大概被分为三种典型的应用:


n静态NAT

n动态NAT

nPAT



理解并取证:网络地址翻译(NAT)-静态NAT的工作原理

静态NAT,通常私有IP与公共IP成一对一的关系,当然如果结合端口使用,也可以形成一个IP对应多个IP的形式,通常应用在企业内部有某台服务器需要提供给Internet的用户访问,具体如下图 9.52所示为私有IP与公共IP成一对一的关系,事实上在这种环境中,并没有达到节约IP地址的目的,只是对外隐藏了真实的私有专用IP地址,满足了Internet用户访问内部服务器的可能,从某种程度上提高了安全性。还有一种方案是使用一对多关系的静态映射,这种解决方案可以达到节约IP地址的目的,但是必须结合TCP套接字一起使用,TCP套接字是一种IP地址加端口号来识别会话的方法,具体如下图9.53所示,下面分别来描述这两种静态NAT的工作原理。

075435237.png

理解一对一关系的静态NAT:

图9.52所示,企业需要将私有网络中的Web服务器(192.168.2.100)和FTP服务器(192.168.2.200)提供给公共网络部分的202.202.2.100访问,由于两台服务器使用的是私有专用IP,它对于公共网络无效,所以现在需要使用静态NAT将服务器的私有专用IP映射成公共IP地址,以方便公共网络的主机访问,将192.168.2.100与202.202.1.100形成一对一的映射关系;192.168.2.200与202.202.1.200也做相同的映射;公共主机202.202.2.100访问202.202.1.100时,就是在访问192.168.2.100的Web服务器;访问202.202.1.200时,就是在访问192.168.2.200的FTP服务器。在这种情况下每个私有地址对应一个公共IP,所以不需要对端口做任可映射,可简化客户端的访问方式,缺点就是没有达到节约IP地址的目的,关于一对一关系的静态NAT的具体配置就参看9.3.7演示: 使用静态NAT配置内部网络服务器提供对外服务能力。

075531843.png

理解一对多关系的静态NAT:

一对多关系的静态NAT就是将多个私有网络专用地址映射成一个公共IP地址的方式来实现公共网络的主机访问私有网络中的服务器,实现这种映射关系最大的问题的就多个私有专用IP映射成一个公共IP,当外部主机访问这个公共IP时,如何去识别是发送到哪台私有专用IP地址服务器的会话?这必须依赖于TCP套接字来确定,TCP套接字是一种IP地址加上端口来识别会话的方法,比如:图9.53所示环境中,将私有网络上的Web服务器(192.168.2.100)的80号端口通过静态NAT映射到公共地址202.202.1.100的8000号端口,将FTP服务器(192.168.2.200)的21端口通过静态NAT映射到公共地址202.202.1.100的2001号端口,虽然两个私有IP都映射到同一个公共IP,但是两个服务分别使用同一个IP的不同端口号,这样,当公共网络的主机202.202.2.100访问202.202.1.100的8000号端口时,就是访问私有网络上的WEB服务器,当访问202.202.100的2001号端口时,就是访问私有网络上的FTP服务器,这样做可以达到节约IP地址的目的,但是会增加客户端的访问难度,至少,客户端在访问时需要申明端口号,关于一对多关系的静态NAT如何使用TCP套接字来完成访问可以参看演示: 使用静态NAT配置内部网络服务器提供对外服务能力。


理解并取证:网络地址翻译(NAT)-动态NAT工作原理

动态NAT需要在NAT路由器上定义一个公共网络的地址池,如下图9.54所示,有一段被定义的公共IP地址池分别是202.202.1.100-202.202.1.102;当私有网络上的主机192.168.2.2-192.168.2.4要访问公共网络上的主机202.202.2.100时,NAT会动态的将每个私有网络专用IP地址转换成公共IP地址池中的IP地址,然后去访问公共网络上的主机202.220.2.100,比如:192.168.2.2将被翻译成202.202.1.100;192.168.2.3将被翻译成202.202.1.101;192.168.2.4将被翻译成202.202.1.102;这种动态的NAT翻译,私有IP地址与公共IP地址成一对一的关系,事实上,并没有达到节约IP地址的目的,但是它对解决大型网络合并后,产生的重叠地址冲突是一种很好的解决方案,注意:动态NAT定义的公共地址池中IP地址的数量,应该和私有网络专用地址的数量相同,如果,公共地址池中IP地址的数量少于私有网络专用地址的数量,那么多余的私有网络专用地址将无法访问公共网络,因为公共地址池中的IP与私有专用IP的数量成一对一关系。如何配置动态NAT可以参看9.3.6 演示:动态NAT完成网络地址翻译。

075706901.png

理解并取证:网络地址翻译(NAT)-PAT工作原理

PAT(port addressTranslation 端口地址转换)它是属于NAT的一种,严格的讲,它属于动态NAT的一种类型,它产生的目标是在大量使用私有网络专用地址的企业网络中代理这些主机访问公共网络,比如:访问Internet。它的最大优势就是将企业网络内部使用的全部私有网络专用地址转换成一个公共IP地址,通常是NAT路由器外部接口的IP地址,然后代理它们去访问Internet,这样可以最大成程度节省访问Internet的地址成本,因为在使用PAT时整个企业访问公共网络只需要一个公共IP地址。但是现在最大的问题是:当发生众多私有网络主机同时访问Internet时,NAT路由器如何去识别不同的会话?

现在以两台使用私有网络专用IP的主机使用PAT访问Internet的情况,理解PAT的工作原理,以及如何去识别同一时刻众多主机产生的不同会话,如下图 9.55所示,当私有网络主机192.168.2.100需要访问202.202.2.100这台公共网络上的主机的WEB服务时,首先在192.168.2.100这台主机上会产生一个源IP地址是192.168.2.100;源端口是1051(通常随机生成);目标IP是202.202.2.100;目标端口是80的IP报文,当该报文送达NAT路由器后,NAT路由器将把原始报文中的源IP地址转换成自己的NAT外部接口上的IP地址202.202.1.1(当然,也可以自己定义另一个可供使用的公共IP地址),同时将原始报文中的源端口1051转换成另一个源端口1053;并且NAT路由器会记录这样一个转换的过程,方便会话返回时,可以在众多的会话中识别出,哪一个具体的会话属于某台具体的私有网络主机,因为在私有网络专用主机192.168.2.100发起对公共网络访问的同时,可能还有其它的私有网络专用主机192.168.2.200同时发起对公共网络的会话,而PAT的翻译过程,会将192.168.2.100和192.168.2.200的私有主机IP都翻译成202.202.1.1,那么,当会话从公共网络上返回时,NAT路由器怎么知道,哪个会话是192.168.2.100;哪个会话又是192.168.2.200的?当翻译了端口后,就使用了不同的TCP套接字,如下图所示,202.202.1.1+1053这就是192.168.2.100的会话,该会话会被返回给私有主机A;202.202.1.1+1054 这就是192.168.2.200的会话,该会话会被返回给私有主机B。关于PAT的配置可参看演示: NAT-PAT代理内部网络访问Internet。

075801971.png

注意:在使用PAT的过程中,目标IP地址和目标端口号码在通信的过程中将一直保持不变,将永远不被翻译,PAT翻译的始终是源IP地址和源端口号!



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

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

相关文章
【iOS开发】添加设备到 iOSTeam Provisioning Profile
如果你是 iOS个人开发者的话,那么一定知道,可以在 https://developer.apple.com/account/ios/device/deviceList.action 这个地方添加内测设备的UDID 管理Devices 有一个叫做 iOSTeam Provisioning Profile 的文件。
1020 0
Android获取移动设备IP地址
MainActivity如下: package cn.testip; import java.net.InetAddress; import java.
660 0
<转载>网络研讨会回顾 - Docker 企业版新增功能
最新版本的 Docker 企业版 (Docker EE 17.06) 允许组织将 Windows、Linux 和基于 Linux 的大型机应用程序现代化,整个过程几乎不会影响到业务的正常运行。此版本还围绕安全多租户和基于策略的自动化提供了很多高级功能,从而使组织可以管理更大规模的容器。
1416 0
8434
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载