NAT网络基本原理和认识,内网穿透的必备知识

news2024/11/17 9:57:11

NAT的基本介绍

NAT(Network Address Translation)是网络地址转换,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术,因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。

1.1  公有网络地址

公有网络地址(以下简称公网地址)是指在互联网上全球唯一的IP地址。2019年11月26日,是人类互联网时代值得纪念的一天,全球尽43亿个IPv4地址已经正式耗尽。

1.2  私有网络地址

私有网络地址(以下简称私网地址)是指内部网络或主机的IP 地址,IANA(互联网数字分配机构)规定将下列的IP地址保留 用作私网地址,不在互联网上被分配,可在一个单位或公司内部使用。RFC1918中规定私有地址如下:

A类私有地址:10.0.0.0—10.255.255.255  

B类私有地址:172.16.0.0—172.31.255.255  

C类私有地址:192.16.0.0—192.16.255.255

1.3  NAT的工作原理

NAT用来将内网地址和端口转换成公网地址和端口,建立一个会话,与公网主机进行通信。

NAT外部的主机无法主动跟位于NAT内部的主机通信,NAT内部主机想要通信,必须主动和公网的一个IP通信,路由器负责建立一个个映射关系,从而实现数据的转发。

总结:

数据包从内网到外网时会被 NAT 转换源IP地址,由私网地址转换成公网地址;

数据包从外网到内网时,会被 NAT 转换目的IP地址,由公网地址转换成私网地址。

1.4  NAT的术语与转换表

NAT包含4类地址:内部局部地址,外部局部地址和内部全局地址,外部全局地址;如下图:

内部局部地址(Inside Local):内网中设备所使用的IP地址。

内部全局地址(Inside Global):对于外部网络来说,局域网内部主机所表现的 IP 地址。

外部局部地址(Outside Local):外部网络主机的真实地址。

外部全局地址(Outside Global):对于内部网络来说,外部网络主机所表现的 IP 地址。外网设备所使用的真正的地址。

1.5  NAT功能

功能:NAT不仅能解决IP地址不足的问题,而且还能够有效地避免来自网络外部的入侵,隐藏并保护网络内部的计算机。

(1)宽带分享:这是NAT主机最大的功能;

(2)安全防护:NAT之内的pc联机到以太网上面时,它所显示的IP是NAT主机的公网IP,所以client端的pc就具有一定程度的安全,外界在进行porlscan(端口扫描)的时候,就侦测不到源client端的pc。

优点:节省公有合法的IP地址,处理地址重叠,增强灵活性,安全性;

缺点:延迟增大,配置和维护的复杂性,不支持某些应用(比如VPN)。

NAT 大的分类

NAT有三种类型:

静态NAT(Static NAT)

动态地址NAT(Pooled NAT)

网络地址端口转换NAPT(Port-Level NAT)

2.1  静态NAT

静态NAT是实现私网和公网地址一对一转换的。有多少个私网地址就需要配置多少个公网地址。静态NAT不能节约公网地址,但可以起到隐藏内部网络的作用。

内部网络向外部网络发送报文时,静态NAT将报文的源IP地址替换为对应公网地址;外部网络向内部网络发送报文时,静态NAT将报文的目的地址替换为相应的私网地址。

两种配置方法:

第一种:全局模式下设置静态NAT

[R1]nat static global 8.8.8.8 inside 192.168.10.10[R1]int g0/0/1 ## 外网接口[R1-GigabitEthernet0/0/1]nat static enable

在接口上启动 static enable 功能;

第二种:直接在接口上声明 nat static

[R1]int g0/0/1      ###外网接口[R1-GigabitEthernet0/0/1] nat static global 8.8.8.8 inside 192.168.10.10[R1]dis nat  static ####查看NAT静态配置信息

2.2  动态NAT

动态NAT:多个私网IP地址对应多个公网IP地址,基于地址池一对一映射。动态NAT将内部网络的私有 IP 地址转换为公用 IP 地址时,IP 地址是不确定,随机的。

