您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

42张图详解 NAT : 换个马甲就能上网

时间:2022-03-19 09:02:33  来源:  作者:网络小弗
42张图详解 NAT : 换个马甲就能上网

 

初识 NAT

IP 地址分为公网地址私有地址公网地址有 IANA 统一分配,用于连接互联网;私有地址可以自由分配,用于私有网络内部通信。

42张图详解 NAT : 换个马甲就能上网

 

随着互联网用户的快速增长,2019 年 11 月 25 日全球的公网 IPv4 地址已耗尽。在 IPv4 地址耗尽前,使用 NAT.NETwork Address Translation )技术解决 IPv4 地址不够用的问题,并持续至今。

NAT 技术的是将私有地址转换成公网地址,使私有网络中的主机可以通过少量公网地址访问互联网。

但 NAT只是一种过渡技术,从根本上解决问题,是采用支持更大地址空间的下一代 IP 技术,即 IPv6 协议,它提供了几乎用不完的地址空间。

42张图详解 NAT : 换个马甲就能上网

 

NAT 技术

IP 地址中预留了 3 个私有地址网段,在私有网络内,可以任意使用。

42张图详解 NAT : 换个马甲就能上网

 

其余的 IP 地址可以在互联网上使用,由 IANA 统一管理,称为公网地址

42张图详解 NAT : 换个马甲就能上网

 

NAT 解决了 IPv4 地址不够用的问题,另外 NAT 屏蔽了私网用户真实地址,提高了私网用户的安全性。

典型的 NAT 组网模型,网络通常是被划分为私网和公网两部分,各自使用独立的地址空间。私网使用私有地址 10.0.0.0/24 ,而公网使用公网地址。为了让主机 A 和 B 访问互联网上的服务器 Server ,需要在网络边界部署一台 NAT 设备用于执行地址转换。NAT 设备通常是路由器防火墙

42张图详解 NAT : 换个马甲就能上网

 

基本 NAT

基本 NAT 是最简单的一种地址转换方式,它只对数据包的 IP 层参数进行转换,它可分为静态 NAT 和动态 NAT 。

静态 NAT 是公网 IP 地址和私有 IP 地址有一对一的关系,一个公网 IP 地址对应一个私有 IP 地址,建立和维护一张静态地址映射表。

动态 NAT 是公网 IP 地址和私有 IP 地址有一对多的关系,同一个公网 IP 地址分配给不同的私网用户使用,使用时间必须错开。它包含一个公有 IP 地址池和一张动态地址映射表。

举个动态 NAT 栗子

私网主机 A( 10.0.0.1 )需要访问公网的服务器 Server( 61.144.249.229 ),在路由器 RT 上配置 NAT ,地址池为 219.134.180.11 ~ 219.134.180.20 ,地址转换过程如下:

42张图详解 NAT : 换个马甲就能上网

 

  1. A 向 Server 发送报文,网关是 10.0.0.254 ,源地址是 10.0.0.1 ,目的地址是 61.144.249.229 。
  •  
  1. RT 收到 IP 报文后,查找路由表,将 IP 报文转发至出接口,由于出接口上配置了 NAT ,因此 RT 需要将源地址 10.0.0.1 转换为公网地址。
  •  
  1. RT 从地址池中查找第一个可用的公网地址 219.134.180.11 ,用这个地址替换数据包的源地址,转换后的数据包源地址为 219.134.180.11 ,目的地址不变。同时 RT 在自己的 NAT 表中添加一个表项,记录私有地址 10.0.0.1 到 公网地址 219.134.180.11 的映射。RT 再将报文转发给目的地址 61.144.249.229 。
  •  
  1. Server 收到报文后做相应处理。
  2. Server 发送回应报文,报文的源地址是 61.144.249.229 ,目的地址是 219.134.180.11 。
  •  
  1. RT 收到报文,发现报文的目的地址 219.134.180.11 在 NAT 地址池内,于是检查 NAT 表,找到对应表项后,使用私有地址 10.0.0.1 替换公网地址 219.134.180.11,转换后的报文源地址不变,目的地址为 10.0.0.1 。RT 在将报文转发给 A 。
  •  
  1. A 收到报文,地址转换过程结束。
  •  

