NAT:地址转换技术

为什么会引入NAT?

NAT(网络地址转换)的引入主要是为了解决两个问题

  1. IPv4地址短缺:互联网快速发展,可用的公网IP地址越来越少。
  2. 网络安全:需要一种方法来保护内部网络不被直接暴露在互联网上。

IPv4 & IPv6

IPv4使用32位地址,理论上可以提供约43亿个唯一地址

a) 私有地址范围:
10.0.0.0 到 10.255.255.255 (10/8 前缀)
172.16.0.0 到 172.31.255.255 (172.16/12 前缀)
192.168.0.0 到 192.168.255.255 (192.168/16 前缀)
b) 回环地址:127.0.0.0 到 127.255.255.255

IPv6使用128位地址,提供了一个极其庞大的地址空间,约340万亿亿亿亿个地址。IPv6的地址空间如此之大,以至于即使给地球上的每一粒沙子分配一个IPv6地址,也只会用掉很小一部分地址空间。

为什么不能引入IPv6来解决IP不够用?

IPv6的引入是为了从根本上解决IPv4地址短缺的问题。然而,尽管IPv6已经存在多年,但它并没有完全取代IPv4

因为IPv6的全面部署是一个缓慢的过程。网络设备、操作系统、应用程序都需要更新以支持IPv6。这个过程耗时很长,且成本较高。

虽然IPv6最终会解决地址短缺问题,但在完全过渡期间,NAT仍然扮演着重要角色:

  • 它允许组织在现有IPv4基础设施上继续运营。
  • 提供了IPv4到IPv6过渡的缓冲时间。
  • 在混合环境中,帮助IPv4和IPv6网络互相通信。

总之,虽然IPv6是长期解决方案,但NAT在当前和可预见的未来仍然非常重要,它为向IPv6的平滑过渡提供了必要的支持。/

NAT是什么?

网络地址转换 (NAT) 是一种将 IP 地址空间映射到另一个 IP 地址空间的方法,方法是在数据包通过流量路由设备传输数据包时修改数据包的 IP 标头中的网络地址信息。但无法路由网络的地址空间。面对 IPv4 地址耗尽,它已成为节省全局地址空间的流行且必不可少的工具。NAT 网关的一个 Internet 可路由 IP 地址可用于整个专用网络。 

NAT就像是一个翻译官,负责在内部网络和外部网络之间转换IP地址。想象一下,NAT是一个办公室的前台接待:

  • 当内部员工(内网设备)需要与外界通信时,前台会用公司的地址(公网IP)代替员工的个人地址(内网IP)。
  • 当外部人员(互联网)想要联系公司内部时,前台会将请求转发给相应的员工(内网设备)。

NAT可以干什么?

NAT有几个重要的功能:

a) 节省IP地址:允许多台内网设备共享一个公网IP地址。

b) 增强安全性:隐藏内部网络结构,减少直接攻击的可能。

c) 简化网络管理:可以更灵活地管理内部网络,而不影响外部通信。

d) 实现负载均衡:可以将incoming的流量分配到不同的内部服务器。

总的来说,NAT就像是网络世界的一个智能门卫,它既能帮助解决地址短缺的问题,又能提高网络的安全性和灵活性。


NAT mapping vs NAT filtering

NAT Mapping(NAT映射)

NAT mapping 定义了内部网络地址和端口如何映射到外部网络地址和端口。

主要类型包括:

a) Static (静态映射):

  • 一对一映射,内部IP总是映射到同一个外部IP。
  • 例如:内部IP 192.168.1.10 永远映射到外部IP 203.0.113.5。

b) Dynamic (动态映射):

  • 从一个IP池中动态分配外部IP。
  • 例如:内部IP可能在不同时间映射到不同的外部IP。

c) Port Address Translation (PAT):

  • 多个内部IP共享一个外部IP,通过修改端口号来区分不同的连接。
  • 这是最常见的形式,也称为NAT overload。

NAT Filtering(NAT过滤)

NAT filtering 决定了如何处理进入内部网络的数据包,主要关注安全性。

主要类型包括:

a) Endpoint-Independent Filtering:

  • 只要内部主机已经发起了连接,就允许任何外部主机向内部主机发送数据包。
  • 最宽松的过滤方式。

b) Address-Dependent Filtering:

  • 只允许内部主机曾经通信过的外部IP地址发送数据包回内部网络。
  • 提供了一定程度的安全性。

c) Address and Port-Dependent Filtering:

  • 最严格的过滤方式。
  • 只允许内部主机曾经通信过的特定外部IP和端口组合发送数据包回内部网络。

  1. NAT Mapping:
    • Static: 固定的一对一映射
    • Dynamic: 动态分配外部IP
    • PAT (Port Address Translation): 多个内部IP共享一个外部IP,通过端口区分
  2. NAT Filtering:
    • Endpoint-Independent: 允许任何外部主机发送数据包
    • Address-Dependent: 只允许已知IP地址发送数据包
    • Address and Port-Dependent: 只允许已知IP和端口组合发送数据包

主要区别


NAT 的类型

NAT可以分为三种类型:Source NAT、Destination NAT和Bidirectional NAT。具体取决于数据包的源或目标的IP地址是否被转换,这些是NAT(网络地址转换)的不同实现方式。

总结

  • SNAT主要用于内网访问外网。如:员工A(IP:192.168.1.15)想要访问 www.example.com(IP:93.184.216.34)
  • DNAT主要用于外网访问内网特定服务。如:外部用户想访问公司的网站 www.mycompany.com(指向203.0.113.10)
  • BiNAT用于解决复杂网络环境中的地址冲突。如:公司A的员工(IP:192.168.1.10)需要访问公司B的服务器(IP:192.168.1.20)

Source NAT (SNAT)

  • 定义:修改数据包的源IP地址。
  • 主要用途:允许私有网络中的设备访问互联网。
  • 工作原理:
    • 当内部设备发送数据包到外网时,SNAT将源IP地址从私有IP改为公网IP
    • 返回的数据包会自动被转换回原始的私有IP地址。
  • 优点:隐藏了内部网络结构,提高安全性。

示例:内网PC(192.168.1.10)访问网站时,路由器将源地址改为其公网IP(203.0.113.1)。

Destination NAT (DNAT)

  • 定义:修改数据包的目标IP地址。
  • 主要用途:允许外部网络访问内部网络中的特定服务。
  • 工作原理:
    • incoming数据包的目标地址从公网IP改为内网IP
    • 对应的回复数据包会自动被转换回公网IP。
  • 优点:可以在不暴露整个内网的情况下,提供特定的内部服务。

示例:外部请求访问Web服务器时,路由器将目标地址从公网IP(203.0.113.1:80)改为内网服务器IP(192.168.1.100:80)。

Bidirectional NAT (BiNAT)

目的: BiNAT主要用于连接两个使用重叠IP地址空间的网络,例如两个都使用192.168.1.x私有地址范围的公司网络。

BiNAT的主要优点是

  • 允许有重叠IP地址的网络进行通信
  • 适用于网络合并或VPN连接的场景
  • 提供了额外的安全层,因为外部网络无法直接看到内部网络结构

工作原理:在两个使用重叠IP地址空间的网络之间进行通信,同时执行源NAT和目标NAT。

  • 数据流向:对outgoing流量执行SNAT,对incoming流量执行DNAT。
    • 从网络A到网络B:
      • 源IP被转换(类似SNAT)
      • 目标IP被转换(类似DNAT)
    • 从网络B到网络A:
      • 同样进行源IP和目标IP的双向转换

Bidirectional NAT的工作原理示例

示例:两个使用相同私有IP范围(如192.168.1.x)的公司网络需要合并或通过VPN连接时

  1. 数据从网络A(192.168.1.10)发送到网络B(192.168.1.20)。
  2. 当数据包经过BiNAT设备时:
    • 源IP从192.168.1.10转换为10.0.0.1
    • 目标IP从192.168.1.20转换为10.0.0.2
  3. 当数据包进入网络B时:
    • 源IP从10.0.0.1转换为临时分配的IP 192.168.1.200
    • 目标IP从10.0.0.2转换回原始的192.168.1.20