所有被授权访问 Internet 的私有 IP 地址可随机转换为任何指定合法的 IP 地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态 NAT 转换。

动态 NAT 是在路由器上配置一个外网 IP 地址池,当内部有计算机需要和外部通信时,就从地址池里动态的取出一个外网 IP,并将他们的对应关系绑定到 NAT 表中,通信结束后,这个外网 IP 才被释放,可供其他内部 IP 地址转换使用,这个 DHCP 租约 IP 有相似之处。当 ISP 提供的合法 IP 地址略少于网络内部的计算机数量时。可以采用动态转换的方式。

动态NAT的配置:多个私网IP地址对应多个公网IP地址,基于地址池一对一映射。

(1)配置内部网口和外部网卡的IP地址

(2)定义合法IP地址池

[R1] nat address-group 1  212.0.0.100  212.0.0.200    ### 新建一个名为1的nat地址池

(3)定义访问控制列表​​​​​​​

[R1]acl  2000    #####创建acl,允许原地址为192.168.1.0/24网段的数据通过[R1-acl-basic-2000]rule permit source 192.168.1.1  0.0.0.255

(4)在外网口上设置动态IP地址转换​​​​​​​

[R1-acl-basic-2000]int g0/0/1  ####外网口[R1-GigabitEthernet0/0/1] nat outbound 2000 address-group 1 no-pat###将acl2000匹配的数据转换为该接口的IP 地址作为源地址。(no pat不做端口转换,只做IP地址转换,默认为pat)[R1]dis nat  outbound ####查看 NAT outbound的信息

2.3  PAT端口多路复用

PAT又称NAPT(Network Address port Translation),它实现一个公网地址和多个私网地址之间的映射,因此可以节制公网地址。

基本原理:PAT的基本原理是将不同私网地址的报文的源IP地址转换为同一个公网地址,但他们被转换为改地址的不同端口号,因而仍然能够共享同一地址。

 PAT的作用:

1.改变数据包的IP地址和端口号;

2.能够大量节约公网IP地址。

 PAT的类型:

1.动态PAT,包括NAPT和Easy IP;

2.静态PAT,包括NAT Server。

NAPT:多个私网IP地址对应固定外网IP地址。

(比如200.1.1.10),

配置方法与动态NAT类似

(1)配置外部网口和内部网口的IP地址

(2)定义合法IP地址池

[R1]nat address-group 1 200.1.1.10 200.1.1.10      ##使用同一个固定IP

(3)定义访问控制列表​​​​​​​

[R1] acl     2000       ###允许源地址为192.168.30.0/24网段的数据通过[R1-acl-adv-2000]rule permit source 192.168.30.0 0.0.0.255

(4)在外网口上设置IP地址转换​​​​​​​

[R1-acl-basic-2000]int g0/0/1        ##外网口[R1-G0/0/1]nat   outbound 2000 address-group 1

Easy IP:多个私网IP地址对应路由器外网接口公网IP地址(比如12.0.0.1)。

(1)配置外部网口和内部网口的IP地址

(2)定义合法IP地址池

(3)定义访问控制列表​​​​​​​

[R1] acl  3000   ###允许源地址为192.168.30.0/24的网段数据通过[R1-acl-adv-3000]rule permit ip source 192.168.30.0 0.0.0.255

(4)在外网口上设置IP地址转换​​​​​​​

[R1]int g0/0/1 ##外网口[R1-g0/0/1]nat  outbound  3000

当acl3000匹配的源IP数据到达此接口时,转换为该接口的IP地址,做源地址。

[R1]display nat session all       ##查看NAT的流表信息

NAT server:端口映射,将私网地址端口映射到公网地址,实现内网服务器供外网用户访问。​​​​​​​

[R1]int g0/0/1[R1-G0/0/1] nat server protocol global 9.9.9.9  inside 192.168.10.100  www

