内网是如何访问到互联网的(华为源NAT)

私网地址如何能够访问到公网的?

图片

在上一篇中,我们用任意一个内网的终端都能访问到百度的服务器,但是这是我们在互联网设备上面做了回程路由才实现的,在实际中,之前也说过运营商是不会写任何路由过来的,那对于我们这种私网地址是如何访问到公网的呢?那就是依靠一个技术,NAT---网络地址转换

 「模拟器、工具合集」复制整段内容
链接:https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab=7ulgil

NAT技术的由来与实现

在网络基础篇中讲解过目前的IPV4地址已经是枯竭的状态了,在早期发现问题的时候提出过几个解决办法,取消固定网络位的方式,引入了子网掩码,VLSM、CIDR来解决IP地址浪费的问题,同时提出了私网地址的概念,这样使得局域网都可以使用私网地址来进行通信,缓解了IPV4地址被用尽的情况,但是也带来了一个问题,私网地址的流量是不能进入公网的,因为私网地址每个不同的局域网都可以使用,重复都没有关系,在这样的情况下引入了一个技术,就是NAT,它实现的功能就是把私网地址转换成公网地址,相当于做了一个”伪装”一样,这样自然就能够去访问互联网了。

(1)配置更改

想要知道是如何实现的,那就先得配置上,然后在配合抓包以及查看状态来整体了解,先来做下初始化操作。

#出口路由器整改[AR1200]interface  g0/0/1[AR1200-GigabitEthernet0/0/1]undo pppoe-client dial-bundle-number 1[AR1200-GigabitEthernet0/0/1]ip address dhcp-alloc [AR1200]undo  ip route-static 0.0.0.0 0.0.0.0 Dialer1这里把之前做的PPPOE去掉,改成简单的DHCP模式,跟目前家庭网络其实差不多,更容易理解  #互联网设备整改[internet]interface  g0/0/1[internet-GigabitEthernet0/0/1]ip address 192.168.1.1 24[internet-GigabitEthernet0/0/1]dhcp select interface 
[internet]undo  ip route-static allWarning: This operation may lead to the deletion of all the public IPv4 static routes and their configurations. Continue? [Y/N]:y           //去掉所有静态路由

图片

图片

现在已经获取到地址了,也可以访问到外网的百度服务器,但是下面是无法访问的,配置下NAT,来看看它是如何实现的。

(2)NAT相关配置
#ACL匹配需要NAT转换的流量[AR1200]acl number 3000[AR1200-acl-adv-3000]rulepermit  ip在华为路由器配置里面,它是需要先定义一个规则的,这个规则的作用是匹配哪些内网网段能够做NAT转换,也就是该列表里面的允许转换,如果不在则不允许,而这个规则匹配工具就叫做ACL(Access Control list,访问控制列表),它的作用非常广泛,在NAT里面它就起到一个匹配的作用。#命令解析#ACL匹配需要NAT转换的流量[AR1200]acl number 3000[AR1200-acl-adv-3000]rule permit  ip
在华为路由器配置里面,它是需要先定义一个规则的,这个规则的作用是匹配哪些内网网段能够做NAT转换,也就是该列表里面的允许转换,如果不在则不允许,而这个规则匹配工具就叫做ACL(Access Control list,访问控制列表),它的作用非常广泛,在NAT里面它就起到一个匹配的作用。
#命令解析 acl number 3000:这条命令的作用是定义一个高级ACL,ID编号范围是3000~3999,高级可以匹配源目IP、源目端口号、协议类型等参数,在实际中用的最多,也最推荐用这种。
 rule permit ip:这个命令的作用是定义规则,一个ID编号里面是可以匹配N多规则的  • rule 后面跟动作,其中permit为匹配(抓取)的意思  • ip表示整个IPV4全部匹配,其实它是一条简化命令,完整是rule permit ip source any destination any,平时可以省略不写
