热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nat技术,NAT技术是什么

转载自擒贼先擒王的博客NAT详解一、概述NAT英文全称是“NetworkAddressTranslation”,中文意思是“网络地址转换”,它是一个IETF(Internet


转载先从qinzei捕获的王的博客NAT的详细解说


一、概要NAT的英文全名是“网络地址转换”,中文意思是“互联网地址转换”,它是internetengineeringtaskforce (IETF )、 internet工程团队) )标准上,一个机构就是一个精力充沛的龙猫,是将内部的专用网络地址(IP地址)翻译成合法的网络IP地址的技术。 使用NAT,可以将使用私有地址的内部网络连接到互联网或其他IP网络。 NAT路由器在将内部网络的分组发送至公共网络时,在IP分组的报头中将私有地址转换为合法的IP地址。


RFC1918规定了三个独特的地址,用于作为专用内部网络。


a类: 10.0.0.0—10.255.255.25510.0.0/8


b类: 172.16.0.0—172.31.255.255172.16.0.0/12


c类: 192.168.0.0—192.168.255.255192.168.0.0/16


这三个专用地址本身可以路由,但公共网络上的路由器不会转发这三个专用地址的通信。如果将这些专用地址放入某个公司,内部计算机将与外部网络进行通信外部源地址是通过公司边界路由转换而来的公共网络IP地址,在某种意义上提高了内部网络的安全性。


二.分类


NAT有三种类型。


静态NAT (静态NAT ) (一对一) ) ) ) )。


将内部网络的专用IP地址转换为公共IP地址。 一对IP地址是一对一的,一直不变。


动态地址NAT(pooledNAT ) (多对多) )。


将内部网络的专用IP地址转换为公共IP地址时,IP地址是不确定和随机的。 所有被允许访问互联网的专用IP地址都可以随机转换为指定的有效IP地址。 这意味着,通过指定可转换的内部地址和使用哪个合法地址作为外部地址,可以进行动态NAT转换。 动态NAT在路由器上配置外联网IP地址池,内部有计算机需要与外部通信时,从地址池中动态取出外联网IP,将它们的对应关系绑定到NAT表。 在通信结束之后,释放所述外联网IP,并可用于其它内部IP地址转换。 这个DHCP租赁IP有相似之处。 ISP提供的合法IP地址稍少于网络中的计算机数量。 可以采用动态变换的方式。


网络地址端口转换网络地址端口转换端口对等(napt ) (多对一) ) ) ) ) ) ) ) )。


变更外出目的地数据包的发送源端口,进行端口变换,采用端口复用方式。 内部网络中的所有主机都可以通过共享一个合法的外部IP地址访问互联网,从而最大限度地节省IP地址资源。 它还可以隐藏网络中的所有主机,以有效避免来自互联网的攻击。 因此,目前网络上使用最多的是PAT规则。 这是最普通的NAT技术,是IPv4能维持到今天的最重要的理由之一。 它提供多对一的方式,对于多个内部网IP地址,边界路由可为他们分配外网IP,并使用外部与所述外网IP的不同端口通信。 NAPT与动态NAT不同,它将内部连接映射到外部网络中的单独IP地址,并将NAT设备选择的端口号添加到该地址。


NAPT是最常见的转换方式,在HomeGW中也主要使用。 有SNAT和DNAT两种转换方式。 源NAT(sourceNAT,SNAT ) :更改数据包的源地址。 源NAT更改第一个包的源地址,并始终在将包发送到网络之前完成。 数据包伪装是SNAT的例子。 目的NAT(destinationNAT,DNAT ) :变更数据包的目的地地址。 与DNAT相反,Destination NAT是修改初始数据(如负载平衡、端口转发和透明代理)的目标地址,属于DNAT。 Basic NAT是一种将一组IP地址映射到另一组IP地址的方法,映射过程在IP中继设备上进行,对用户完全透明。 NAPT很复杂,它将许多(不能太多) IP地址连同TCP/UDP端口号映射到单独的IP地址和端口号。 无论是Basic NAT还是NAPT,它都提供了一种将内部专用地址转换为全球唯一可用于公共网络的IP地址的方法。


对于网络地址转换技术来说,最重要的一点是在构成NAT的路由器上形成了NAT转换表,因为这个转换表的形成是非常重要的。 配置NAT后,如果能制作正确的转换表,即使我们的工作成功了。


3、NAT三个方向: NAT在outside口有效,均需要在inside口先路由,在outside口先NAT。


