【技术分享】企业网必不可少的NAT技术

NAT是一种地址转换技术,它可以将IP数据报文头中的IP地址转换为另一个IP地址,并通过转换端口号达到地址重用的目的。NAT作为一种缓解IPv4公网地址枯竭的过渡技术,由于实现简单,得到了广泛应用。

NAT解决了什么问题?

随着网络应用的增多,IPv4地址枯竭的问题越来越严重。尽管IPv6可以从根本上解决IPv4地址空间不足问题,但目前众多网络设备和网络应用大多是基于IPv4的,因此在IPv6广泛应用之前,使用一些过渡技术(如CIDR、私网地址等)是解决这个问题的主要方式,NAT就是这众多过渡技术中的一种。

当私网用户访问公网的报文到达网关设备后,如果网关设备上部署了NAT功能,设备会将收到的IP数据报文头中的IP地址转换为另一个IP地址,端口号转换为另一个端口号之后转发给公网。在这个过程中,设备可以用同一个公网地址来转换多个私网用户发过来的报文,并通过端口号来区分不同的私网用户,从而达到地址复用的目的。

早期的NAT是指Basic NAT,Basic NAT在技术上实现比较简单,只支持地址转换,不支持端口转换。因此,Basic NAT只能解决私网主机访问公网问题,无法解决IPv4地址短缺问题。后期的NAT主要是指网络地址端口转换NAPT(Network Address Port Translation),NAPT既支持地址转换也支持端口转换,允许多台私网主机共享一个公网IP地址访问公网,因此NAPT才可以真正改善IP地址短缺问题。

NAT的类型

根据NAT转换是对报文中的源地址进行转换还是对目的地址进行转换,NAT可以分为源NAT、目的NAT和双向NAT,下面我们分别介绍这三种NAT类型。

源NAT

源NAT在NAT转换时,仅对报文中的源地址进行转换,主要应用于私网用户访问公网的场景。当私网用户主机访问Internet时,私网用户主机发送的报文到达NAT设备后,设备通过源NAT技术将报文中的私网IPv4地址转换成公网IPv4地址,从而使私网用户可以正常访问Internet。

根据转换时是否同时转换源端口号,源NAT可以细分为如下几种类型,详见下图。

图片


源NAT分类

目的NAT

目的NAT在NAT转换时,仅对报文中的目的地址和目的端口号进行转换,主要应用于公网用户访问私网服务的场景。当公网用户主机发送的报文到达NAT设备后,设备通过目的NAT技术将报文中的公网IPv4地址转换成私网IPv4地址,从而使公网用户可以使用公网地址访问私网服务。

根据转换前后的地址是否存在一种固定的映射关系,目的NAT可以细分为如下几种类型,详见下图。

图片


目的NAT分类

双向NAT

双向NAT指的是在转换过程中同时转换报文的源信息和目的信息。双向NAT不是一个单独的功能,而是源NAT和目的NAT的组合。双向NAT是针对同一条流,在其经过设备时同时转换报文的源地址和目的地址。双向NAT主要应用在同时有外网用户访问内部服务器和私网用户访问内部服务器的场景。

STUN中定义的NAT类型

在STUN标准中,根据私网IP地址和端口到NAT出口的公网IP地址和端口的映射方式,把NAT分为如下四种类型,详见下图。

图片


STUN中定义的NAT类型

  • Full Cone NAT(完全锥型NAT)所有从同一个私网IP地址和端口(IP1:Port1)发送过来的请求都会被映射成同一个公网IP地址和端口(IP:Port)。并且,任何外部主机通过向映射的公网IP地址和端口发送报文,都可以实现和内部主机进行通信。这是一种比较宽松的策略,只要建立了私网IP地址和端口与公网IP地址和端口的映射关系,所有的Internet上的主机都可以访问该NAT之后的主机。

  • Restricted Cone NAT(限制锥型NAT)所有从同一个私网IP地址和端口(IP1:Port1)发送过来的请求都会被映射成同一个公网IP和端口号(IP:Port)。与完全锥型NAT不同的是,当且仅当内部主机之前已经向公网主机发送过报文,此时公网主机才能向私网主机发送报文。

  • Port Restricted Cone NAT(端口限制锥型NAT)与限制锥型NAT很相似,只不过它包括端口号。也就是说,一台公网主机(IP2:Port2)想给私网主机发送报文,必须是这台私网主机先前已经给这个IP地址和端口发送过报文。

  • Symmetric NAT(对称NAT)所有从同一个私网IP地址和端口发送到一个特定的目的IP地址和端口的请求,都会被映射到同一个IP地址和端口。如果同一台主机使用相同的源地址和端口号发送报文,但是发往不同的目的地,NAT将会使用不同的映射。此外,只有收到数据的公网主机才可以反过来向私网主机发送报文。这和端口限制锥型NAT不同,端口限制锥型NAT是所有请求映射到相同的公网IP地址和端口,而对称NAT是不同的请求有不同的映射。

NAT是如何工作的?