整体下来这条ACL的作用就是匹配(抓取)所有ipv4数据。
#NAT转换配置[AR1200]interface  g0/0/1[AR1200-GigabitEthernet0/0/1]nat outbound 3000 这条命令的就是做NAT转换,但是这里注意outbound表示是出去的方向,也就是从内网进从外网出,其中3000就是上面定义的acl number 3000,这里只需要输入ID即可,整体命令的意思是,ACL 3000里面规则匹配上的进行NAT转换。(目前这里ACL是全部匹配)
(3)开始测试

图片

图片

访问成功了,现在是互联网设备没有回程路由的(注意服务器DNS与HTTP服务开启)

(4)NAT是如何实现内网访问外网的

图片

开启互联网接口的抓包以及出口路由器G0/0/0口抓包,然后来看看NAT是如何实现访问的

图片

图片

出口路由器G0/0/0口的抓包,过滤下,输入tcp or dns

图片

互联网G0/0/1口的抓包,不知道大家第一眼看过去有没有发现不一样的地方

图片

这个地址就是出口路由器对接互联网接口获取到的地址,源地址是从192.168.255.1变成了192.168.1.254了!来看看具体是如何实现的

图片

1、PC2发起DNS请求,经过办公区一交换机的二层转发、A核心的三层转发,以及出口路由器的三层转发

图片

查询路由表交给互联网处理,该路由是DHCP模式,自动从运营商设备获取到的

2、出口路由器在发出的时候,发现接口配置了NAT转换

图片

有了nat outbound 3000这个配置存在,路由器会查询ACL 3000的规则,发现是全部匹配,就会执行一个操作,NAT转换

图片

图片

抓包对比可以发现,源地址:192.168.255.1变成了192.168.1.254,源端口:49153变成了3624,其余的目的IP与目的端口号是没有变化的。

图片

并且路由器会记录这个转换记录在NAT 会话中(原始的五元组信息:源IP、目的IP、源端口、目的端口、协议,以及转换后的源地址以及源端口号),它的作用待会就能体现了,但是,这里模拟器有一个小问题,它的端口号记录的是不对的,跟抓包的完全对应不上的,真机是没这个问题的,转换后,把这个数据从G0/0/1发送出去,交给互联网。

3、互联网设备收到以后,查询路由表直接发现目标地址是直连,直接把数据交给服务器处理。

图片

4、服务器收到DNS请求后,开始回应,告诉客户端 www.baidu.com ,对应的地址是61.128.1.1

图片

将这个回应交给网关处理,就从网卡发出去,值得注意的是,服务器回应的地址是192.168.1.254(出口路由器的接口地址)

5、互联网收到这个数据包后,查询目的地址,查询路由表,发现是直连网段,直接丢给出口路由器

6、关键的来了,出口路由器收到以后,发现是给自己的,但是它发现自己的G0/0/1口是有NAT功能配置的,于是查询是否有NAT会话表

图片

路由器只要发现NAT会话里面有对应匹配(比如这里目的地址是192.168.1.254,端口号是10258的,就会匹配第二条,自然就会把192.168.1.254转换成192.168.255.1,端口号变成2312,当然这个模拟器的NAT会话不对,但过程是这样的)

图片

抓包对比,从互联网交给出口路由器的回包,目的地址是192.168.1.254,目的端口号是3624,经过出口路由器后,出口路由缓存了NAT会话信息,该数据包匹配了NAT会话的信息,它执行一个操作,NAT还原,把192.168.1.254还原成192.168.255.1,目的端口号3624还原成49153,这个就是就是路由器保留这个会话信息的作用,如果说路由器只执行转换操作,而不去生成这个NAT会话信息,那么导致的情况是,数据包回来的时候,路由器发现找的是自己,但是自己并没与去DNS请求,就把数据包给丢弃了,导致内网无法得到响应,也可以看出来NAT会话信息的重要性,后续排错会经常查看会话表。

图片