如果 B 也要访问 Server ,则 RT 会从地址池中分配另一个可用公网地址 219.134.180.12 ,并在 NAT 表中添加一个相应的表项,记录 B 的私有地址 10.0.0.2 到公网地址 219.134.180.12 的映射关系。

42张图详解 NAT : 换个马甲就能上网

 

NAPT

在基础 NAT 中,私有地址和公网地址存在一对一地址转换的对应关系,即一个公网地址同时只能分配给一个私有地址。它只解决了公网和私网的通信问题,并没有解决公网地址不足的问题。

42张图详解 NAT : 换个马甲就能上网

 

NAPT( Network Address Port Translation )对数据包的 IP 地址、协议类型、传输层端口号同时进行转换,可以明显提高公网 IP 地址的利用率。

42张图详解 NAT : 换个马甲就能上网

 

举个栗子

私网主机 A( 10.0.0.1 )需要访问公网的服务器 Server 的 WWW 服务( 61.144.249.229 ),在路由器 RT 上配置 NAPT ,地址池为 219.134.180.11 ~ 219.134.180.20 ,地址转换过程如下:

  1. A 向 Server 发送报文,网关是 RT( 10.0.0.254 ),源地址和端口是 10.0.0.1:1024 ,目的地址和端口是 61.144.249.229:80 。
  •  
  1. RT 收到 IP 报文后,查找路由表,将 IP 报文转发至出接口,由于出接口上配置了 NAPT ,因此 RT 需要将源地址 10.0.0.1:1024 转换为公网地址和端口。
  2. RT 从地址池中查找第一个可用的公网地址 219.134.180.11 ,用这个地址替换数据包的源地址,并查找这个公网地址的一个可用端口,例如 2001 ,用这个端口替换源端口。转换后的数据包源地址为 219.134.180.11:2001 ,目的地址和端口不变。同时 RT 在自己的 NAT 表中添加一个表项,记录私有地址 10.0.0.1:1024 到 公网地址 219.134.180.11:2001 的映射。RT 再将报文转发给目的地址 61.144.249.229 。
  •  
  1. Server 收到报文后做相应处理。
  2. Server 发送回应报文,报文的源地址是 61.144.249.229:80 ,目的地址是 219.134.180.11:2001 。
  •  
  1. RT 收到报文,发现报文的目的地址在 NAT 地址池内,于是检查 NAT 表,找到对应表项后,使用私有地址和端口 10.0.0.1:1024 替换公网地址 219.134.180.11:2001,转换后的报文源地址和端口不变,目的地址和端口为 10.0.0.1:1024 。RT 再将报文转发给 A 。
  •  
  1. A 收到报文,地址转换过程结束。

如果 B 也要访问 Server ,则 RT 会从地址池中分配同一个公网地址 219.134.180.11 ,但分配另一个端口 3001 ,并在 NAT 表中添加一个相应的表项,记录 B 的私有地址 10.0.0.2:1024 到公网地址 219.134.180.12:3001 的映射关系。

42张图详解 NAT : 换个马甲就能上网

 

Easy IP

在标准的 NAPT 配置中需要创建公网地址池,也就是必须先知道公网 IP 地址的范围。而在拨号接入的上网方式中,公网 IP 地址是有运营商动态分配的,无法事先确定,标准的 NAPT 无法做地址转换。要解决这个问题,就要使用 Easy IP 。

Easy IP 又称为基于接口的地址转换。在地址转换时,Easy IP 的工作原理与 NAPT 相同,对数据包的 IP 地址、协议类型、传输层端口号同时进行转换。但 Easy IP 直接使用公网接口的 IP 地址作为转换后的源地址。Easy IP 适用于拨号接入互联网,动态获取公网 IP 地址的场合。