根据前面的分类,我们分别从源NAT和目的NAT中各选一种NAT为代表,介绍其工作原理。其他类型的NAT虽然在转换时,转换的内容有细微差别,但是工作原理都相似,不再重复介绍。此外,双向NAT是源NAT和目的NAT的组合,双向NAT的工作原理也不再重复介绍。

NAPT工作原理

NAPT在进行地址转换的同时还进行端口转换,可以实现多个私网用户共同使用一个公网IP地址上网。NAPT根据端口来区分不同用户,真正做到了地址复用。

图片


NAPT工作原理示意图

当Host访问Web Server时,设备的处理过程如下:

  1. 设备收到Host发送的报文后查找NAT策略,发现需要对报文进行地址转换。

  2. 设备根据源IP Hash算法从NAT地址池中选择一个公网IP地址,替换报文的源IP地址,同时使用新的端口号替换报文的源端口号,并建立会话表,然后将报文发送至Internet。

  3. 设备收到Web Server响应Host的报文后,通过查找会话表匹配到步骤2中建立的表项,将报文的目的地址替换为Host的IP地址,将报文的目的端口号替换为原始的端口号,然后将报文发送至Intranet。

NAT Server工作原理

使用NAT Server时,需要先在设备上配置公网地址和私网地址的固定映射关系。配置完成后,设备将会生成Server-Map表项,存放公网地址和私网地址的映射关系。该表项将一直存在除非NAT Server的配置被删除。

图片


NAT Server工作原理示意图

内部Server的私网IPv4地址为192.168.1.2/24,对外的公网IPv4地址为1.1.1.10,端口号都为80,它们之间的映射关系在设备上已提前配置好。当Host访问Server时,设备的处理过程如下:

  1. 设备收到Internet上用户访问1.1.1.10的报文的首包后,查找并匹配到Server-Map表项,将报文的目的IP地址转换为192.168.1.2。

  2. 设备建立会话表,然后将报文发送至Intranet。

  3. 设备收到Server响应Host的报文后,通过查找会话表匹配到步骤2中建立的表项,将报文的源地址替换为1.1.1.10,然后将报文发送至Internet。

  4. 后续Host继续发送给Server的报文,设备都会直接根据会话表项的记录对其进行转换,而不会再去查找Server-map表项。

如何使用NAT?

前面已经介绍了,不同的NAT类型适用于不同的应用场景。下面介绍几种典型的NAT应用,帮助用户使用NAT。

私网用户通过NAPT访问Internet

在许多小区、学校和企业的私网规划中,由于公网地址资源有限,通常给私网用户分配私网IPv4地址。此时,可以配置源NAT来实现私网用户访问Internet。用户可以根据自己拥有的公网IPv4地址的个数,选择使用NAPT或者Easy IP。

当用户拥有的公网IP地址个数较多时,配置了NAT设备出接口的IP地址和其他应用之后,还有可用的空闲公网IP地址时,可以选择NAPT。NAPT使用地址池内的IPv4地址作为私网主机转换后的公网IPv4地址。如下图所示,在设备上配置NAPT,实现私网主机访问Internet功能。

图片


私网用户通过NAPT访问Internet

私网用户通过Easy IP访问Internet

当用户拥有的公网IPv4地址个数较少时,配置了NAT设备出接口的IPv4地址和其他应用之后,没有可用的空闲公网IPv4地址时,可以选择Easy IP。Easy IP使用出接口的IPv4地址作为私网主机转换后的公网IPv4地址。如下图所示,在设备上配置Easy IP,实现私网主机访问Internet功能。

图片


私网用户通过Easy IP访问Internet

公网用户通过NAT Server访问私网服务器

在某些场合,私网中有一些服务器需要向公网用户提供服务,比如私网中部署的一些Web服务器、FTP服务器等,NAT支持这样的应用,此时可以配置NAT Server来实现公网用户访问私网服务器。如下图所示,在设备上配置NAT Server,固定“公网IP地址+端口号”与“私网IP地址+端口号”间的映射关系,实现公网主机通过该映射关系访问私网服务器功能。

图片


公网用户通过NAT Server访问私网服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【lesson11】表的约束(4)

文章目录 表的约束的介绍唯一键约束测试建表插入测试建表插入测试建表插入测试修改表插入测试 表的约束的介绍 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保…

关于学习计算机的心得与体会

也是隔了一周没有发文了,最近一直在准备期末考试,后来想了很久,学了这么久的计算机,这当中有些收获和失去想和各位正在和我一样在学习计算机的路上的老铁分享一下,希望可以作为你们碰到困难时的良药。先叠个甲&#xf…

Appium 自动化自学篇 —— 初识Appium自动化!

Appium 简介 随着移动终端的普及,手机应用越来越多,也越来越重要。而作为测试 的我们也要与时俱进,努力学习手机 App 的相关测试,文章将介绍手机自动化测试框架 Appium 。 那究竟什么是 Appium 呢? 接下来我们一起来学习PythonS…

分布式环境认证和授权-基于springboot+JWT+拦截器实现-实操+源码下载

