NAT协议

目录

NAT

前言

NAT地址转换表

NAT分类

前言

静态NAT

192.168.1.2访问200.1.1.2执行过程

动态NAT

192.168.1.2访问200.1.1.2执行过程

NAPT

192.168.1.2的5000端口访问200.1.1.2的80端口执行过程

基本命令

配置动态NAPT转换

定义内外网接口

配置NAPT

静态NAPT配置

定义内外网接口

配置静态NAPT

NAT

前言

  • 如今IPV4地址已经严重不够了,我们能够使用的只有A、B、C三类地址
  • IP地址分为公网IP和私网IP,公网IP只能在公网上使用,私网IP只能在私网上使用。
  • 公网上不允许出现私有IP地址(公网路由器不会配置指向私网路由器的路由表)

含义:NAT协议是将IP数据包头中的IP地址转换为另外一个IP地址的过程, 主要用于实现私有网络访问公有网络的功能。这种通过使用少量的IP地址代表较多的私有IP地址的方式,将有助于减少IP地址空间的枯竭

注意:

  • 网络地址转换主要完成了私网到公网地址的转换,一般是路由器或防火墙上来完成,不建议在三层交换机上配置。
  • NAT协议可以节约公网IP资源,也可以内网访问外网的真实IP

NAT地址转换表

  • NAT地址转换表就是路由器进行地址转换的依据。
  • NAT地址转换表记录了源IP与公网IP的映射关系(静态nat的NAT地址转换表需要自己手动配置)
  • NAT表中的公网地址不一定是路由器接口处的公网IP地址,也可以是其他公网地址。
  • 在配置NAT转换表之前,路由器要想启用NAT,那么必须首先定义内外网的路由端口
  • 内网中,数据包里面一定有源IP和目标IP,从内往外走目标IP不动,只改变源IP;从外往内走,源IP不动,只改变目标IP
  • 当我们配置好静态NAT后,那么就会生成NAT转换表。

NAT分类

前言

注意:以上都是24位子网掩码,其中第一个路由器分割了内网与外网。

静态NAT

理解:手动配置nat映射表,自己配置私网IP所对应的公网IP来进行nat转换(一对一转换)

192.168.1.2访问200.1.1.2执行过程

192.168.1.2需要上网,那么它就把该数据给了网关(源IP:192.168.1.2,目标IP:200.1.1.2),网关看到目标IP为200.1.1.2,那么根据路由表将此数据包路由到右侧端口,因为路由器配置了NAT,那么就会检查地址转换表(192.168.1.2——100.1.1.1)发现有源IP的匹配条目进而将源地址转换为100.1.1.1后将数据包从右接口发出(源IP:100.1.1.1,目标IP:200.1.1.2),之后就可以访问200.1.1.2,200.1.1.2收到了请求就会回应(源IP:200.1.1.2,目标IP:100.1.1.1)这个数据包发到了路由器1,路由器1配置了NAT,那么就检查目标IP,发现有匹配的项目,进而将目标IP转换为192.168.1.2进而发给192.168.1.2数据响应(源IP:100.1.1.1,目标IP:192.168.1.2)

注意:

  • 这种方式在仅有1个公网IP地址的情况下,内网中仅有1台设备可以访问外网。
  • 上面这种方式中没有对端口进行转换,那么访问公网的特定端口就会转化到私网的特定端口上,如今也推出了静态NAPT,可以实现静态配置内网IP端口与公网IP端口的映射

动态NAT

理解:定义内外部地址池,动态随机转换,当有一个私网IP要访问互联网,那么就会自动拿出地址池里面的公网IP来进行对接转换,若再有一个私网IP想要访问外部网络,则会再从地址池中拿出公网IP对接(一对一转换)

192.168.1.2访问200.1.1.2执行过程

192.168.1.2需要上网,那么它就把该数据给了网关(源IP:192.168.1.2,目标IP:200.1.1.2),网关看到目标IP为200.1.1.2,那么根据路由表将此数据包路由到右侧端口,因为路由器配置了动态NAT,那么就会检查地址转换表,发现没有映射关系但配了动态NAT,那么就会把源IP拿去内部地址池比较,发现属于内部地址池(动态在NAT地址转换表补充至源IP),那么就从外部公网地址池拿出一个公网IP(动态的在NAT地址转换表补充至公网IP)在NAT地址表中形成一个转换关系(源IP:192.168.1.2;公网IP:100.1.1.1),同时将源IP转化为100.1.1.1将数据发到200.1.1.2(源IP:100.1.1.1,目标IP:200.1.1.2);(后面就和静态NAT一样了)

注意:动态NAT中的NAT地址转换表的条目将会在源IP设备停止发包的24小时后消失。

NAPT

前言:

  • 网络地址端口转换NAPT(Network Address Port Translation)是把内部地址映射到外部网络的一个IP地址的不同端口上。
  • NAPT相对于动态NAT来说,它实现了外部公网地址池的复用。

NAPT协议的NAT表