42张图详解 NAT : 换个马甲就能上网

 

Easy IP 无需配置地址池,只需要配置一个 ACL(访问控制列表),用来指定需要进行 NAT 转换的私有 IP 地址范围。

NAT Server

从基本 NAT 和 NAPT 的工作原理可知,NAT 表项由私网主机主动向公网主机发起访问而生成,公网主机无法主动向私网主机发起连接。因此 NAT 隐藏了内部网络结构,具有屏蔽主机的作用。但是在实际应用中,内网网络可能需要对外提供服务,例如 Web 服务,常规的 NAT 就无法满足需求了。

为了满足公网用户访问私网内部服务器的需求,需要使用 NAT Server 功能,将私网地址和端口静态映射成公网地址和端口,供公网用户访问。

42张图详解 NAT : 换个马甲就能上网

 

举个栗子

A 的私网地址为 10.0.0.1 ,端口 8080 提供 Web 服务,在对公网提供 Web 服务时,要求端口号为 80 。在 NAT 设备上启动 NAT Server 功能,将私网 IP 地址和端口 10.0.0.1:8080 映射成公网 IP 地址和端口 219.134.180.11:80 ,这样公网主机 C 就可以通过 219.134.180.11:80 访问 A 的 Web 服务。

NAT ALG

基本 NAT 和 NAPT 只能识别并修改 IP 报文中的 IP 地址和端口号信息,无法修改报文内携带的信息,因此对于一些 IP 报文内携带网络信息的协议,例如 FTP 、DNS 、SIP 、H.323 等,是无法正确转换的。

ALG 能够识别应用层协议内的网络信息,在转换 IP 地址和端口号时,也会对应用层数据中的网络信息进行正确的转换。

举个栗子:ALG 处理 FTP 的 Active 模式

FTP 是一种基于 TCP 的协议,用于在客户端和服务器间传输文件。FTP 协议工作时建立 2 个通道:Control 通道和 Data 通道。Control 用于传输 FTP 控制信息,Data 通道用于传输文件数据。

私网 A( 10.0.0.1 )访问公网 Server( 61.144.249.229 )的 FTP 服务,在 RT 上配置 NAPT,地址池为 219.134.180.11 ~ 219.134.180.20 ,地址转换过程如下:

42张图详解 NAT : 换个马甲就能上网

 

  1. A 发送到 Server 的 FTP Control 通道建立请求,报文源地址和端口为 10.0.0.1:1024 ,目的地址和端口为 61.144.249.229:21 ,携带数据是 “ IP = 10.0.0.1 port=5001 ”,即告诉 Server 自己使用 TCP 端口 5001 传输 Data。
  •  
  1. RT 收到报文,建立 10.0.0.1:1024 到 219.134.180.11:2001 的映射关系,转换源 IP 地址和 TCP 端口。根据目的端口 21 ,RT 识别出这是一个 FTP 报文,因此还要检查应用层数据,发现原始数据为 “ IP = 10.0.0.1 port=5001 ”,于是为 Data 通道 10.0.0.1:5001 建立第二个映射关系:10.0.0.1:5001 到 219.134.180.11:2002 ,转换后的报文源地址和端口为 219.134.180.11:2001 ,目的地址和端口不变,携带数据为 “ IP = 219.134.180.11 port=2002 ”。
  •  
  1. Server 收到报文,向 A 回应 command okay 报文,FTP Control 通道建立成功。同时 Server 根据应用层数据确定 A 的 Data 通道网络参数为 219.134.180.11:2002 。
  2. A 需要从 FTP 服务器下载文件,于是发起文件请求报文。Server 收到请求后,发起 Data 通道建立请求,IP 报文的源地址和端口为 61.144.249.229:20 ,目的地址和端口为 219.134.180.11:2002,并携带 FTP 数据。
  •  