1、功能概述? 1、当用户登录的时候,将用户的信息通过JWT进行加密和签名,并将JWT产生了token信息保存到当前浏览器的localStoragee中,即本地存储中。 2、当用户登录成功后,访问其他资源的时候,程序从localStorage中获…

二蛋赠书十一期:《TypeScript入门与区块链项目实战》

前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…

Backtrader 文档学习-Quickstart

Backtrader 文档学习-Quickstart 0. 前言 backtrader,功能十分完善,有完整的使用文档,安装相对简单(直接pip安装即可)。 优点是运行速度快,支持pandas的矢量运算;支持参数自动寻优运算&#x…

DNS漫游指南:从网址到IP的奇妙之旅

当用户在浏览器中输入特定网站时发生的整个端到端过程可以参考下图 1*4vb-NMUuYTzYBYUFSuSKLw.png 问题: 什么是 DNS? 答案 → DNS 指的是域名系统(Domain Name System)。DNS 是互联网的目录,将人类可读的域名&#…

cobalt strike基础使用

coblat strike使用 服务搭建 首先将server端文件放进kali中 对其赋权 执行时需要root权限 设置ip 启动服务 ./teamserver 10.4.7.138 123456回到win11启动cs,输入刚才配置的信息 上线方式 木马(exe上线) 查看一下开放的端口 添加监听 …

最新科研成果:在钻石中存储多比特数据,实现25GB数据密度

近日,纽约城市大学(CUNY)的研究人员已经成功地利用钻石原子结构中的小型氮缺陷作为“颜色中心”来写入数据进行存储(然后是检索)。这项发表在《自然纳米技术》上的技术允许通过将数据编码为多个光频率(即颜…

T5论文个人记录

参考&转载自: 介绍Google推出的大一统模型—T5_谷歌大模型_深度之眼的博客-CSDN博客 T5 和 mT5-CSDN博客 T5:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(万字长文略解T5)_t5论文…

tomcat软件部署

1.tomcat 2.tomcat功能组件 3.请求过程 4.tomcat部署 一.tomcat tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,却不如nginx,apache功能强大,通常作为 Servlet 和 JSP容器,单…

2023 CCF中国软件大会(CCF ChinaSoft)“软件定义汽车”论坛成功召开

2023年12月1日下午,2023年度CCF中国软件大会“软件定义汽车”论坛成功召开。 本次论坛由华东师范大学蒲戈光教授、武汉光庭信息技术股份有限公司朱敦尧董事长以及华东师范大学张越龄副教授联合组织举办。论坛主要关注汽车的智能网联化与电动化的融合,包括…

scala方法与函数

定义方法定义函数方法和函数的区别scala的方法函数操作 1.9 方法与函数 1.9.1 定义方法 定义方法的基本格式是: def 方法名称(参数列表):返回值类型 方法体 def add(x: Int, y: Int): Int x y println(add(1, 2)) // 3 //也…

揭秘高效大型语言模型:技术、方法与应用展望

近年来,大型语言模型(LLMs)在自然语言处理领域取得了显著的进展,如GPT-series(GPT-3, GPT-4)、Google-series(Gemini, PaLM), Meta-series(LLAMA1&2), BLOOM, GLM等模型在各种任务中展现出惊人的能力。然而,随着模…

初学python的体会心得20字,初学python的体会心得2000

大家好,小编来为大家解答以下问题,学了python的心得体会200字,初学python的体会心得20字,现在让我们一起来看看吧! 本学期,我们学习了杨老师的《python语言程序设计》这门课程,其实早在大一期间…

人工智能导论习题集(1)

第二章:知识表示 题1题2题3题4题5 题1 题2 题3 题4 题5

HarmonyOS创建一个page并实现界面跳转(JavaScript)

上文 HarmonyOS创建JavaScript(类 Web开发模式)项目中 我们接触了这咋类Web开发模式 并创建了一个项目 之前 我们 ArkTS 开发模式的项目 resources目录 下的 base目录下的 profile目录下的 main_pages.json中存放了 我们page目录的配置 但是 我们javaScript模式 下 好像没有哦 …

DataFunSummit:2023年数据治理在线峰会-核心PPT资料下载

一、峰会简介 数据治理(Data Governance)是组织中涉及数据使用的一整套管理行为。由企业数据治理部门发起并推行,关于如何制定和实施针对整个企业内部数据的商业应用和技术管理的一系列政策和流程。 数据治理是一个通过一系列信息相关的过程…

披荆斩棘的「矿区无人驾驶」,能否真正打开千亿级市场?

随着2022年备受瞩目的台泥句容矿无人驾驶运输项目硬核落地,以及相关科技公司开放该矿24小时无人矿卡生产运营直播以证明其项目并非在演示,2023年全国开启了大规模矿区无人驾驶商业化落地,堪称矿区无人驾驶元年。虽然我国矿区无人驾驶市场渗透…

zookeeper集群介绍

一个leader,多个follower,组成的集群 集群中只要有半数以上得节点存活,zookeeper集群就能正常服务 顺序一致性: 来自同一个client的更新请求按其发送顺序依次执行 原子性: 更新操作要么成功要么失败, 没有…