ip nat inside source:


将内部本地地址转换为内部全局地址; 在数据方向inside-outside、outside上执行转换;


ip nat inside destination:


将内部全局地址转换为内部本地地址; 数据方向为outside-inside,在outside中执行转换


ip nat outside source:


将外部全局地址转换为外部本地地址; 数据方向outside-

>inside,在outside上执行转换;
NAT的应用分类:
ip nat source:
(1) 静态 nat的映射:永远一个ip对应另外一个ip。
ip nat inside source static A.B.C.D A.B.C.D
(2) 动态 nat的映射:每次一个IP会对应另外一个公网的IP;
ip nat inside source list 2 pool pcdjc
(3) 动态PAT映射:pool里面只有一个IP。
ip nat inside source list 2 pool pcdjc overload
(4) 静态PAT映射:
ip nat inside source list 3 interface fastEthernet 0/0 overload
ip nat inside destination:
(5) tcp负载均衡,外网主动发起流量访问内网服务器。只用动态,没有静态。
ip nat inside destination list 10 pool feng
ip nat outside source:
当两端同时做nat既inside和outside需要同时翻译并出现地址冲突的时候需要用outside source和其他同时命令同时实现。

四、工作原理

了解原理之前先了解下NAT 术语。

在配置了 NAT 的路由器上,可以把整个网络分成两部分:内部网络和 外部网络。

NAT 技术中有四个术语:

内部本地地址(Inside Local):内网中设备所使用的IP地址内部全局地址(Inside Global):对于外部网络来说,局域网内部主机所表现的 IP 地址。外部本地地址(Outside Local):外部网络主机的真实地址。外部全局地址(Outside Global):对于内部网络来说,外部网络主机所表现的 IP 地址。外网设备所使用的真正的地址。

local 、global 是相对于端口状态说的,local是inside部分可以被路由的,global是outside部分可以被路由的。

网络地址转换常常和代理服务搞混,但是它们之间有明确的不同。NAT 对源和目的计算机都是透明的。没有任何一方会意识到它正在和第三方设备打交道。但是代理服务却不是透明的。源计算机知道它正向代理服务器发起一个请求,而且你还必须进行配置才能这样做。目的计算机会认为代理服务器就是与它直接通信的源计算机。还有,代理服务通常工作在 OSI 参考模型的第 4 层 (传输层) 或更高,而 NAT 工作在第 3 层 (网络层)。由于代理服务工作在更高层,所以通常它将比 NAT 要慢。

NAT 工作在 OSI 参考模型的网络层 (第3层) 是有道理的,因为路由器就工作在这一层:

NAT设备维护一个状态表,用来把非法的IP地址映射到合法的IP地址上去。每个包在NAT设备中都被翻译成正确的IP地址,发往下一级,这意味着给处理器带来了一定的负担。但对于一般的网络来说,这种负担是微不足道的。在运行NAT的路由器中,当数据包被传送时,NAT可以转换数据包的IP地址和TCP/UDP数据包的端口号。设置NAT功能的路由器至少要有一个Inside(内部)端口和一个Outside(外部)端口。内部端口连接内网的用户,外部端口一般连接到Internet。当IP数据包离开内部网络时,NAT负责将内网IP源地址(通常是专用地址)转换为合法的公共IP地址。当IP数据包进入内网时,NAT将合法的公共IP目的地址转换为内网的IP源地址。

NAT的基本工作原理是:当私有网主机和公共网主机通信的IP包经过NAT网关时,将IP包中的源IP或目的IP在私有IP和NAT的公共IP之间进行转换。

当内部网络中的一台主机想传输数据到外部网络时,它先将数据包传输到NAT路由器上,路由器检查数据包的报头,获取该数据包的源IP信息,并从它的NAT映射表中找出与该IP匹配的转换条目,用所选用的内部全局地址(全球唯一的IP地址)来替换内部局部地址,并转发数据包。

当外部网络对内部主机进行应答时,数据包被送到NAT路由器上,路由器接收到目的地址为内部全局地址的数据包后,它将用内部全局地址通过NAT映射表查找出内部局部地址,然后将数据包的目的地址替换成内部局部地址,并将数据包转发到内部主机。

其实主要就是 修改 IP 数据包中的源 IP 地址,或目的 IP 地址。主要目的是把 RFC1918所提议的私有地址转变成在 Internet 上可路由的公有合法地址。对于某些有限的应用(如 DNS、 FTP 等),它也可以修改 IP 数据包有效载荷中的地址。由于应用的复杂性, NAT 目前支持的应用有限,当然,如果需要,完全可以针对新的应用做相应的开发工作。

