NAT地址转换+多出口智能选路,附加实验内容

news/2024/9/18 20:57:14/ 标签: 网络, 网络安全, 服务器, 智能路由器, 网络协议

本章主要讲:基于目标IP、双向地址的转换    

注意:基于目标NAT进行转换  ---基于目标IP进行地址转换一般是应用在服务器端口映射;

NAT的基础知识

1、服务器映射

服务器映射是基于目标端口进行转换,同时端口号也可以进行修改;

服务器映射可能会触环:

条件:

当服务是http时,防火墙上有缺省指向外界,路由器有该接口的IP指向防火墙

我们的服务器映射是做在虚拟IP上的(虚拟接口也可以做端口映射,且这个虚拟IP的网段和边界接口IP不是在同一个网段

情况:

--1、那么当我们从右边路由器访问这个服务时,正常访问80端口完全ok;

--2、当我们从右边外界访问这个服务时,访问的端口不是80端口,就会发生环路;

如:外界数据包发过来,我们的防火墙就会首先尝试进行一个nat地址转换;这里因为端口号不一样,而服务器映射是需要看端口号是否符合要求才会进行转换的;

显然这里端口号不一样就不会进行相应的转换;即使IP一样也不行,需要看端口和IP

而这里转换不了之后,下一步就是匹配路由表;一旦匹配路由表就会匹配上缺省,然后又将数据包丢回路由器了,而路由器匹配上路由发现边界接口的IP是在防火墙上,所以又会丢回来;------触环

解决办法:在缺省路由那个设备上设置空接口,也叫空接口路由;

提问:如果端口映射的接口IP是属于防火墙边界的直连网段的,那么还会不会触环?

不会,因为你看,老样子;

当数据包过来防护墙后,防火墙会先尝试NAT地址转换;显然端口不一样,转换不了;

然后会匹配路由表,因为这边路由表是有缺省和直连路由,这里显然就会匹配上直连路由,而他知道刚刚这个数据包就是从那边直连网段所在接口进来的;

所以他不会再传进去了,那么他会干嘛;当然是最后尝试发送一个ARP,最后再挣扎一下,看是否还有本网段内还有没有漏的;

---空接口也是路由,他叫空接口路由,只是子网掩码比较长

空接口一般是设置在缺省路由所在设备上;

2、NAT和路由谁先谁后

当然是NAT先,进行转换之后再路由;

安全策略的先后:安全策略是必须要一个区域和另一个区域的匹配;所以安全区域的先后取决于数据包刚刚进来的时候源和目标是否是同一个区域;

是同一个区域就需要先NAT转换;

不是同一个区域就先安全策略再nat;

当NAT地址转换设置成出接口转换时,且数据包也是从这个接口出去的,此时其实转换的地址可以是别的边界接口的地址;

我想说的是:nat地址出去的时候怎么转换的,回来的时候肯定也是用相同地址进行转换,即使出去和回来的接口不一样且nat还是出接口转换也不会改变这个规则;

如:

当这里做了一个服务器映射,是21 IP接口上做的

数据包从路由器发向防火墙,且防火墙的两个边界接口都是设置成的出接口地址转换;

当数据包是从21接口进来的,所以数据包在公网的时候,数据包的目标IP肯定就是21;

当数据包又从12接口出去的时候,这时做地址转换其实还是会按着进来的那两个地址进行转换;

所以出去的时候,即使我们是从12接口出去的,但是我们的源地址依然是进来的时候的目标地址21;

nat地址转换规则不会变,即使进来和出去的接口不一致也不会改变

出接口的地址转换可以用其他的出接口地址进行转换

注意:地址转换是首选nat,但是如果没有nat,server map表在老化之前也用来给防火墙用作地址转换;

3、策略路由

抓取目标流量,同时设置路由,然后让抓取的流量往我单独设置的这条路由上走;

---就是修改流量的轨迹,让他按我指定的方向走;

4、双向地址转换:源IP和目标IP都进行转换,端口是否需要转换看需求设置的nat策略

当我们的内部pc想通过公网访问内部服务器时,那么我们的数据包首先从pc来到我们的防洪墙,

--1、如果此时我们的防洪墙做的是基于源IP进行地址转换:显然这样是访问不到内部的服务器的;因为一旦转换,两个都是公网IP,防火墙通过缺省就会丢到路由器,路由器找不到就会直接丢包;

--2、如果我们此时是基于目标进行地址转换:我们的数据包就会把目标修改为内部服务器的真实IP,然后数据包成功来到这个服务器;但是服务器回包的时候,发现目标就是本网段的(因为我们的源IP一直没变,一直是私网的),所以此时我们的服务器就会直接向pc回包,不会去防火墙;

因为前面我的目标IP是服务器公网IP,现在回来的数据包发送者,即源IP不是公网IP,所以这个tcp连接会建立失败,因为前后对不上;这样我们就不能在这个服务器上面进行资源获取;   ---但是ping可以通,因为ping只管发送和回复,所以他才不会管回来的包的源IP是谁,他才不会管回来的包发送者是谁;

--3、如果我们此时是基于双向nat进行地址转换:我们的数据包首先还是会去到防火墙,然后防火墙就会把我的源IP和目标IP进行转换,注意此时的源IP转换之后必须不是在本网段的,不然还是会出现2的问题;当然,为了还满足上网需求,我们应该将源IP转换之后的IP变成公网的IP,所以最后源IP转换成了公网IP,目标IP转换成了私网IP;

发送给服务器后,服务器回包,发现目标IP是不属于本网段的,是公网的,然后也是发送给防火墙,然后防火墙再重新转换回来;服务器发送的源私网IP变成了开始的服务器的公网IP,目标公网IP变成了开始的私网IP;这样回复给了pc,这样pc看是目标发送给我的,就会成功建立tcp连接;

补充:服务器端口映射可以不用真实接口IP,因为数据包进来就会被端口地址映射,所以不是说要必须要外界能和这个IP进行通信,才能用这个IP地址;

5、多出口智能选路:    ---全局选路策略;当边界设备上面有多个出口可以去公网,我们 进行择优选择

--1、基于链路带宽进行负载分担:

如果一条链路超过了过载保护阈值,则该链路不再参加智能选路(如果已经创建了会话

表的流量,则将依然走该链路。),将在剩下链路中继续进行智能选路。

基于源IP的会话保持---来自同一个源IP或者同网段源IP的流量将始终使用同一个出接口转发,适用于对链路切换敏感的场景

基于目的IP的会话保持---访问同一个目标或者相同的目标网段,流量将始终使用同一个出接口转发,适用于对链路切换敏感的场景

--2、基于链路质量进行负载分担

---1,丢包率---防火墙会连续发送若干个(默认5个)探测报文,去计算丢包的比

例。(丢包个数/探测报文个数)---丢包率是最主要的链路质量参数

---2,时延---防火墙会连续发送若干个(默认5个)探测报文,取五次往返时间的平均值

作为时延参数。

---3,延时抖动---防火墙会连续发送若干个(默认5个)探测报文,取两两之间时延差值

的绝对值的平均值。

--3、基于链路权重的负载分担

权重值由网路管理员手工指定

--4根据链路优先级的主备备份

--优先级也是由网络管理员手工指定

--如果没有配置过载保护,则优先级最高的先工作,当该链路故障,则次高的开始工作,其余继续备份,以此类推;

--如果配置了过载保护,则优先级最高的先工作,当超过保护阈值,则次高的开始工作,其余继续备份,相当于此时两条链路同时工作,以此类推。

6、DNS透明代理    ---去的时候修改目标dns,回来的时候又修改回来

举例:百度,其实电信给百度设置的公网IP和移动对百度设置的IP是不一样的;所以一旦选择电信的dns服务器,那么解析出来的IP肯定就是电信对百度设置的IP,那么就会通过电信的线路对百度进行访问;

有时电信的网络链路质量已经很差了,那么我们就应该让后续找想找电信dnf服务器解析的数据包变成去找移动;

---这就是dns透明代理:就是让边界设备,如防火墙修改数据包想访问的dns服务器

回来的时候又将源IP修改回来;

这样客户端就不会发现;

如:去的时候因为电信的数据链路质量太差了,所以我们的边界就修改了数据包中目标dns的IP,让他去访问移动dns,回来的时候,又将本来源IP是移动dns,修改为电信的dns;提高网络质量的同时不能让客户端知道我修改了他的目标dns

上实验:

前面6题上一个文章见过,我们这次主要讲后面5个;

问题7:办公区可以通过移动和电信进行上网,且是多对多

        在配置时候,我们此时可以直接写一个既不属于电信又不属于移动的地址池的动态nat,这样就可以避免分开写电信和移动的地址此了;减少代码量

问题8:分公司可以访问总公司的服务器

        从题目中我们可以看出,题目是想让公网访问我们内部的服务器,所以我们应当做一个服务器映射,即基于目标的IP的nat;

这里面需要注意的点是:

        1、我们的安全区域是指:哪个区域能访问我们的这个服务器,其实就是用来匹配的源区域;

        2、我们的端口地址转换是可选,这里如果写两个80,那么就代表公网访问80端口,转换之后的端口号还是80,即我的http服务;

其实我们可以看出,既然目标nat可以做,那我们的双向地址转换肯定也可以做

问题9:这里无非就是对链路选路进行一个策略;

        --1、首先在接口里面把接口的带宽配置欧克

        再通过接口创建一个链路接口,链路接口和接口基本一样,只是作用对象不同,链路接口是作用于选路策略的

--2、创建链路接口    ---这里应当选择源进源出,保证网络的稳定性

--3、选择智能选路

这里就是来选择智能选路的方式,同时把接口添加进智能选路机制里面来,让系统进行合理的选路

问题10:翻译一下:分公司内部可以通过公网IP访问内部服务器,公网也可以通过公网IP访问内网服务器;这里后半截问题很简单,公网访问内部服务器,基于目标地址转换即可;

主要是前半截问题:这里只能用双向nat,具体原因请思考包的发送过程!!

选择双向nat转换

配置转换后的源IP、目标IP、源服务、目标端口号(也是目标服务);

注意这里的源服务和目标服务(目标端口号)的个数必须相同

问题11:游客只能通过移动电路访问公网,可以看出这里我们需要写策略路由

策略路由:对抓取到的目标数据包进行一个针对性的转发,就像是为抓取到的数据包专门设置一个针对性的路由

这个出接口:就是针对我们抓取的数据包,我们需要选择哪条路进行一个转发;让你选择是移动这个出口还是电信这个出口

----------------------------------我们只讲思路,不讲详细过程;

                                          过程是背,思路是理解;

                                           想要走多远,10%背+90%理解

祝你年薪百万,成绩辉煌!!!


http://www.ppmy.cn/news/1475967.html

相关文章

堆、栈和队列(数据结构)

堆、栈和队列(数据结构) 这里写目录标题 堆、栈和队列(数据结构)**栈****队列**堆(Heap)()队列(Queue)(FIFO)栈(Stack&…

【C++】15.二叉搜索树

一、二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左…

vue中缩放比的使用

大屏适用性比较大&#xff0c;后台系统不推荐 抽组件&#xff0c;scaleScreen <template><divid"screen":style"{width: ${style.width}px,height: ${style.height}px,transform: ${style.transform},}"><slot ></slot></div&g…

leetcode:2833. 距离原点最远的点(python3解法)

难度&#xff1a;简单 给你一个长度为 n 的字符串 moves &#xff0c;该字符串仅由字符 L、R 和 _ 组成。字符串表示你在一条原点为 0 的数轴上的若干次移动。 你的初始位置就在原点&#xff08;0&#xff09;&#xff0c;第 i 次移动过程中&#xff0c;你可以根据对应字符选择…

debian固定ip

debian固定ip 前言 安装好的Debian系统后&#xff0c;为了确保每次登陆的ip不变&#xff0c;需要固定 方法 命令如下 ip addr | grep inet因为有有线网和无线网 2 种连接方式&#xff0c;因此需要区别。 其中 enp 的是有线&#xff0c;wlp 的是无线 查看网关 IP 命令如下 …

Jenkins中Node节点与构建任务

目录 节点在 Jenkins 中的主要作用 1. 分布式构建 分布式处理 负载均衡 2. 提供不同的运行环境 多平台支持 特殊环境需求 3. 提高资源利用率 动态资源管理 云端集成 4. 提供隔离和安全性 任务隔离 权限控制 5. 提高可扩展性 横向扩展 高可用性 Jenkins 主服务…

Elasticsearch索引管理和生命周期管理

在大数据和搜索引擎技术日益成熟的今天&#xff0c;Elasticsearch作为一款基于Lucene构建的开源搜索引擎&#xff0c;凭借其强大的全文搜索能力、分布式架构以及可扩展性&#xff0c;在日志分析、实时监控、应用搜索等多个领域得到了广泛应用。然而&#xff0c;随着数据量的不断…

前端框架入门之Vue _el和data的两种写法 分析MVVM模型

目录 _el与data的两种写法 MVVM模型 _el与data的两种写法 查看vue的实例对象 我们在这边注释掉了el属性 这样的话div容器就绑定不了vue实例 当我们可以在这里写一个定时任务 然后再回头指定 这个mount有挂载的意思 就是把容器对象交给vue实例后 去给他挂载指定的对象 &…

网络基础:Vlan原理与配置

VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将一个物理网络划分为多个逻辑子网的技术。它通过在网络交换机上配置&#xff0c;使得不同VLAN中的设备即使连接在同一个物理交换机上&#xff0c;也不能直接进行通信&#xff0c;从而实现…

10校大满贯!中国内地高校2024年1-6月CNS发文统计出炉

随着全球科研竞争的日趋激烈&#xff0c;CNS&#xff08;Cell、Nature、Science&#xff09;作为科学领域的三大顶级期刊&#xff0c;不仅是科研成果的展示平台&#xff0c;更是各国科研实力比拼的重要战场。近年来&#xff0c;中国高校在国际科研舞台上的表现愈发抢眼&#xf…

vuepress 配置文件分类管理

背景 在.vuepress的config.js配置文件中&#xff0c;我们需要设置head, plugins, nav三项主要配置。 如果都写在config.js就会显得很臃肿&#xff0c;不便于维护。 代码 config.js const headConf require("./config/headConf"); const pluginsConf require(&q…

Hadoop3:HDFS-集群安全模式

一、基本介绍 1、安全模式 文件系统只接受读数据请求&#xff0c;而不接受删除、修改等变更请求 2、 二、进入安全模式场景 1、NameNode在加载镜像文件和编辑日志期间处于安全模式&#xff08;就是启动集群的时候&#xff09;&#xff1b; 2、NameNode再接收DataNode注册时…

深入解析HTTP与HTTPS:定义、架构、原理、应用场景及实战指南

前言 在互联网技术飞速发展的今天&#xff0c;HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;已经成为Web通信的基础协议。无论是浏览网页、提交表单&#xff0c;还是进行数据交互&#xff0c;HT…

Apache Omid TSO 组件源码实现原理

Apache Omid TSO 组件实现原理 作用 独立进程&#xff0c;处理全局事务之间的并发冲突。 流程 TSOChannelHandler#channelRead -> AbstractRequestProcessor -> PersistenceProcessorHandler 总体流程 thread1TSOChannelHandler#channelReadAbstractRequestProcess…

c语言唯一一个三目运算符

条件表达式由两个符号&#xff08;&#xff1f;和&#xff1a;&#xff09;组成&#xff0c;必须一起使用。要求有三个操作对象&#xff0c;称为三目运算符。 一般形式为 表达式1&#xff1f;表达式2&#xff1a;表达式3 理解如下&#xff1a; a>b?(maxa):(maxb); //相当…

微调 Florence-2 - 微软的尖端视觉语言模型

Florence-2 是微软于 2024 年 6 月发布的一个基础视觉语言模型。该模型极具吸引力&#xff0c;因为它尺寸很小 (0.2B 及 0.7B) 且在各种计算机视觉和视觉语言任务上表现出色。 Florence 开箱即用支持多种类型的任务&#xff0c;包括: 看图说话、目标检测、OCR 等等。虽然覆盖面…

Win10+Docker环境使用YOLOv8 TensorRT推理加速

这一部分内容和WSL-Ubuntu20.04环境使用YOLOv8 TensorRT推理加速-CSDN博客 是基本相同的,有细微差别我也会在文中指出来。 1.TensorRTX下载 这里使用Wang-xinyu大佬维护的TensorRTX库来对YOLOv8进行推理加速的演示,顺便也验证一下前面环境配置的成果。 github地址:GitHub -…

【STM32 ARM】操作寄存器控制led

文章目录 前言GPIO操作方法led原理图设置时钟APB的概念 设置APB设置输出引脚设置引脚高低电平寄存器寻找寄存器地址 总结 前言 STM32是STMicroelectronics&#xff08;意法半导体&#xff09;公司的一款32位Flash微控制器产品&#xff0c;基于ARM Cortex™-M内核。STM32系列微…

NDK R25b 交叉编译FFMpeg4,项目集成,附库下载地址

1.准备工作 文件下载&#xff1a; NDK R25b下载地址&#xff1a;Android NDK历史版本下载网址 - 君*邪 - 博客园 (cnblogs.com) FFmpeg4.4.4 下载地址&#xff1a;https://ffmpeg.org/releases/ffmpeg-4.4.4.tar.xz 环境配置&#xff1a; 本次编译环境是在PC虚拟机中使用U…

【LeetCode力扣】006. Z 字形变换(Python)

最快解法 参考了运行时间最短的代码&#xff0c;其使用的思路就是按列排序后连接。 class Solution:def convert(self, s: str, numRows: int) -> str:if numRows < 2 : # numRows1时候&#xff0c;对应输出为原字符串return sn len(s)lst [ for _ in range(numRows…