NAT 实战

基本 NAT 实验

实验拓扑图

42张图详解 NAT : 换个马甲就能上网

 

实验要求

  • ENSP 模拟器
  • PC 通过公网地址访问互联网

实验步骤

  1. 根据接口 IP 地址表,配置各个设备的接口地址。
  •  
42张图详解 NAT : 换个马甲就能上网

 


42张图详解 NAT : 换个马甲就能上网

 


42张图详解 NAT : 换个马甲就能上网

 

  1. 在 RT 上配置 NAT 配置
42张图详解 NAT : 换个马甲就能上网

 

配置基本 NAT 只需要一条命令:把私有 IP 地址转换成公网 IP 地址,在接口视图下配置 nat static global global-address inside host-address 命令。默认路由是网关路由器上的常见配置。使用 display nat static 命令查看 RT 上的静态 NAT 配置。

  1. 在 PC 上验证联网功能。
42张图详解 NAT : 换个马甲就能上网

 

  1. 抓包查看 NAT 转换效果。分别抓包 RT 的内网口 G0/0/0 和外网口 G0/0/1 的报文,看出发送的 Echo Request 报文和接收的 Echo Reply 报文都有进行 NAT 转换。
42张图详解 NAT : 换个马甲就能上网

 


42张图详解 NAT : 换个马甲就能上网

 

NAPT 实验

实验拓扑图

42张图详解 NAT : 换个马甲就能上网

 

实验要求

  • RT 使用 NAPT 功能
  • ISP 分配 4 个可用的公网地址:202.0.0.3 ~ 202.0.0.6
  • VLAN 10 的用户使用两个公网地址
  • VLAN 20 的用户使用另外两个公网地址

实验步骤

  1. 根据接口 IP 地址表,配置各个设备的接口地址。配置命令可参考上一个实验步骤 1 。
42张图详解 NAT : 换个马甲就能上网

 

  1. 在 RT 上配置 NAPT 配置。
42张图详解 NAT : 换个马甲就能上网

 

在 NAPT 的配置中,使用基本 ACL 来指定私有 IP 地址范围。ACL 2010 指定 VLAN 10 的 IP 地址空间,ACL 2020 指定 VLAN 20 的 IP 地址空间。使用 nat address-group group-index start-address end-address 命令指定公网 IP 地址范围,分别指定了两个 NAT 地址组,编号分别选择了 1 和 2 。在外网接口上,使用 nat outbound acl-number address-group group-index ,绑定 NAT 转换关系。

使用 display nat address-group 命令查看 RT 上的 NAT 地址组配置。命令 display nat outbound 查看出方向 NAT 的转换关系。

  1. 分别在 PC10 和 PC 20 上验证上网功能。
42张图详解 NAT : 换个马甲就能上网

 


42张图详解 NAT : 换个马甲就能上网

 

  1. 抓包查看 NAT 转换效果。分别抓包 RT 的内网口 G0/0/1 和外网口 G0/0/0 的报文,查看 VLAN 10 的用户出发送的 Echo Request 报文和接收的 Echo Reply 报文都有进行 NAT 转换。
42张图详解 NAT : 换个马甲就能上网

 


42张图详解 NAT : 换个马甲就能上网

 

其它常用 NAT 命令

NAT Server 是在接口视图下配置,命令格式为:nat server protocol { tcp | udp } global global-address global-port inside host-address host-port 。

检查 NAT Server 配置信息命令:display nat server 。

检查 NAT 会话命令:display nat session all 。

启动 NAT ALG 功能命令:nat alg all enable 。

查看 NAT ALG 功能命令:display nat alg 。

参考资料:

高级网络技术 - 田果
华为防火墙技术漫谈 - 徐慧洋
HCNA网络技术学习指南 - 华为技术有限公司
路由交换技术 - 杭州华三通信技术有限公司