在连接公网的接口上将私网服务器地址和公网地址做一对NAT映射绑定。

[R1-Gigabi tEthernet0/0/1] nat server protocol tcp  global current-interface 8080 inside 10.1.1.1 www 

  端口号21可以直接使用关键字'FTP‘代替。

 

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

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

相关文章

二总线,替代传统485总线通讯,主站设计

二总线通信设计专栏 《二总线,替代传统485总线通讯,选型及应用-CSDN博客》《二总线,替代传统485总线通讯,低成本直流载波方案实现及原理-CSDN博客》《二总线,替代传统485总线通讯,调试避坑指南之最大的电流…

探索鸿蒙开发:鸿蒙系统如何引领嵌入式技术革新

嵌入式技术已经成为现代社会不可或缺的一部分。而在这个领域,华为凭借其自主研发的鸿蒙操作系统,正悄然引领着一场技术革新的浪潮。本文将探讨鸿蒙开发的特点、优势以及其对嵌入式技术发展的深远影响。 鸿蒙操作系统的特点 鸿蒙,作为华为推…

【Java】从0实现一个基于SpringBoot的个人博客系统

从0实现一个基于SpringBoot的个人博客系统 项目介绍准备工作数据准备创建项目准备前端页面编写配置文件 项目公共模块实体类公共层业务代码持久层实现博客列表实现博客列表约定前后端交互接口 实现博客详情约定前后端交互接口实现服务器代码 实现登录JWT令牌JWT令牌生成和校验实…

详解如何把文件或应用开机自启动

相信很多人都想把某些开机都要用的软件或文件打开,但不知道如何操作,或不知道可以手动设置开机自启动这一操作,下面为大家讲解实现思路: 1.首先打开winR打开运行框,在里面弄输入:shell:startup 2.回车进入文…

Win10/11共享文件夹,访问提示需要输入用户名密码

Win10/11共享文件夹,访问提示需要输入用户名密码 问题 已经关闭了密码保护共享,但是局域网其他电脑访问该文件夹,提示需要输入用户名和密码 解决方法 操作步骤 1.按WINR键打开运行,输入gpedit.msc打开本地组策略编辑器 2.按如…

Hive SQL-DML-Load加载数据

Hive SQL-DML-Load加载数据 在 Hive 中,可以使用 SQL DML(Data Manipulation Language)语句中的 LOAD 命令来加载数据到表中。LOAD 命令用于将本地文件系统或 HDFS(Hadoop 分布式文件系统)中的数据加载到 Hive 表中。 …

CSAPP | Floating Point

CSAPP | Floating Point b i b_i bi​ b i − 1 b_{i-1} bi−1​ … b 2 b_2 b2​ b 1 b_1 b1​ b 0 b_0 b0​ b − 1 b_{-1} b−1​ b − 2 b_{-2} b−2​ b − 3 b_{-3} b−3​ … b − j b_{-j} b−j​ S ∑ k − j i b k 2 k S\sum_{k-j}^{i}b_k\times2^k S∑k…

目标检测算法YOLOv6简介

YOLOv6由Chuyi Li等人于2022年提出,论文名为:《YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications》,论文见:https://arxiv.org/pdf/2209.02976 ,项目网页:https://github.c…

67万英语单词学习词典ACCESS\EXCEL数据库

这似乎是最多记录的英语单词学习词典,包含复数、过去分词等形式的单词。是一个针对想考级的人员辅助背单词学英语必备的数据,具体请自行查阅以下的相关截图。 有了数据才能想方设法做好产品,结合权威的记忆理论,充分调动用户的眼…

GD32F103RCT6/GD32F303RCT6(9)高级定时器互补PWM波输出实验

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 后续项目主要在下面该专栏中发布: 手把手教你嵌入式国产化_不及你的温柔的博客-CSDN博客 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转: 手把手教你嵌入式国产化-实战项目-无刷电机驱动&am…

Linux网络编程(四) 同时处理一个端口的UDP与TCP连接

