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

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

现在全世界的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,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
17天前
|
安全 物联网 定位技术
2G网络和基站的撤销对物联网设备的影响
2G网络和基站的撤销对物联网设备的影响是多方面的,以下是对这一影响的详细分析:
2G网络和基站的撤销对物联网设备的影响
|
9天前
|
5G 网络安全 SDN
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
网络功能虚拟化(NFV)和软件定义网络(SDN):赋能5G网络灵活、智能演进的关键
33 3
|
9天前
|
传感器 物联网 人机交互
物联网:物联网,作为新一代信息技术的重要组成部分,通过智能感知、识别技术与普适计算等通信感知技术,将各种信息传感设备与互联网结合起来而形成的一个巨大网络,实现了物物相连、人物相连,开启了万物互联的新时代。
在21世纪,物联网(IoT)作为新一代信息技术的核心,正以前所未有的速度重塑生活、工作和社会结构。本文首先介绍了物联网的概念及其在各领域的广泛应用,强调其技术融合性、广泛的应用范围以及数据驱动的特点。接着,详细阐述了物联网行业的现状和发展趋势,包括政策支持、关键技术突破和应用场景深化。此外,还探讨了物联网面临的挑战与机遇,并展望了其未来在技术创新和模式创新方面的潜力。物联网行业正以其独特魅力引领科技发展潮流,有望成为推动全球经济发展的新引擎。
|
1月前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。
|
1月前
|
网络协议 C语言
C语言 网络编程(十四)并发的TCP服务端-以线程完成功能
这段代码实现了一个基于TCP协议的多线程服务器和客户端程序,服务器端通过为每个客户端创建独立的线程来处理并发请求,解决了粘包问题并支持不定长数据传输。服务器监听在IP地址`172.17.140.183`的`8080`端口上,接收客户端发来的数据,并将接收到的消息添加“-回传”后返回给客户端。客户端则可以循环输入并发送数据,同时接收服务器回传的信息。当输入“exit”时,客户端会结束与服务器的通信并关闭连接。
|
1月前
|
C语言
C语言 网络编程(八)并发的UDP服务端 以进程完成功能
这段代码展示了如何使用多进程处理 UDP 客户端和服务端通信。客户端通过发送登录请求与服务端建立连接,并与服务端新建的子进程进行数据交换。服务端则负责接收请求,验证登录信息,并创建子进程处理客户端的具体请求。子进程会创建一个新的套接字与客户端通信,实现数据收发功能。此方案有效利用了多进程的优势,提高了系统的并发处理能力。
|
1月前
|
C语言
C语言 网络编程(九)并发的UDP服务端 以线程完成功能
这是一个基于UDP协议的客户端和服务端程序,其中服务端采用多线程并发处理客户端请求。客户端通过UDP向服务端发送登录请求,并根据登录结果与服务端的新子线程进行后续交互。服务端在主线程中接收客户端请求并创建新线程处理登录验证及后续通信,子线程创建新的套接字并与客户端进行数据交换。该程序展示了如何利用线程和UDP实现简单的并发服务器架构。
|
2月前
|
安全 网络安全 开发者
探索Python中的装饰器:简化代码,增强功能网络安全与信息安全:从漏洞到防护
【8月更文挑战第30天】本文通过深入浅出的方式介绍了Python中装饰器的概念、用法和高级应用。我们将从基础的装饰器定义开始,逐步深入到如何利用装饰器来改进代码结构,最后探讨其在Web框架中的应用。适合有一定Python基础的开发者阅读,旨在帮助读者更好地理解并运用装饰器来优化他们的代码。
|
1月前
|
缓存 运维 监控
|
2月前
|
Java Spring XML
掌握面向切面编程的秘密武器:Spring AOP 让你的代码优雅转身,横切关注点再也不是难题!
【8月更文挑战第31天】面向切面编程(AOP)通过切面封装横切关注点,如日志记录、事务管理等,使业务逻辑更清晰。Spring AOP提供强大工具,无需在业务代码中硬编码这些功能。本文将深入探讨Spring AOP的概念、工作原理及实际应用,展示如何通过基于注解的配置创建切面,优化代码结构并提高可维护性。通过示例说明如何定义切面类、通知方法及其应用时机,实现方法调用前后的日志记录,展示AOP在分离关注点和添加新功能方面的优势。
39 0
下一篇
无影云桌面