Tags: NAT   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
构建高性能 React Native 跨端应用—图片与内存
在浏览器构建的 web 中开发者可能不用花费太多精力关注图像上,但是在移动应用中,对于图像的关注显得非常重要。因为在 RN 应用中,无论是图片还是动图,或者是视频都是非常耗内存...【详细内容】
2023-09-04  Search: NAT  点击:(256)  评论:(0)  加入收藏
四层负载均衡的 NAT 模型与 DR 模型推导
导读 本文首先讲述四层负载均衡技术的特点,然后通过提问的方式推导出四层负载均衡器的 NAT 模型和 DR 模型的工作原理。通过本文可以了解到四层负载均衡的技术特点、NAT 模型...【详细内容】
2023-08-28  Search: NAT  点击:(233)  评论:(0)  加入收藏
Spring Native&Quarkus对比分析
概述 Quarkus首页放出的标语:超音速亚原子的Java(Supersonic Subatomic Java),它是为OpenJDK HotSpot和GraalVM量身定制的Kubernetes Native Java框架,基于同类最佳的 Java 库和...【详细内容】
2023-08-25  Search: NAT  点击:(153)  评论:(0)  加入收藏
react native实现跨标签通信
理解跨标签通讯是指在网页浏览器中,不同标签页之间进行通讯的技术。这种通讯方式可以让同一个域名下的不同标签页之间进行数据传输和信息共享,从而实现一些特定的功能,比如实时...【详细内容】
2023-06-08  Search: NAT  点击:(411)  评论:(0)  加入收藏
移动端原生开发整合React Native Elements教程
一、移动开发和web开发的区别移动前端开发和web开发都属于前端开发的范围。 一般我们在开发pc端web项目时,需要考虑这么几点: 语言和UI库选型 浏览器的兼容性 构建速度 ...【详细内容】
2023-03-07  Search: NAT  点击:(231)  评论:(0)  加入收藏
混合开发架构|Android工程集成React Native、Flutter、ReactJs
架构设计说明该篇文章,介绍并记录在大前端混合架构开发中的重要细节和流程。通过在安卓原生工程中集成两大主流混合框架React Native、Flutter,以及ReactJs[Vue],集成三类模块m...【详细内容】
2023-03-06  Search: NAT  点击:(213)  评论:(0)  加入收藏
什么是Vue Native 框架?有什么特点?
Vue Native是一个使用Vue.Js开发本地移动应用程序的框架。该框架将文档转换为React Native,进而为你提供适用于Android和iOS的本地应用程序。实际上,Vue Native应用程序据说是...【详细内容】
2023-02-20  Search: NAT  点击:(172)  评论:(0)  加入收藏
跨平台开发,Flutter还是React Native?
作者 | 胥磊审校 | 孙淑娟随着移动应用的不断普及,各个公司都在寻找可以在多种设备上运行的跨平台应用解决方案,这里跨平台主要是指安卓和iOS。统计数据显示:截止2021年6月,安卓...【详细内容】
2023-02-09  Search: NAT  点击:(154)  评论:(0)  加入收藏
java使用NMT Native Memory Tracking分析内存占用
开启NMTNMT目前只能在启动的时候开启,不支持动态开关NMT功能。开启NMT功能,会带来5%到10%的额外开销通过-XX:NativeMemoryTracking=[off | summary | detail]来开启NMT功能。 ...【详细内容】
2022-09-15  Search: NAT  点击:(583)  评论:(0)  加入收藏
Mac VMWare NAT模式安装 CentOS 7- 操作教程
学习大数据离不开 Linux 系统,网络上大部分文章都是在 Windows 系统下使用 VMWare Workstation 安装 CentOS ,并使用 NAT 模式配置网络。本文基于 Mac OS,通过 VMWare Fusion...【详细内容】
2022-08-20  Search: NAT  点击:(561)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(17)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(34)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(44)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(42)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(73)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(62)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(43)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(159)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(53)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(85)  评论:(0)  加入收藏
站内最新
站内热门
站内头条