从bind系统调用的参数来看,一个socket只能与一个socket地址绑定,即一个socket只能用来监听一个端口。因此,服务器如果要同时监听多个端口,就必须创建多个socket,并将它们分别绑定到各个端口上。这样一来,服…

Github下载的项目使用

根据该视频整理GitHub上的项目要怎么运行?一个视频教会你!_哔哩哔哩_bilibili 方法一:从release中找。 方法二: 从官网中找(位于右上角) 方法三:看readme(从readme中搜索以下词汇&a…

Milvus Cloud 的RAG 的广泛应用及其独特优势

一个典型的 RAG 框架可以分为检索器(Retriever)和生成器(Generator)两块,检索过程包括为数据(如 Documents)做切分、嵌入向量(Embedding)、并构建索引(Chunks Vectors),再通过向量检索以召回相关结果,而生成过程则是利用基于检索结果(Context)增强的 Prompt 来激…

【Qt 开发基础体系】字符串类应用和常用的数据类型

文章目录 1. Qt 字符串类应用1.1 操作字符串1.2 QString::append()函数1.3 QString::sprintf()函数1.4 QString::arg()函数 2. 查询字符串2.1 函数 QString::startsWith()2.2 函数 QString::contains()2.3 函数 QString::toInt()2.4 函数 QString::compare()2.5 将 QString 转换…

Github 50k star!吴恩达联合OpenAi共同编写<面向开发者的LLM入门教程> PDF推荐!

今天给大家推荐一本由吴恩达和OpenAI团队共同编写的关于大型语言模型&#xff08;LLM&#xff09;的权威教程<面向开发者的LLM入门教程>&#xff01;&#xff0c;在Github上已经高达50k star了&#xff0c;这含金量不用多说&#xff0c;在这里给大家强烈推荐一波&#xf…

电脑文件怎么加密?电脑涉密文件加密方法

文件加密是保护电脑涉密文件的重要方法&#xff0c;可以有效避免文件泄露风险。那么&#xff0c;电脑涉密文件该怎么加密呢&#xff1f;下面我们就来了解一下吧。 超级加密3000 在加密电脑涉密文件时&#xff0c;首先需要考虑的就是文件加密的安全性。因此&#xff0c;我们可以…

2024挂耳式耳机怎么选?5款高性价比开放式耳机推荐榜

近年来&#xff0c;开放式耳机受到了越来越多人的关注&#xff0c;特别是对于运动爱好者来说&#xff0c;在运动的过程中&#xff0c;传统的有线耳机不适合户外运动&#xff0c;不仅佩戴不稳&#xff0c;线还容易缠绕&#xff0c;而普通的蓝牙耳机长时间佩戴会感觉耳朵不适。在…

基于短时傅里叶变换域的一维信号邻域降噪方法(MATLAB)

基于傅里叶变换的信号频域表示及能量频域分布揭示了信号在频域的特征&#xff0c;但傅里叶变换是一种整体变换&#xff0c;只能了解信号的全局特性&#xff0c;不能有效检测信号频率随时间的变化情况。只有把时域和频域结合起来才能更好地反映非平稳信号的特征。时频分析的基本…

机器学习 - 梯度下降算法推导

要逐步推导多变量线性回归的梯度计算过程&#xff0c;我们首先需要明确模型和损失函数的形式&#xff0c;然后逐步求解每个参数的偏导数。这是梯度下降算法核心部分&#xff0c;因为这些偏导数将指导我们如何更新每个参数以最小化损失函数。 模型和损失函数 考虑一个多变量线…

Linux:进程通信(三)信号的捕捉

目录 一、信号捕捉函数 1、signal函数 2、sigaction函数 二、用户态与内核态 1、用户态 2、内核态 用户态与内核态转换 三、volatile关键字 四、SIGCHLD信号 一、信号捕捉函数 1、signal函数 signal函数是C语言标准库中的一个函数&#xff0c;用于处理Unix/Linux系…