计算机网络-NAT网络地址转换

今天来回顾下之前所学的知识,将它们串联起来进行巩固。一开始了解了IP编址进行IP设置和划分网段;学习了二层以太网交换,了解了二层通信基础;学习了路由基础知识,大致了解到了路由是什么?静态路由和动态路由;然后学习了VLAN的知识,进行虚拟局域网的划分和VLAN间通过路由器子接口、物理接口、VLANIF接口进行三层通信的知识;简单了解了二层交换机中为了冗余和备份交换机线路的STP生成树协议。

典型网络结构
典型网络结构

现在我们可以做到什么了呢?我们应该能够通过VLAN划分网段,配置网关以及通过简单的静态或默认路由进行网络互联,需要能够做到配置IP,配置网关,配置静态路由。但是在实际工作中一般是电信光猫--出口三层设备(路由器/防火墙)--核心网关--终端接入交换机,但是之前有学习过IP编址知道IP地址划分常用有A、B、C类地址,然后在每一类地址划分了私有地址,这些地址在公网设备也就是出口设备上不会进行路由转发,那怎么解决呢,使用NAT(Network Address Translation,网络地址转换)来实现地址转换。

一、NAT概述

由全球IP地址分配机构,IANA (Internet Assigned Numbers Authority)管理的IPv4地址,于2011年完全用尽。但是需要连接互联网必须要IP地址,但是公网地址已经没有了,因此出现了将私网地址转换成公网地址进行网络访问的解决方法。

A、B、C类地址中各预留了一些地址专门作为私有IP地址:

  • A类:10.0.0.0 ~ 10.255.255.255
  • B类:172.16.0.0 ~ 172.31.255.255
  • C类:192.168.0.0 ~ 192.168.255.255
私网地址
私网地址

简单讲就是一个企业出口申请从运营商申请一个IP地址部署在出口三层网络设备上,内部使用私网地址网段,进行网络访问时会将内网访问的数据包IP地址转换成那个唯一的IP地址。

二、NAT技术原理

NAT:对IP数据报文中的IP地址进行转换,是一种在现网中被广泛部署的技术,一般部署在网络出口设备,例如路由器或防火墙上。

NAT的典型应用场景:在私有网络内部(园区、家庭)使用私有地址,出口设备部署NAT,对于“从内到外”的流量,网络设备通过NAT将数据包的源地址进行转换(转换成特定的公有地址),而对于“从外到内的”流量,则对数据包的目的地址进行转换。

NAT技术原理
NAT技术原理

这里还要简单了解一下另外一个概念:端口。之前在网络参考模型知道网络是分层结构,网络层是IP协议,传输层有TCP和UDP,使用端口进行区分不同的上层数据。实际访问网络也是通过IP+端口+MAC进行区分目的地的。TCP和UDP的端口号范围都是0-65535,这意味着每个协议有65536个端口。端口号小于256的定义为常用端口,服务器一般通过常用端口号识别。大多数TCP/IP实现给临时端口号分配1024~5000之间的端口号,大于5000的端口是给其他服务预留的。常见的端口有FTP的21号端口,HTTP服务的80端口,SMTP的25端口和HTTPS的443端口。

NAT作用:

1、把内网私网IP转换为公网IP

2、隐藏内网、起到包含内网作用

3、适当缓解IPV4地址枯竭

4、解决公网设备回包路由问题

三、NAT分类

随着网络需要的不同可以有不同的实现方式。

3.1 静态NAT

每个私有地址都有一个与之对应固定的公有地址,私有地址和公有地址之间的关系是一对一映射。支持双向互访:私有地址访问Internet经过出口设备NAT转换时,会被转换成对应的公有地址。同时,外部网络访问内部网络时,其报文中携带的公有地址(目的地址)也会被NAT设备转换成对应的私有地址。

静态NAT
静态NAT
转发过程
转发过程

适用于有多个公网地址,内网主机较少,能够实现一对一转换的情形。

配置示例:

# 1、接口视图下配置静态NAT
[Huawei-GigabitEthernet0/0/0] nat static  global { global-address} inside {host-address } 

# 2、也可以在系统视图下配置静态NAT
[Huawei] nat static  global { global-address} inside {host-address } 

# 还要在接口开启
[Huawei-GigabitEthernet0/0/0] nat static enable

3.2 动态NAT

