NAT:地址转换技术

news2024/9/23 3:30:19

为什么会引入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.coloradmin.cn/o/1906671.html

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

相关文章

网络服务器配置与管理

网络服务器配置与管理是一个涉及多个方面的领域,它涵盖了从物理硬件的设置到操作系统、网络服务和应用的配置,再到日常维护和安全策略的实施。以下是网络服务器配置与管理的一些核心概念和步骤: 硬件配置: 选择合适的服务器硬件&a…

git简介以及git操作软件下载以及安装教程,git基础指令介绍,持续更新中~

什么是Git? 最近在学一些git的基础指令,仔细地了解了一下git,发现了他的强大功能,分享一下: Git是一个强大的工具,它在软件开发中扮演着至关重要的角色。 Git是一个开源的分布式版本控制系统,…

GET与POST请求的区别【随记】

区别 1. 请求参数的传递方式 2. 安全性 3. 数据量 4. 幂等性 5. 用途 在Java中,GET和POST请求是通过HTTP协议与服务器进行通信的两种常用方法,它们之间有一些关键的区别: 1. 请求参数的传递方式 GET请求:将参数直接附加在U…

书生·浦语2.5开源,推理能力再创新标杆

导读 2024 年 7 月 3 日,上海人工智能实验室与商汤科技联合香港中文大学和复旦大学正式发布新一代大语言模型书⽣浦语2.5(InternLM2.5)。相比上一代模型,InternLM2.5 有三项突出亮点: 推理能力大幅提升,在…

四、嵌入式技术(考点篇)

1 第二版教材2.4嵌入式内容补充 嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁减的软、硬件集成于一体的专用计算机系统,需要满足应用对功能、可靠性、成本、体积和功耗等方面的严格要求。 一般嵌入式系统由嵌入式处理器、相关支撑硬…

View->不同刻度大小的刻度尺View

XML文件 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:o…

如何在centos7安装Docker

在centOS7中我们可以使用火山引擎镜像源镜像安装Docker,以下是具体的安装步骤。 step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils Step 2: 添加软件源信息 sudo yum-config-manager --add-repo https://mirrors.ivolces.com/docker/linux/centos/docker-ce.r…

改进Transformer模型其实也不难

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 数据介绍 结果展示 完整代码 之前…

WAIC2024 上海 | Gooxi 全面展示智算新成果,加速人工智能落地应用

浦江之畔&#xff0c;大咖云集&#xff1b;智能浪潮&#xff0c;奔涌不息。7月4日&#xff0c;被誉为人工智能界风向标的世界人工智能大会暨人工智能全球治理高级别会议在上海盛大召开&#xff0c;Gooxi此次携最新AI服务器以及解决方案参与&#xff0c;以算为擎赋能新质生产力&…

LLM之RAG实战(四十一)| 使用LLamaIndex和Gemini构建高级搜索引擎

Retriever 是 RAG&#xff08;Retrieval Augmented Generation&#xff09;管道中最重要的部分。在本文中&#xff0c;我们将使用 LlamaIndex 实现一个结合关键字和向量搜索检索器的自定义检索器&#xff0c;并且使用 Gemini大模型来进行多个文档聊天。 通过本文&#xff0c;我…

人工智能在三级淋巴结:肿瘤浸润淋巴细胞领域的系统研究进展|顶刊速递·24-07-08

小罗碎碎念 本期文献主题&#xff1a;人工智能在三级淋巴结/肿瘤浸润淋巴细胞领域的系统分析 关于三级淋巴结和肿瘤浸润淋巴细胞的文献&#xff0c;会是接下来的分析重点&#xff0c;期间也会穿插临床文献&项目复现的推文。 另外再说点科研道路上的题外话&#xff0c;也算是…

Python 爬虫 tiktok API接口获取tiktok用户关注列表

此接口可获取tiktok用户关注列表。若有需要&#xff0c;请点击文末链接联系我们。 详细采集页面如下https://www.tiktok.com/quanap_official 请求API http://api.xxxx.com/tt/user/following?user_id7252644648840381445&count10&offset0&tokentest 请求参数 返…

拿客户电脑,半小时完成轮播组件开发!被公司奖励500!

故事背景 原文链接&#xff1a;拿客户电脑&#xff0c;用豆包IDE逆天改命完成需求紧急开发&#xff01;被公司奖励500&#xff01; 前几天&#xff0c;业务拉了一个大客户&#xff0c;客户需要先看我们做的样本项目&#xff08;类似于官网首页&#xff09;&#xff0c;然后才会…

更新GCC版本问题处理(Could not resolve host: mirrorlist.centos.org;)更换SCL配置源/SCL后yum使用不了

SCL&#xff1a; 在 Linux 系统中&#xff0c;更新 GCC&#xff08;GNU Compiler Collection&#xff09;编译器需要使用 Software Collections (SCL) 库的原因主要有以下几点&#xff1a; https://wiki.centos.org/AdditionalResources/Repositories/SCLhttps://wiki.centos…

游戏开黑语音-使用云服务器部署teamspeak服务(系统Ubuntu 20.04 LTS)

目录 前置物品服务器调整及部署1.重装系统2.换源3.下载teamspeak服务端并部署 连接服务器参考 前置物品 一台云服务器&#xff08;系统&#xff1a;Ubuntu 20.04 LTS) 服务器调整及部署 1.重装系统 在腾讯云官网的主机控制台内&#xff0c;选择重装系统 (由于之前为了快速和…

重庆交通大学数学与统计学院携手泰迪智能科技共建的“智能工作室”

2024年7月4日&#xff0c;重庆交通大学数学与统计学院与广东泰迪智能科技股份有限公司携手共建的“智能工作室”授牌仪式在南岸校区阳光会议室举行。此举标志着数统学院与广东泰迪公司校企合作新篇章的开启&#xff0c;也预示着学院在智能科技教育领域的深入探索和实践。 广东…

电源中电感底部需要铺地平面吗?

感有交变电流&#xff0c;电感底部铺铜会在地平面上产生涡流&#xff0c;涡流效应会影响功率电感的电感量&#xff0c;涡流也会增加系统的损耗&#xff0c;同时交变电流产生的噪声会增加地平面的噪声&#xff0c;会影响其他信号的稳定性。 在EMC方面来看&#xff0c;在电感底部…

作为产品经理,如何用大模型给我们赋能?非常详细,收藏我这篇就够了

作为一名产品经理&#xff0c;如果您考虑转行至大模型领域&#xff0c;您将能够将产品管理技能与大模型技术相结合&#xff0c;从而在产品开发和创新方面获得一系列好处。以下是转行大模型对产品经理的一些潜在益处&#xff1a; 更深入的技术理解&#xff1a;了解大模型技术将…

deepspeed huggingface传入参数 optimizer和lr_scheduler测试

Trainer中 首先&#xff1a; WarmupDecayLR --lr_scheduler_type linear WarmupLR --lr_scheduler_type constant_with_warmup 1 TrainArgument不传lr_scheduler_type、optim&#xff0c;warmup_steps15 ds config文件中定义如下&#xff1a; 注意&#xff1a;如果不在Trai…

java-spring boot光速入门教程(超详细!!)

目录 一、引言 1.1 初始化配置 1.2 整合第三方框架 1.3 后期维护 1.4 部署工程 1.5 敏捷式开发 二、SpringBoot介绍 spring boot 2.1 搭建一个spring boot工程 2.2 使用idea创建项目 2.3 在线创建姿势 2.4 项目的目录结构 2.5 项目的运行方式 2.6 yml文件格式 2…