转换后,出口路由器查询路由表,发现192.168.255.1属于直连路由,直接从G0/0/0口发出去,交给192.168.250.1处理,然后核心A经过三层转发,交给办公区1交换机,同样执行二层转发交给PC2,至此PC2就得到了www.baidu.com 对应的IP地址了,剩下的流程是一样的,发起SYN,关键的地方就在于出口路由器的NAT转换。

有用的信息汇总与经验分享

(1)通过上面的分析知道,之所以内网能够去访问到外网资源,就是出口路由器做了NAT技术,NAT技术在实际中有两种分类,目前我们这篇接触到的叫做源NAT技术中的NAPT(网络地址端口转换),从上面抓包可以看到,在经过出口路由做了NAT配置的接口,源地址以及端口都会被转换,所以这个技术叫做源NAT--NAPT。

(2)数据包经过出口路由器的时候,接口配置了nat outbound 3000,路由器会查看ACL 3000里面的规则来进行转换,那转换的是哪个地址呢?就是接口的地址

图片

从抓包也可以看出来,内网的192.168.255.1经过出口路由器后被转换成了192.168.1.254,这种直接使用接口获取的地址进行转换的在实际中用的最多的,通常的场景是能上外网的地址只有一个的情况下使用这种方式,像DHCP从猫获取只有一个可上网地址,PPPoE拨号获取到的也只有一个地址,所以我们直接在接口下面配置nat outbound后面跟对应的ACL ID即可,它就会利用接口获取(配置)的地址进行转换,这种方式叫做Easy IP,这个只是一个称呼,每个厂商不太一样,记住它的作用即可。

(3)在回顾之前说过的运营商不会去在乎你内网是如何配置的,它也不会写回程路由,第一个是因为内网使用的是私网地址,运营商没法写,第二个是运营商知道在企业的出口,都会去配置NAPT技术,把内网的IP信息转换成运营商能够正常回包的地址。比如上面的环境,就像家庭网一样,猫出来分配192.168.1.0/24的网络,电脑或者路由器接下面就可以直接上网,因为猫能够处理该网段的信息,同样的上面的出口路由器从互联网那获取了一个地址192.168.1.254,这个互联网是知道这个地址在哪的,它能够去处理与转发,最终内网的192.168.255.1或者其他网段过来转换成该地址,就自然能够穿越互联网抵达服务器那了,换个角度看,它就像换了一个”马甲”伪装了一样,从始至终互联网设备看到的都是192.168.1.254在发数据,是看不到内网里面真实的地址信息的,所以NAT技术还有一个特性是隐藏地址真实信息。

(4)出口路由器在进行NAPT转换以后,在NAT信息中会保存一份记录,叫做NAT会话信息表,它的作用就是记录当前的该会话把源地址以及端口号转换成了多少,当该数据从外网返回的时候,出口路由器能够正常的处理,它可以依据之前生成的会话信息表,来还原成之前的信息。

图片

这里要注意,很多初学者卡在这,觉得为什么要还原呢?,PC2在发起DNS请求的时候,源端口是自己随机生成的(抓包看到得是49153),目的端口是53,它本地会维护这样一个会话,等待服务器的返回,记录的信息就是对应的端口号信息,如果这个时候外网返回的不进行还原,第一个目的地址互联网返回的是192.168.1.254,而不是192.168.255.1,第二个互联网返回的端口号是转换后的3624,实际PC2随机的端口号是49153,这两个是缺一不可的,否则会导致该通信就失败了,这就是要还原的原因,也是为什么要生成这样一个NAT会话表的作用,就是为了后续的数据包能够正常的还原信息返回。

(5)NAT会话信息并不是永久存在的,它有一个生存时间,不同的协议与应用生存时间不一样

图片

通过display firewall-nat session aging-time可以查看,也可以通过firewall-nat session 修改时间

多个内网网段它是如何转换的?

图片

在上面我们只测试了192.168.255.1访问,实际内网有很多内网都需要去访问外网的很多资源,那假设同时用PC2以及client2都去访问61.128.1.1,能不能通呢?

图片

重新抓互联网G0/0/1接口的数据

图片

测试没有问题

图片