源IP地址公网IP地址源端口号路由器端口
内网设备1源IP公网地址内网设备1开放端口路由器监听端口1
内网设备2源IP公网地址内网设备2开放端口路由器监听端口2

注意:

  • 该表中对于没有消失的表项中路由器使用的端口号路由器不能用第二次
  • NAT表中的公网地址不一定是路由器接口处的公网IP地址,也可以是其他公网地址,当一个外部数据发过来的时候,就会检查目标IP是否与公网IP匹配,目标端口是否与路由端口匹配,若都匹配了则能转发数据到内网

192.168.1.2的5000端口访问200.1.1.2的80端口执行过程

192.168.1.2需要上网,那么它就把该数据给了网关(源IP:192.168.1.2,目标IP:200.1.1.2;源端口:5000,目标端口:80),网关看到目标IP为200.1.1.2,那么根据路由表将此数据包路由到右侧端口,因为路由器配置了NAT,那么就会检查地址转换表,发现没有映射关系但配置NAPT,于是就去拿源IP去内部地址池比较,发现属于内部地址池(将该地址动态在NAT地址转换表补充至源IP,将源端口补充至源端口),于是就从外部公网地址池复用一个公网IP(将该IP动态的在NAT地址转换表补充至公网IP,路由器随机开启端口1补充至路由器端口),形成路由表(源IP地址:192.168.1.2;公网IP:100.1.1.1;源端口:5000;路由器端口:1)后将公网地址作为源IP地址,路由器随机开启的端口作为源端口(源IP:100.1.1.1,目标IP:200.1.1.2;源端口:1,目标端口:80)将数据包发送到200.1.1.2;200.1.1.2收到后向100.1.1.1回复消息(源IP:200.1.1.2,目标IP:100.1.1.1;源端口:80,目标端口:1)路由器1配置了NAT于是就查看目标IP并且将其转化为源IP,查看目标端口号转化为源端口号(源IP:200.1.1.2,目标IP:192.168.1.2;源端口:80,目标端口:5000)并将数据发送给192.168.1.2的5000端口。

注意:使用NAPT协议可以复用公网地址,进而达到局域网内的多台设备仅用一个公网IP实现上网的目的。

基本命令

进入特权模式

查看nat表:show ip nat translations

清空nat表:clear ip nat translations

配置动态NAPT转换

定义内外网接口

进入路由器内网接口

定义内网接口:ip nat inside

进入路由器外网端口

定义外网端口:ip nat outside

注意:外网端口用来转换出去包的源IP,内网端口用来转换进来包的目标IP。

配置NAPT

进入全局配置模式

定义内部地址池:access-list 1 permit 内网IP地址 通配符掩码

  • 该ACL表主要是做匹配地址转换,来往的数据若符合上述规定则会做地址转换

做NAPT动态映射:ip nat inside source list 1 interface 路由器公网接口名 overload

  • 只要源IP满足ACL表号1,那么就允许使用路由器公网接口的IP地址做替换

总结:执行了以上的两个步骤,那么只要是ACL表允许的数据,都会允许做NAPT转换,进而实现了一个公网IP允许多个私网IP设备同时上网。

静态NAPT配置

定义内外网接口

进入路由器内网接口

定义内网接口:ip nat inside

进入路由器外网端口

定义外网端口:ip nat outside

配置静态NAPT

进入全局配置模式

将私网IP完整的映射到公网IP上

  • ip nat source static 私网IP地址 公网IP地址

将私网IP的端口映射到公网IP的端口上

  • ip nat inside source static 协议 私网IP 私网端口 路由器公网IP 路由器公网端口

注意:

  • 静态NAPT中的协议可选为tcp/udp
  • 静态NAPT配置后,访问路由器公网IP的端口,那么就会自动映射到私网IP的私网端口

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

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

相关文章

简述SVM

概述 SVM,即支持向量机(Support Vector Machine),是一种常见的监督学习算法,用于分类和回归问题。它是一种基于统计学习理论和结构风险最小化原则的机器学习方法。 SVM的主要思想是在特征空间中找到一个最优的超平面…

【Shell脚本8】Shell printf 命令

Shell printf 命令 printf 命令模仿 C 程序库(library)里的 printf() 程序。 printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。 printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化…

Elasticsearch 集群状态详解

cluster state 返回结果详解 GET /_cluster/statehttps://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-state.html详细信息如下: {"cluster_name": "business-log","cluster_uuid": "ArYy-qmCTbCQTDUI8o…

conda清华源安装cuda12.1的pytorch

使用pytorch官方提供的conda command奇慢无比,根本装不下来(科学的情况下也这样) 配置一下清华源使用清华源装就好了 清华源:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ 配置方法:conda config --…

strtok函数详解:字符串【分割】的利器

目录 一,strtok函数简介 二,strtok函数的用法 三,strtok函数的注意事项 一,strtok函数简介 strtok函数可以帮助我们将一个字符串按照指定的分隔符进行分割,从而得到我们想要的子字符串。 🍂函数头文件&am…

腾讯待办是不是停了?怎么用其它提醒软件查看导出的ics文件