这个过程允许两个使用相同私有IP地址范围的网络进行通信,同时避免了地址冲突。返回的数据包会经历相反的转换过程。

  • SRC(Source)指的是数据包的发送方或起始点的IP地址。
  • DST(Destination)指的是数据包的接收方或目标的IP地址。


NAT 的实现类型

  • 静态NAT:一对一的固定映射。
  • 动态NAT:从IP池中动态分配地址。
  • PAT/NAPT:多个内部IP共享一个公网IP,通过端口区分。

1. 静态NAT(Static NAT)

  • 定义:一对一的固定映射,内部IP地址与外部IP地址永久对应。
  • 用途:通常用于需要从外网访问的内部服务器。
  • 优点:配置简单,易于管理。
  • 缺点:需要为每个内部主机分配一个公网IP,不节省IP地址。

2. 动态NAT(Dynamic NAT)

  • 定义:从一个公网IP地址池中动态分配地址给内部主机。
  • 用途:适用于内部主机数量少于公网IP数量的情况。
  • 优点:比静态NAT更灵活,可以在多个内部主机间共享公网IP。
  • 缺点:仍然需要相当数量的公网IP,可能在高峰时段耗尽IP池。

3. NAPT (网络地址端口转换)

  • 定义:NAPT不仅转换IP地址,还转换端口号。它允许多个内网设备共享同一个公网IP地址,通过不同的端口号来区分不同的连接。
  • 用途:最常见的NAT实现,广泛用于家庭和小型办公室网络。
  • 优点:极大地节省公网IP地址,一个公网IP可以服务成百上千的内部主机。
  • 缺点:可能在某些应用程序中造成兼容性问题,特别是那些依赖特定端口的应用。
  •  3.1 对称NAT
    • 为每个内部连接创建一个唯一的外部映射。即使是相同的内部IP:端口对,如果目标不同,外部映射也会不同。
    3.2 锥形NAT
    • 完全锥形:一旦内部地址(iAddr:iPort)映射到外部地址(eAddr:ePort),所有发自iAddr:iPort的包都经由eAddr:ePort向外发送。任何外部主机都可以通过向eAddr:ePort发送包到达iAddr:iPort。
    • 受限锥形:类似于完全锥形,但仅允许iAddr:iPort之前发送过数据的外部主机通过eAddr:ePort到达iAddr:iPort。
    • 端口受限锥形:比受限锥形更严格,仅允许iAddr:iPort之前发送过数据的特定外部主机:端口组合通过eAddr:ePort到达iAddr:iPort。

补充说明

  • 基础NAT主要关注IP地址的转换,而NAPT则同时处理IP地址和端口号的转换。
  • 锥形NAT通常更有利于P2P应用和某些网络游戏,因为它们允许特定类型的入站连接。
  • 对称NAT提供了最高级别的安全性,但可能会影响某些应用程序的正常运行,尤其是那些依赖入站连接的应用。

NAT Server

  1. NAT服务器的作用: NAT服务器位于内部网络和外部网络(互联网)之间,负责转换IP地址和端口号,使得内部网络的设备能够与外部网络通信。
  2. 地址转换:
    • 内部服务器的IP是192.168.1.2(私有IP地址)
    • 外部访问者使用7.7.7.7(公网IP地址)来访问内部服务器
  3. 端口映射:
    • 外部访问者使用端口3535
    • 内部服务器实际使用端口80(通常是Web服务)
  4. 服务器映射表(Server Mapping Table):
    • 显示了NAT如何将外部请求映射到内部服务器
    • 对于任何源IP(S-IP: Any),从外部1.1.1.10:80来的TCP请求会被转发到内部的192.168.1.2:80
  5. 会话表(Session Table):
    • 记录了当前活跃的连接
    • 显示从7.7.7.7:3535来的TCP连接被映射到1.1.1.10:80,然后再转发到内部的192.168.1.2:80
  6. 双向通信: NAT服务器通过维护这些映射关系,确保了内外网络之间的双向通信可以正常进行。