过滤一下,只看DNS,有两次请求,两次回应,自然有一个是PC2,一个是client2的,这是经过路由器NAPT转换,所以源地址都变成了192.168.1.254了

图片

源地址都是一样,因为现在出口路由器就一个可上网地址,自然都转换的192.168.1.254,区别不一样的就是源端口,一个是3112,一个是3624,这个就是NAPT的核心机制了,不同的内网终端在经过出口路由器的时候,执行NAPT转换,接口地址只有一个都转换成192.168.1.254,端口号随机转换成不一样的,这样就能够很清晰的区分,当服务器回应这两个请求后,抵达出口路由器的时候,可以根据对应的端口号信息来进行区分,到底哪个回应给PC2的,哪个是回应给client2的,还原成会话信息表中之前的信息进行回复,这样保证只有一个可上网地址的情况下,多私网用户可以上网。

其他外网对接方式如何调用(PPPoE与静态)

#静态专线调用NATinterface GigabitEthernet0/0/1 ip address 219.135.2.55 255.255.255.192  nat outbound 3000这个跟DHCP模式是一样的,直接物理口调用即可
#PPPoE拨号调用NATinterface Dialer1 link-protocol ppp ppp chap user ccieh3c ppp chap password simple ccieh3c.com ppp pap local-user ccieh3c password simple ccieh3c.com mtu 1492 tcp adjust-mss 1452 ip address ppp-negotiate dialer user ccieh3c dialer bundle 1 nat outbound 3000          
这个有点特别,在拨号接口调用,因为实际可上网的地址在拨号口上,而不再物理口

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

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

相关文章

oracle归档模式下的快速热备方法-适合小库

在我们的一些小型的oracle生产库中,有些时候我们可以在不停库且不使用rman的情况下实现数据库的热备。该热备的原理是通过控制数据文件块头的scn号在备份时候不变化,进而保证备份的数据文件数据一致性。 一、环境 数据库版本: 数据库需要开启…

rabbitMq举例