腾讯待办是腾讯企业旗下的业务产品,其主要以微信小程序的形式使用,定位于待办事项和日程管理工具,支持罗列日程待办清单、设定定时提醒,帮助大家规划日常事务和进行时间管理,成功创建待办事项后可在对应的公众号和绑定…

Python教程之字典(Dictionary)操作详解

文章目录 前言一、创建字典二、访问字典里的值三、访问字典里的值四、删除字典元素五、字典键的特性六、字典内置函数&方法七、字典练习代码关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Py…

tqdm学习

from tqdm import tqdmepochs 10 epoch_bar tqdm(range(epochs)) count 0 for _ in epoch_bar:count count1print("count {}".format(count))print(_)每次就是一个epoch

如何在Jetpack Compose中显示PDF?

当读取和显示 PDF 的组件缺失时该怎么办? 声明式编程可以拯救你. Jetpack Compose已经存在好几年了, 但_在某些方面它的使用仍然面临挑战_. 例如, 缺少用于查看PDF的官方组件, 而为数不多的第三方库通常也是有代价的. 在我们的应用中, 我们会遇到在许多场景中显示 PDF 的需求…

[Matlab]基于LSTM+NSGA2的风光火力发电策略优化

最近比较忙,好久没分享案例啦,今天简单分享一个滚动时域的多目标优化 一 模型介绍 1 风电 2 光伏 3 火电 4 储能 5 用电需求 等五个对象。 其中风电和光伏还有用电需求,用历史数据LSTM网络,训练一个预测模型;火电根据策…

2.【自动驾驶与机器人中的SLAM技术】左乘模型推导ESKF

目录 1. 证明题 证明:若某个高斯随机变量为零均值,协方差为对角线矩阵且大小相同(各向同性),那么在乘任意旋转矩阵以后,其均值仍为零,且协方差不变; 2. 代码实现运动方程将F矩阵…

TCP网络编程

一)TCP Socket介绍: 1)TCP和UDP有着很大的不同,TCP想要进行网络通信的话首先需要通信双方建立连接以后然后才可以进行通信,TCP进行网络编程的方式和文件中的读写字节流类似,是以字节为单位的流进行传输 2)针对于TCP的套接字来说,J…

Kotlin(十) 空指针检查、字符串内嵌表达式以及函数默认值

空指针检查 我们在之前的章节里,有定义一个Study的类,它有两个函数,一个doHomework(),一个readBooks()。然后我们定义个doStudy函数,来调用它们,代码如下: fun doStudy(study: Study) {study.doHomework(…

TSINGSEE青犀智能分析网关工服识别算法,如何最大限度保障工人安全?

众所周知,TSINGSEE青犀智能分析网关算法繁多,大多数算法已经和大家讲解过了,今天就和大家聊一聊工服识别算法。工服识别算法一般应用于工地、化工、煤矿等场所,用来监督检测施工人员是否按照要求着工服,最大程度保障人…

面试10000次依然会问的【线程池】,你还不会?

线程池的基本概念 线程池是一种基于池化技术的线程使用方式,它允许我们有效地管理和复用线程,减少线程的创建和销毁的开销,从而提高系统的响应速度。在Java中,线程池的管理主要通过ThreadPoolExecutor类来实现。 线程池的定义与…

IntelliJ IDEA - Git Commit 后 Commit 窗口不消失解决方案

这个现象是在 2023 年版本后开始的,一开始以为是 Mac 系统的原因,后来发现原来 Windows 也这样,所以应该只跟 IDEA 版本有关 可以看到左侧 commit 后,这个侧边栏还在,按理讲在以前的版本是之前消失,这样使…

SOLIDWORKS 2024新功能之Visualize篇

SOLIDWORKS 2024新功能Visualize 增强了创建引人注目的外观的功能 SOLIDWORKS Visualize 使用 Dassault Systmes 的企业 PBR 着色模型 (DSPBR) 来准确复制金属、玻璃、塑料和其他曲面的逼真外观。 DSPBR 是材料模型,用于基于物理的渲染,受 3DEXPERIENCE…

动态规划(3)---Leetcode509.斐波那契数

题目 分析 很明显的动态规划&#xff0c;直接写出。之前都是用递归来写。 题解 class Solution {public int fib(int n) {if (n0) return 0;if (n1) return 1;int q0,p1,r0;for(int i2;i<n;i){rqp;int tmpp;pr;qtmp; }return r;}

GIT的安装与常见命令

Git的介绍 Git是一个开源的分布式版本控制系统&#xff0c;最初由Linus Torvalds在2005年创建用于管理Linux内核的开发&#xff0c;现在已成为全球最流行的版本控制工具之一。 Git可以跟踪代码的修改&#xff0c;记录开发历程&#xff0c;保证多人合作开发时代码的一致性&…

如何在Android平板上远程连接Ubuntu服务器code-server进行代码开发?

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 1.ubuntu本地安装code-server 准备一台虚拟机&#xff0c;Ubuntu或者centos都可以&#xff0c;这里以VMwhere ubuntu系统为例 下载code serve…