总体来说,NAT进行地址转换的过程就是“本地地址”与“全局地址”之间的转换过程,无论数据包是从内部网络发往外部网络,还是从外部网络发往内部网络。不同的只是本地地址和全局地址所对应的网络不同,以及数据包重新封装的源和目的地址不同。具体如图所示。

这个过程是通过NAT中的本地址与全局地址映射条目来实现的,所以事先要在NAT路由器上配置这样的映射条目。

5、NAT中的转换方式: 从内网中设备上发出的IP包是以“inside local address”作为源地址,以“outside local address”作为目的地址。当数据包到达NAT设备的“inside”接口后,地址分别被翻译成“inside global address”和“outside global address”并从“outside”接口送出。外网设备上发出的IP包以“outside global address”作为源地址,以“inside global address”作为目的地址。当数据包到达NAT设备的“outside”接口后,地址分别被翻译成“outside local address”和“inside local address”并从“inside”接口送出。

当内部网络用户访问外部网络时,所进行的是“内部本地地址”和“内部全局地址”之间的转换。
在NAT路由器接收到来自内部网络主机发送的数据包时,其源IP地址(SA)为“内部本地地址”,目的IP地址(DA)为“外部本地地址”。当数据包被转发到外部网络时,数据包的源IP地址(SA)就会转变为“内部全局地址”,而目的IP地址(DA)被转变为“外部全局地址”。也就是把数据包的所有源IP地址(SA)和目的IP地址(DA)全部由本地地址转换为全局地址。如图6-9上部分数据包IP地址转换示意图。
相反,当外部网络用户访问内部网络时,所进行的是“外部本地地址”和“外部全局地址”之间的转换。
在NAT路由器接收到来自外部网络主机发送的数据包时,其源IP地址(SA)就是“外部全局地址”,目的IP地址(DA)就是“内部全局地址”。相当于由内部网络向外部网络发送数据包时数据包中的源IP地址(SA)和目的IP地址(DA)的互换。而当数据包被路由器转发到本地网络时,源IP地址(SA)被转变为“外部本地地址”,目的IP地址(DA)被转变为“内部本地地址”,也相当于由内部网络向外部网络发送数据包时数据包中的源IP地址(SA)和目的IP地址(DA)的互换。如图6-9下部分数据包IP地址转换示意图


推荐阅读
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • Linux入门教程第七课:基础命令与操作详解
    在本课程中,我们将深入探讨 Linux 系统中的基础命令与操作,重点讲解网络配置的相关知识。首先,我们会介绍 IP 地址的概念及其在网络协议中的作用,特别是 IPv4(Internet Protocol Version 4)的具体应用和配置方法。通过实际操作和示例,帮助初学者更好地理解和掌握这些基本技能。 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 近年来,BPM(业务流程管理)系统在国内市场逐渐普及,多家厂商在这一领域崭露头角。本文将对当前主要的BPM厂商进行概述,并分析其各自的优势。目前,市场上较为成熟的BPM产品主要分为两类:一类是综合型厂商,如IBM和SAP,这些企业在整体解决方案方面具有明显优势;另一类则是专注于BPM领域的专业厂商,它们在特定行业或应用场景中表现出色。通过对比分析,本文旨在为企业选择合适的BPM系统提供参考。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 双因子安全机制与WiFi万能钥匙的较量:解析其背后的对抗策略
    几乎所有智能手机用户都熟悉类似“WiFi万能钥匙”的应用程序。这款应用凭借庞大的下载量,不仅在各大应用商店中占据显著位置,还长期稳居下载排行榜前列。然而,随着双因子认证等高级安全机制的普及,这类应用面临着前所未有的挑战。本文将深入探讨双因子安全机制与WiFi万能钥匙之间的对抗策略,分析其背后的技术原理和安全风险。 ... [详细]
  • 本文首先介绍了BGP的基本概念和基础知识,详细解析了BGP的不同邻居类型及其作用。接着,文章对BGP的报文格式、状态机以及路由宣告原则进行了深入探讨,包括本地宣告、引入宣告和缺省路由的处理方法。通过这些内容,读者可以全面了解BGP路由协议的核心机制及其在实际网络中的应用。 ... [详细]
author-avatar
wwhh47123_829
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有