这个NAT配置允许外部用户通过公网IP和特定端口访问内部的Web服务器,同时保护了内部网络的结构和真实IP地址。这是端口转发的一个典型应用,常用于允许外部访问内部托管的服务,如网站、游戏服务器等。


NAT实现的应用

如:智能家居系统,远程办公访问,多人游戏主机服务器,个人博客网站

Port forwarding

端口转发:端口转发是 NAT 的一种实现,当数据包通过网络网关(如路由器或防火墙)时,它将通信请求从一个地址和端口号组合转发到另一个地址和端口号组合。此技术最常用于使在专用网络上的主机上运行的应用程序服务可供公用网络(如 Internet)上的主机使用。正如设备需要 IP 才能在网络中被识别一样,设备上运行的服务(如 SMTP 或 FTP)也需要被识别以启用外部通信。端口号有助于识别这些服务,端口转发是使服务可供公共网络上的主机使用的技术。每当服务需要通信时,端口号都有助于识别设备上的正确目标/源,并有助于进行适当的数据传输

例子:IT支持远程访问

  • 远程员工通过互联网发起VPN连接到公司的公网IP(203.0.113.1)和VPN端口(1194)。
  • 公司路由器接收到VPN请求,使用NAT和端口转发。
  • 路由器将VPN流量转发到内部网络的VPN服务器(192.168.1.10:1194)。
  • 建立VPN连接后,远程员工可以安全地访问内部资源,如文件服务器。


参考

https://en.wikipedia.org/wiki/Network_address_translation#Implementation

What Is NAT? What Are the NAT Types? | FS Community

https://www.comparitech.com/net-admin/network-address-translation-overloading/

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

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

相关文章

UE C++ 多镜头设置缩放 平移

一.整体思路 首先需要在 想要控制的躯体Pawn上,生成不同相机对应的SpringArm组件。其次是在Controller上,拿到这个Pawn,并在其中设置输入响应,并定义响应事件。响应事件里有指向Pawn的指针,并把Pawn的缩放平移功能进行…

新时代【机器学习】与【Pycharm】:【随机数据生成】与智能【股票市场分析】

目录 第一步:准备工作 1.1 安装必要的库 小李的理解: 1.2 导入库 小李的理解: 第二步:生成和准备数据 2.1 生成随机股票数据 小李的理解: 2.2 数据探索与可视化 小李的理解: 2.3 数据处理 小李…

camunda最终章-springboot

1.实现并行流子流程 1.画图 2.创建实体 package com.jmj.camunda7test.subProcess.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable; import java.util.ArrayList; import java.util.List;Data …

golang验证Etherscan上的智能合约

文章目录 golang验证Etherscan上的智能合约为什么要验证智能合约如何使用golang去验证合约获取EtherscanAPI密钥Verify Source Code接口Check Source Code Verification Status接口演示示例及注意事项网络问题无法调用Etherscan接口(最重要的步骤) golan…

ArcGIS实战—等高线绘制