动态NAT:静态NAT严格地一对一进行地址映射,这就导致即便内网主机长时间离线或者不发送数据时,与之对应的公有地址也处于使用状态。为了避免地址浪费,动态NAT提出了地址池的概念:所有可用的公有地址组成地址池。

当内部主机访问外部网络时临时分配一个地址池中未使用的地址,并将该地址标记为“In Use”。当该主机不再访问外部网络时回收分配的地址,重新标记为“Not Use”。

动态NAT转换1
动态NAT转换1
动态NAT转换2
动态NAT转换2

配置示例:

# 创建地址池,配置公有地址范围,其中group-index为地址池编号,start-address、end-address分别为地址池起始地址、结束地址
[Huawei] nat address-group group-index start-address end-address

# 创建ACL,只有匹配上ACL才进行NAT转换
[Huawei] acl number
[Huawei-acl-basic-number ] rule permit source  source-address source-wildcard

# 接口视图下配置带地址池的NAT Outbound,no-pat参数指定不进行端口转换
[Huawei-GigabitEthernet0/0/0] nat outbound acl-number address-group group-index [ no-pat ]

# 查看转换信息
dis nat session all

ACL下次进行学习,大概意思就是只有指定主机才会进行转换。

动态NAT就是将多个可用的公网地址设置成一个地址池,内网主机需要访问外网时,选择一个闲置状态的IP地址并生成NAT表项,当地址不使用时再释放。

动态NAT还是基于地址一对一进行转发,要等待连接释放才能进行下一个地址转发,效率较低,比如内网主机100个,公网IP4个,那就效率很低了,虽然实际转发速度很快。

3.3 NAPT

动态NAT选择地址池中的地址进行地址转换时不会转换端口号,即No-PAT(No-Port Address Translation,非端口地址转换),公有地址与私有地址还是1:1的映射关系,无法提高公有地址利用率。

NAPT(Network Address and Port Translation,网络地址端口转换):从地址池中选择地址进行地址转换时不仅转换IP地址,同时也会对端口号进行转换,从而实现公有地址与私有地址的1:n映射,可以有效提高公有地址利用率。

实际网络访问只需要一个端口或者几个端口即可进行网络访问,因此只需要进行端口的转换即可,一个TCP和UDP端口范围为0-65535,进行端口的转发可以实现效率的提升。

NAPT
NAPT
转发过程1
转发过程1
转发过程2
转发过程2

配置示例:

# 在动态NAT的配置上不添加--no-pat即可
[R1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1

简单以访问百度网页为例讲一下端口通信:

  • 主机从1024-65535之间范围起一个端口,如55508
  • 目的地为百度www.baidu.com,目的端口http:80,https:443
  • 出口地址:111.21.8.5,192.168.1.1:55508-->111.21.8.5:62105 --> www.baidu.com:443
  • 出口设备记录转换表项,百度返回数据进行对应的转换

3.4 Easy IP

Easy IP:实现原理和NAPT相同,同时转换IP地址、传输层端口,区别在于Easy IP没有地址池的概念,使用接口地址作为NAT转换的公有地址。

Easy IP适用于不具备固定公网IP地址的场景:如通过DHCP、PPPoE拨号获取地址的私有网络出口,可以直接使用获取到的动态地址进行转换。

这个实际才是工作中常见方式,通过电信的光猫自动获取到一个地址,进行源IP和源端口的转换,没有自己的公网地址。

Easy IP
Easy IP

配置示例:

# 示例,将当前接口地址作为公网地址进行源ip和端口的映射
[R1-GigabitEthernet0/0/1]nat outbound 2000

3.5 NAT Server

上面的动态地址转换与端口转换是自动转换端口,不能指定端口的对应关系,这时候如果内网有服务器需要发布到公网对外就需要使用NAT Server。

NAT Server:指定[公有地址:端口]与[私有地址:端口]的一对一映射关系,将内网服务器映射到公网,当私有网络中的服务器需要对公网提供服务时使用。

外网主机主动访问[公有地址:端口]实现对内网服务器的访问。

NAT Server
NAT Server
转换过程
转换过程

简单来说就是指定内网服务器地址和端口映射到公网地址的指定端口,供外部访问公网地址对应端口实现服务发布。

配置示例:

# 进入对应接口
[R1]interface GigabitEthernet0/0/1 

# 配置地址
[R1-GigabitEthernet0/0/1]ip address 122.1.2.1 24

# 指定映射TCP/UDP协议,指定内网地址和公网地址和端口
[R1-GigabitEthernet0/0/1]nat server protocol tcp global 202.10.10.1 80 inside 192.168.1.1 8080

一般适用于有固定公网地址,用于对外发布服务提供公网访问,一个公网地址可以映射多个端口。

四、典型网络配置实验

拓扑图如下: NAT实验

配置示例:

核心交换机


# 核心交换机配置VLAN与网关地址,下联交换机配置trunk,上联路由器配置ACCESS VLAN 30
interface Vlanif10
 ip address 192.168.10.254 255.255.255.0
#
interface Vlanif20
 ip address 192.168.20.254 255.255.255.0
#
interface Vlanif30
 ip address 10.0.0.2 255.255.255.252
#
interface MEth0/0/1
#
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 30
#
interface GigabitEthernet0/0/2
 port link-type trunk
 port trunk allow-pass vlan 10 20
#
interface GigabitEthernet0/0/3
 port link-type trunk
 port trunk allow-pass vlan 10 20

# 配置默认路由指向路由器
ip route-static 0.0.0.0 0.0.0.0 10.0.0.1

出口路由器:

# 配置接口地址和NAT
interface GigabitEthernet0/0/0
 ip address 122.12.1.1 255.255.255.252 
 nat outbound 2000
#
interface GigabitEthernet0/0/1
 ip address 10.0.0.1 255.255.255.252 


# 配置路由,向外的默认路由和会内网的静态路由
ip route-static 0.0.0.0 0.0.0.0 122.12.1.2
ip route-static 192.168.10.0 255.255.255.0 10.0.0.2
ip route-static 192.168.20.0 255.255.255.0 10.0.0.2

# ACL
acl number 2000  
 rule 5 permit 

Internet:

# 中间路由器不需要额外配置
interface GigabitEthernet0/0/0
 ip address 122.12.1.2 255.255.255.252 
#
interface GigabitEthernet0/0/1
 ip address 23.12.1.2 255.255.255.252 

百度:

# 配置地址和默认路由
interface GigabitEthernet0/0/1
 ip address 23.12.1.1 255.255.255.252 

#
ip route-static 0.0.0.0 0.0.0.0 23.12.1.2

总结:实际情况下一个企业只有一个或者几个公网地址,为了内网主机的私网地址能够访问互联网需要在出口设备进行NAT地址转换,实际情况中采用NAPT和Easy IP进行地址和端口同时转换,然后如果有内部服务器需要对外提供访问可以通过NAT Server进行端口一对一映射。

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【QT】多窗体应用程序设计

目录 1主要的窗体类及其用途 2 窗体类重要特性的设置 2.1 setAttribute()函数 2.2 setWindowFlags()函数 2.3 setWindowState()函数 2.4 setWindowModality()函数 2.5 setWindowOpacity()函数 3 多窗口应用程序的设计 3.1 主窗口设计 3.2 QFormDoc类的设计 3.3 QFormDoc类的使用…

【Python_PySide6学习笔记(三十一)】基于PySide6实现自定义串口设备连接界面类:可实现串口连接断开、定时发送等功能

基于PySide6实现自定义串口设备连接界面类:可实现串口连接关闭、定时发送等功能 基于PySide6实现自定义串口设备连接界面类:可实现串口连接关闭、定时发送等功能前言一、界面布局二、串口相关功能实现三、完整代码四、调用方法五、实现效果基于PySide6实现自定义串口设备连接…

入门指南:使用STM32微控制器进行ADC数据采集

使用STM32微控制器进行ADC(模数转换器)数据采集是嵌入式系统开发中常见的任务。本文将介绍如何通过STM32CubeMX和HAL库函数进行ADC数据采集,并提供相应的代码示例。 1. STM32CubeMX配置 首先,使用STM32CubeMX工具配置STM32微控制…

纸黄金实战投资技巧:避免亏损的有效策略

在纸黄金交易的实战中,避免亏损是每位投资者都追求的目标。虽然任何投资都存在一定的风险,但采取一些有效的策略可以帮助投资者最大限度地减少亏损的可能性。以下是一些在纸黄金交易中避免亏损的实战技巧: 一、设定止损点是避免亏损的关键 止…

【Java封装Jar包】将自己的代码封装为一个jar包⭐️以便在别的项目可以直接引用使用

哎,有了,搞一个Jar包给你! 目录 前言 一、新建一个Java项目,样例为新建一个Springboot项目,引入了下面两个依赖 二、新建一个测试工具类 三、封装为Jar包 四、项目引入Jar包 五、测试下Jar包 小伙伴们大家好&…

接口测试需求分析

测试接口的时候,可能很多人都会想,按着研发给的接口协议文档来测,不就好了吗? 其实,对于接口的测试,还需要有点深度的需求分析,然后再进行对应的测试。对于接口测试,这里有个不太详…

数字电源简介

数字电源简介 定义主要应用场景数字电源的基本组成常见算法常见电源拓扑PFCLLC 数字电源与模拟电源对比参考链接 定义 常见定义有以下四种: 通过数字接口控制的开关电源,强调的是数字电源的“通信”功能。可通过I2C或类似的数字总线来对数字信号进行控…

MongoDB-数据库文档操作(2)

任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握: 查询文档命令;删除文档命令。 查询文档 我们先插入文档到集合 stu1 : document([{ name:张小华, sex:男, age:20, phone:12356986594, hobbies:[打篮球,踢足球…

【GCC】6 接收端实现:周期构造RTCP反馈包

基于m98代码。GCC涉及的代码,可能位于:webrtc/modules/remote_bitrate_estimator webrtc/modules/congestion_controller webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.cc webrtc 之 RemoteEstimatorProxy 对 remote_bitrate_estimator 的 RemoteEstimato…

腾讯云主机优惠价格表(2024新版报价)

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

好消息,Linux Kernel 6.7正式发布!

据有关资料显示,该版本是有史以来合并数最多的版本之一,包含 17k 个非合并 commit,实际合并的超过1K个。 那么该版本主要有哪边变化呢?下面我来一一列举一下: Bcachefs文件系统已被合并到主线内核,这是一款…

Template Engine-05-模板引擎 Thymeleaf 入门介绍

拓展阅读 java 表达式引擎 logstash 日志加工处理-08-表达式执行引擎 AviatorScriptMVELOGNLSpELJEXLJUELJanino QLExpress 阿里表达式引擎系统学习 Thymeleaf简介 1.1 什么是Thymeleaf? Thymeleaf是一款现代的服务器端Java模板引擎,适用于Web和独…

表的增删改查 进阶(一)

🎥 个人主页:Dikz12🔥个人专栏:MySql📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 数据库约束 约束类型 NOT NUll 约束 UNIQUE 约束 D…

【FPGA Modsim】 抢答器设计

实验题目: 抢答器设计 实验目的: 掌握应用数字逻辑设计集成开发环境进行抢答器设计的方法;掌握时序逻辑电路设计的过程。 实验内容: 1、设计支持3名参赛者的…

IPv6自动隧道

自动隧道原理 IPv6自动隧道、即边界设备可以自动获得隧道终点的IPv4地址,所以不需要手工配置终点的IPv4地址,一般的做法是隧道的两个接口的IPv6地址采用内嵌IPv4地址的特殊IPv6地址形式,这样路由设备可以从IPv6报文中的目的IPv6地址中提取出IPv4地址。 IPv6OverIPv4自动隧…

vscode安装和基本设置

目录 vscode安装和基本设置1.HTML标签2.标签属性3.HTML基本结构4.安装vscode5.安装Live Server插件6.HTML注释7.文档说明8.HTML字符编码9.HTML设置语言10.HTML标准结构 vscode安装和基本设置 1.HTML标签 标签 又称 元素,是HTML的基本组成单位。标签分为&#xff1…

易懂的方式讲解ARM中断原理以及中断嵌套方法

ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。 我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin。在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ。 先…

SC20-EVB ubuntu14.04 Andriod 5.1 SDK编译下载

1.ubuntu14.04安装环境配置 vi /etc/profile to add export JAVA_HOME/usr/lib/jvm/java-7-openjdk-amd64 export JRE_HOME J A V A H O M E / j r e e x p o r t C L A S S P A T H . : {JAVA_HOME}/jre export CLASSPATH.: JAVAH​OME/jreexportCLASSPATH.:{JAVA_HOME}/lib…

numpy中数组的操作

目录 一:数组的属性 二:翻转数组 三:数组的计算 一:数组的属性 NumPy 数组(通常称为 ndarray)有许多有用的属性,这些属性可以帮助你了解数组的各个方面。以下是一些主要的属性: …

银行数据仓库体系实践(2)--系统架构

UML对系统架构的定义是:系统的组织结构,包括系统分解的组成部分,它们的关联性,交互,机制和指导原则,例如对系统群就是定义各子系统的功能和职责,如贷款系统群可能分为进件申请、核额、交易账务、…