新来个技术总监,把 RabbitMQ 讲的那叫一个透彻,佩服! 生产者 代码举例 public String sendMsg(final String exchangeName,final String routingKey,final String msg) {} /*** 发送消息* param exchangeName exchangeName* param routin…

2024年12月13日Github流行趋势

项目名称:nexus-xyz / nexus-zkvm 项目维护者:govereau slumber danielmarinq sjudson yoichi-nexus项目介绍:Nexus zkVM 是一个零知识虚拟机。项目star数:1,948项目fork数:343 项目名称:soxoj / maigret …

(九)机器学习 - 多项式回归

多项式回归(Polynomial Regression)是一种回归分析方法,它将自变量 xx 和因变量 yy 之间的关系建模为 nn 次多项式。多项式回归的目的是找到一个 nn 次多项式函数,使得这个函数能够最好地拟合给定的数据点。 多项式回归的数学表达…

Linux USB开发整理和随笔

目录 1 概述 2 硬件原理基础 2.1 USB发展 2.2 USB的拓扑 2.3 硬件接口 2.4 USB总线协议 2.4.1 通信过程 2.4.2 概念关系 2.4.3 管道PIPE 2.4.4 传输 2.4.5 事务 2.4.6 包结构与类型 2.4.6.1 令牌包 2.4.6.2 数据包 2.4.6.3 握手包 2.5 描述符 2.5.1 设备描述符…

️️️ 避坑指南:如何修复国密gmssl 库填充问题并提炼优秀加密实践20241212

🛡️ 避坑指南:如何修复国密gmssl 库填充问题并提炼优秀加密实践 ✨ 引言 在当下的数据安全环境中,SM4作为中国国家密码算法的代表性选择,被广泛应用于金融、通信和政府领域。然而,在实际开发中,即便是开…

沈阳理工大学《2024年811自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《沈阳理工大学811自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题

2023 年 408 大题解析

讲解视频推荐: 【BOK408真题讲解-2023】 一、数据结构 1. 算法题(图的邻接矩阵)13’ 已知有向图 G 采用邻接矩阵存储,类型定义如下: typedef struct{ //图的类型定义int num Vertices, numEdges; //图的顶点数和有…

【R语言】基础知识

一、对象与变量 R语言中的所有事物都是对象,如向量、列表、函数,变量、甚至环境等。它的所有代码都是基于对象object的操作,变量只是调用对象的手段。 1、对象 在R语言中,对计算机内存的访问是通过对象实现的。 # 字符型向量 …

【SpringBug】lombok插件中@Data不能生成get和set方法

一:问题引入 可以看到我们在类UserInfo上写了Data注解,但是在测试文件中生成的反编译target文件Us二Info中没有get和set方法 二:解决方法 1:Spring升级问题(解决了我的问题) 原因是Spring官方进行了升级…

Java版-图论-最短路-Floyd算法

实现描述 网络延迟时间示例 根据上面提示,可以计算出,最大有100个点,最大耗时为100*wi,即最大的耗时为10000,任何耗时计算出来超过这个值可以理解为不可达了;从而得出实现代码里面的: int maxTime 10005…

STM32 CubeMx HAL库 独立看门狗IWDG配置使用

看门狗这里我就不多介绍了,能搜到这篇文章说明你了解 总之就是一个单片机重启程序,设定好超时时间,在超时时间内没有喂狗,单片机就会复位 主要应用在单片机异常重启方面,比如程序跑飞(注意程序跑飞时你就…

uni-app实现小程序、H5图片轮播预览、双指缩放、双击放大、单击还原、滑动切换功能

前言 这次的标题有点长,主要是想要表述的功能点有点多; 简单做一下需求描述 产品要求在商品详情页的头部轮播图部分,可以单击预览大图,同时在预览界面可以双指放大缩小图片并且可以移动查看图片,双击放大&#xff0…

3D 生成重建035-DiffRF直接生成nerf

3D 生成重建035-DiffRF直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 本文提出了一种基于渲染引导的三维辐射场扩散新方法DiffRF,用于高质量的三维辐射场合成。现有的方法通常难以生成具有细致纹理和几何细节的三维模型,并且容易出…

中国计算机学会计算机视觉专委会携手合合信息举办企业交流活动,为AI安全治理打开“新思路”

近期,《咬文嚼字》杂志发布了2024年度十大流行语,“智能向善”位列其中,过去一年时间里,深度伪造、AI诈骗等话题屡次登上热搜,AI技术“野蛮生长”引发公众担忧。今年9月,全国网络安全标准化技术委员会发布了…

详解多租户架构下的资源隔离模式

文章目录 0.简介1.多租户概念1.1 基本概念1.2 单租户 vs 多租户 2.实现方案2.1 独立数据库方案2.1.1 优点2.1.2 缺点2.1.3 应用场景 2.2 共享数据库,独立 Schema2.2.1 优点2.2.2 缺点2.2.3 应用场景 2.3 共享数据库、共享Schema、共享表2.3.1 优点2.3.2 缺点2.3.3 应…

SMMU软件指南SMMU编程之寄存器

安全之安全(security)博客目录导读 本博客介绍了SMMUv3的编程接口: • SMMU寄存器 • 流表(Stream table) • CD(Context Descriptor) • 事件队列(Event queue) • 命令队列(…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

SEC_ASA 第二天作业

拓扑 按照拓扑图配置 NTP,Server端为 Outside路由器,Client端为 ASA,两个设备的 NTP传输使用MD5做校验。(安全 V4 LAB考点) 提示:Outside路由器作为 Server端要配置好正确的时间和时区,ASA防…

【电力负荷预测实例】采用新英格兰2024年最新电力负荷数据的XGBoost电力负荷预测模型

与小编上篇文章介绍的基于BPNN神经网络的电力负荷预测相比较,两种模型的负荷预测方法各有优势,神经网络能够自动提取特征并处理非线性关系,而XGBoost则具有预测精度高、运行速率快和可解释性强的特点。在实际应用中,可以根据具体需…