今天分享一个使用ArcGIS Pro制作等高线地图的教程,等高线是用来表达地形最常见的形式之一。那么如何制作一个效果比较好的等高线地形图呢?让我们开始今天的教程。 1 DEM数据 第一步:获取DEM地形数据,网址(https://dwt…

6、Redis系统-数据结构-05-整数

五、整数集合(Intset) 整数集合是 Redis 中 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不大时,就会使用整数集合这个数据结构作为底层实现。整数集合通过紧凑的内存布局和升级机制,实现了…

深度学习图像生成与分割模型详解:从StyleGAN到PSPNet

文章目录 Style GANDeeplab-v3FCNAdversarial AutoencodersHigh-Resolution Image Synthesis with Latent Diffusion ModelsNeRF: Representing Scenes as Neural Radiance Fields for View SynthesisPyramid Scene Parsing Network Style GAN 输入是一个潜在向量 (z)&#xff…

项目收获总结--MyBatis的知识收获

一、概述 最近几天公司项目开发上线完成,做个收获总结吧~ 今天记录MyBatis的收获和提升。 二、获取自动生成的(主)键值 insert 方法总是返回一个 int 值 ,这个值代表的是插入的行数。若表的主键id采用自增长策略,自动生成的键值在 insert…

【JSP+Servlet+Maven】——优质外卖订餐系统之概论部分

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

详解基于业权一体化的统一授权中心架构设计,附材料打包

有群友问统一授权架构体系相关内容,统一授权体系隶属技术架构范畴,一般技术人员使用开源组件实现,很少在企业级层面讨论纯技术方案,但会讨论到“业权一体化”。 (一)权限管理和业权一体化的联系和区别 权…

哈喽GPT-4o,程序员如何通过GPT-4o提高工作效率

目录 一、编写代码Prompt:请用Java语言编写一个二分查找的样例 二、修正代码错误、代码优化Prompt:我们上传一张华为OD算法题的题目描述,再给它我的Java解题代码,问问它有什么问题? 三、解读代码功能、代码翻译Prompt&…

Docker——简介、安装(Ubuntu22.04)

1、简介 Docker 是一个开源的容器化平台,旨在简化应用程序的开发、交付和运行。它通过将应用程序及其所有依赖项打包到一个称为容器的标准化单元中,使应用程序能够在任何环境中一致地运行。Docker 解决了“在我的机器上能运行”的问题,使开发…

2008-2021年各省份高技术产业科研与发展(RD)活动情况数据

R&D(研究与发展)活动是推动国家和公司技术创新和经济增长的关键因素。以下是对各省份高技术产业科研与发展(R&D)活动情况数据的介绍: 数据简介 定义:R&D指在产品开发、工艺设计、生产技术改进…

MySQL的慢sql

什么是慢sql 每执行一次sql,数据库除了会返回执行结果以外,还会返回sql执行耗时,以mysql数据库为例,当我们开启了慢sql监控开关后,默认配置下,当sql的执行时间大于10s,会被记录到慢sql的日志文件…

人脸检测(Python)

目录 环境: 初始化摄像头: 初始化FaceDetector对象: 获取摄像头帧: 获取数据: 绘制数据: 显示图像: 完整代码: 环境: cvzone库:cvzone是一个基于…

RabbitMQ中常用的三种交换机【Fanout、Direct、Topic】

目录 1、引入 2、Fanout交换机 案例:利用SpringAMQP演示Fanout交换机的使用 3、Direct交换机 案例:利用SpringAMQP演示Direct交换机的使用 4、Topic交换机 案例:利用SpringAMQP演示Topic交换机的使用 1、引入 真实的生产环境都会经过e…

【论文阅读】VASA-1: Lifelike Audio-Driven Talking FacesGenerated in Real Time

整体框架。不直接生成视频帧,而是在潜在空间中生成整体面部动态和头部运动,条件是音频和其他信号。给定这些运动潜在编码,通过面部解码器生成视频帧,还接受从输入图像中提取的外观和身份特征作为输入。 构建了一个面部潜在空间并…

大连外贸建站公司wordpress主题模板

Robonaut萝卜纳特WP外贸站模板 适合用于工业机器人公司出口做外贸搭建公司官方网站使用的WordPress模板。 https://www.jianzhanpress.com/?p7091 优衣裳WordPress外贸建站模板 简洁的wordpress外贸独立站模板,适合服装、衣服、制衣外贸公司搭建公司官方网站使用…

视频翻译英文的软件有哪些?打破语言障碍就用这5个

打算趁着暑假假期悄悄努力惊艳所有人的小伙伴在哪呢~ 相信不少朋友自学都会首选在家看网课,不过有时候面对全英的外语课程,难免总会听得一头雾水~ 但其实这个问题很好解决!码好以下这5款视频翻译工具,语言障碍的问题也就都迎刃而…

打破中国算力瓶颈的暴雨模式

6月27日,一场汇聚政府领导、人工智能领域顶尖专家学者和行业领军代表的高峰论坛—“算力中国高峰论坛”在北京清华科技园紫荆会议中心盛大举行。本次论坛由庆阳市人民政府、甘肃省人工智能与算力技术重点实验室共同举办,旨在加快探索科技前沿&#xff0c…