VLAN是什么,一个好的网络为什么要划分VLAN呢?

前言

在上一篇中讲解了交换机的工作原理,知道了交换机处理数据的转发方式,其中有两种情况会以广播方式进行发送数据,第一种是目的MAC是全F的,以及组播MAC,第二种是未知单播帧,那这个会带来什么样的问题呢?

案例场景引入问题

某个办公楼有多个办公区域被不同团队租用,管理员给了每个办公区域一个独立的交换机进行接入,然后在统一接入到公用的核心交换机,通过路由器出去上网。

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

图片

上面这个属于常见的企业网架构,也是入门篇后续要学会规划跟搭建的,核心交换机以及路由器的内容暂时没学,可以忽略掉,我们主要把重点放在下面的三个办公区域。(后续大部分课程会以这个架构进行讲解知识点,另外整体的架构等知识点学完以后,会在案例部分进行整个框架解析,为什么要这样来组网)

很显然,像这样结构的网络划分,租用办公对的用户希望是自己属于一个独立的的区域,跟其他区域隔离开来,IT管理员给他们划分了多个网段,每个办公区域一个独立的网段,想用网段进行隔离,我们来看看这样的网络用什么样的问题。(地址如上,PC手动配置地址、掩码即可,实际中肯定是自动获取,由于我们还没学到DHCP的配置,所以暂时的手动)

  • 办公区域1在的PC2在访问PC1的时候,其他区域能否收该区域的数据包呢?

 这个抓包测试下就可以验证得到结果了,我们使用PC2  ping PC1,抓取任意一台其他区域的电脑。

建议在测试之前,把设备的名字改了,比如办公区一的,改成bg1,办公区二的改成bg2,办公区三的改成bg3,核心交换机改成Core,该名字的命令是sysname 

图片

从PC2去ping pc1,通的

图片

好玩的事情出现了,虽然这个网络的办公区域用了不同的网段进行了隔离,但是在PC6开启的抓包中,还是收到了来自于192.168.255.1的ARP请求,询问谁是255.50,那么得到了一个结论

图片

虽然网段区分了,但是由于交换机默认都处于一个广播域中,在同一个局域网下面还是可以接收到的,整个流程如下

图片

  • PC2发送ARP请求PC1的MAC地址,数据包从网卡发出,办公区1的交换机收到以后,读取二层头部,源MAC学习进MAC地址表(从E0/0/2学到),发现目标MAC是全F,执行广播操作,除了接收到该接口以外的所有接口发送出去,这个时候PC1会收到进行处理,会单播回应,交换机通过查询MAC表知道PC2在E0/0/2,直接转发过去。

  • 与此同时广播包会发送到核心交换机,核心交换机也会做相同的操作,学习源MAC、广播ARP,从源接口以外的所有接口广播。(G0/0/2、G0/0/3、G0/0/4)。

  • 办公区二收到以后,同样的操作,学习MAC,广播ARP,但是PC3与PC4收到后发现请求的不是自己,丢弃。

  • 办公区三收到以后,同样的操作,学习MAC,广播ARP,但是PC5与PC6收到后发现请求的不是自己,丢弃。

  • 出口路由器收到以后,发现请求的不是自己,丢弃。 

有没有发现什么严重的问题!PC2的一个ARP请求包,就这样传遍了整个局域网,虽然IT人员用不同的网段进行了区分,但是由于本身交换机的网络就属于一个大的广播域,加上交换机的处理机制,会把该包转发给除源接口以外的所有活动接口(物理线路起来的)广播出去,所以核心交换机收到以后,会转发给出口路由器、办公区二、办公区三都会是收到,同时办公区二、与三也会执行除源接口以外的所有活动接口广播出去,下面的PC都能收到,但是这对于办公区二以及三的终端来说,该流量就属于“无意义”的流量,因为收到的PC是需要去花费时间来拆开二层头部,读取ARP的内容,结果一看发现找的不是自己,然后丢弃,这还是一个PC发的ARP广播请求包,按一个稍微大点的网络,几百台终端在这样一个大的局域网里面,每一台访问某个主机就需要ARP解析,想想看,多少这种“无意义”的流量占用着带宽、浪费网络设备以及PC的资源,因为这个解析只对于这台请求的PC来说以及被请求的终端来说是有意义,特别是其他区域的终端来说,完全是应该避免这种情况发生的。

图片

这就是一个大的网络环境下,如果都处于一个大的广播域中带来的问题,回顾:路由器收到一个ARP广播报文请求后,如果发现找到不是自己,就会直接丢弃,不会转发,路由器的三层接口天生是隔离广播域的。

  • 更糟糕的情况

图片

PC2开启长ping功能,还是开启PC6的抓包

图片

假设访问的PC1(192.168.255.50)关机了,会发生什么事情呢?

图片

是不是很奇怪,单播报文,在抓包的PC6上发现了,而且是给192.168.255.50,这个又回到了之前交换机的处理数据过程的理论了,由于PC1关机,对应的交换机口物理线路关闭,交换机会把该接口的MAC地址记录清除。

图片

清除以后,这个时候当PC2在去访问192.168.255.50(PC1的时候),交换机不知道PC1的MAC在哪,所以只能采取泛洪方式的操作,除源接口以外的所有接口发送出去,这样整个局域网的的设备与终端都会收到,这只是一台出现这样的,那N台呢?是不是整个网络都被无用的流量给占用了。

上面的情况还只是设备与终端接收 不必要处理的流量,浪费了点链路带宽以及性能,但是在网络中还存在某些病毒跟攻击,某一台机器使用过程中不小心中了病毒,那整个局域网中是不是非常的危险了?加上一些攻击存在,可能整个网络面临瘫痪的情况。

VLAN的出现

基于上面的情况,主要的问题在于交换机的工作机制以及处于同一个广播域下,假设按照原本IT管理的想法是,每个办公区一个独立区域,区域之间互不影响。

图片

实现这样的需求,想办法把每个区域的广播域限制在该区域内传播,这样就不会影响其他区域了,我们都知道局域网的简称叫做LAN,实现每个区域一个广播域的技术叫做VLAN(Virtual Local Area Network),虚拟局域网,相当于把一个大的局域网,逻辑的分成多个小的局域网,实现每个小的局域网之间是相互独立、隔离;从而实现区域独立的效果。

  • 填坑:交换机默认有vlan吗?

图片

还记得在MAC表中以及静态绑定的时候是必须输入vlan参数的,而且默认情况下这个ID是1,这样就是说明交换机所有接口默认都属于VLAN1中,一个VLAN就是一个广播域。

  • 感受下配置VLAN后的效果。

    • VLAN怎么配置呢,先了解这两个步骤

(1)创建VLAN ID,创建方法,系统视图下,vlanid,id的范围=1~4094

举例:[bg1]  vlan 10      //创建了一个VLAN 10

(2)接口加入对应 VLAN

[bg1] interface  Ethernet0/0/1  //进入需要划分的接口

[bg1-Ethernet0/0/1]port link-type access   //接口类型为access,这个第一次接触,下一篇会介绍

[bg1-Ethernet0/0/1]port default vlan 10     //将该接口加入VLAN 10中(划入)

  • 该环境如何规划呢,才能让每个区域独立出来呢?

图片

上面提到过VLAN是把一个大LAN(局域网),逻辑的划分成多个需要的虚拟LAN,来进行隔离,按照这个原理,是不是把每个区域单独划分一个VLAN 不接可以了吗?,比如上图的区域一划分进VLAN 10,区域二划分进VLAN 20,区域三划分进VLAN 30,大致的规划有了,按照上面介绍的配置中,接口是需要加入对应的VLAN的,那哪些接口需要加入呢?

目前只关注如何隔离开这个广播网络,暂时不涉及其他如何上网以互通,来分析下如何隔离。

办公区之间如果想要隔离开,简单有效的办法就是把对接终端的接口划入一个独立的VLAN,这样是不是PC就属于单独的一个LAN,进行隔离了呢?我们来验证测试下。

  • 办公区一交换机配置

[bg1]vlan 10                                                     //创建VLAN 10的ID

[bg1]interface   Ethernet0/0/2                         //进入2号口,对接PC2

[bg1-Ethernet0/0/2]port link-type access     //接口链路类型为access

[bg1-Ethernet0/0/2]port default vlan 10      //接口默认VLAN为10,划入进10

[bg1-Ethernet0/0/2]q                                  //退出

[bg1]interface   Ethernet0/0/3

[bg1-Ethernet0/0/3]port  link-type access

[bg1-Ethernet0/0/3]port  default vlan  10

[bg1-Ethernet0/0/3]q

[bg1]interface  Ethernet0/0/1

[bg1-Ethernet0/0/1]undo port default vlan         //去掉该接口加入vlan10

  • 办公区二交换机配置

[bg2]vlan  20

[bg2-vlan20]q

[bg2]interface  Ethernet0/0/2

[bg2-Ethernet0/0/2]  port link-type access

[bg2-Ethernet0/0/2]  port default vlan 20

[bg2-Ethernet0/0/2]q

[bg2]interface  Ethernet0/0/3

[bg2-Ethernet0/0/3]  port link-type access

[bg2-Ethernet0/0/3]  port default vlan 20

[bg2-Ethernet0/0/3]q

  • 办公区三交换机配置

 不给出配置,能自己独立把办公区三的配置完成吗?

  • 在测试下

图片

这里直接开启抓核心交换机G0/0/1的包,看下还能否收到来自于PC2的ARP包请求。

图片

PC2访问PC1通了,但是核心交换机没有收到任何的数据包,说明这个广播包没有被发送到核心这边来,因为我们通过VLAN已经把它隔离了。

图片

查看MAC地址一个明显的特征可以发现,VLAN 参数那变成了10了,这里就要介绍一个重要的概念了,之前没有学到VLAN,所以没有提及。

当交换机从某个接口收到一个数据包时,读取包的二层头部,将源MAC记录在MAC表中,记录内容:MAC地址、VLAN ID、源接口,VLAN ID与源接口获取的方式通过从哪个口收到该数据包,从而知道该接口是哪个,这个接口对应的VLAN ID是哪个,所以最终MAC表中记录 PC2(5489-98ae-62b8)对应接口ETH0/0/2,所属VLAN  10

图片

当交换机读取到目的MAC是ARP的请求(全F),之前我们说的原理是从除了原接口以外的所有接口进行广播,这里呢多了一个参数,从除了原接口以外的所有属于VLAN 10的接口进行发送,这里就E0/0/3(PC1)所在的接口属于VLAN10,所以交换机只会发给E0/0/3,而E0/0/1没有任何配置,默认属于VLAN1,所以呢,不会进行发送。相当于把一台交换机逻辑的分成了两台交换机一样了,甚至可以多台。

其实之前讲解的原理,除了从源接口以外所有接口进行广播,其实也是会看VLAN的,只是默认情况下交换机所有接口都属于VLAN1,那会也没学VLAN的概念,就没有提及。

同样的,PC1关机或者出现问题后,PC2发送的数据包,交换机收到一个未知单播帧后,只会在该VLAN内除源接口以外的其他属于对应VLAN的接口进行发送,同样有某个机子中毒或者出现攻击,影响的只是该VLAN内的主机,其他区域并不影响。

所以呢,一个好的网络为什么要划分VLAN就是这个原因。 

留一个小疑问

从VLAN隔离的角度,如果直接在核心上面划分VLAN是不是更加方便快捷,只需要配置一台设备即可,这样做有什么坏处吗?

  

”承上启下”

对于VLAN的用途已经有了一个很好的认知,其中一些细节的地方一直没提到,比如接口的类型,那它是用于干什么的?接口处于access vlan 的时候,一个数据包过来它是如何把处理的呢?同一个VLAN内它是如何实现通信的,除了access以外,还有其他的类型吗?下一篇来了解这些内容。

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

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

相关文章

flowable流程图详细绘制教程

文章目录 前言一、flowable是什么?回答下之前的问题 二、flowable-modeler使用1. 使用步骤2.开始绘制弄一个请假的流程 三 加载该流程总结 前言 flowable有些晦涩难懂的东西: 我最开始接触的时候,还是用的activity,当时觉得好复杂,那么这次经过我自己在…

蓝桥杯c++算法秒杀【6】之动态规划【上】(数字三角形、砝码称重(背包问题)、括号序列、组合数问题:::非常典型的必刷例题!!!)

下将以括号序列、组合数问题超级吧难的题为例子讲解动态规划 别忘了请点个赞收藏关注支持一下博主喵!!!! ! ! ! ! 关注博主,更多蓝桥杯nice题目静待更新:) 动态规划 一、数字三角形 【问题描述】 上图给出了一…

[Python3学习笔记-基础语法] Python3 基础语法

本篇文章详细介绍Python3的基础语法,主要包括编码、标识符、Python保留字、注释、行缩进、多行语句、Number类型、字符串、空行、print打印等。 这些是Python最基础的东西,掌握好了才能更好的学习后续的内容。 有兴趣共同结伴学习Python的朋友&#xff0…

HDR视频技术之三:色度学与颜色空间

HDR 技术的第二个理论基础是色度学。从前面的内容中可以了解到,光学以及人类视觉感知模型为人类提供了解释与分析人类感知亮度的理论基础,但是 HDR 技术不仅仅关注于提升图像与视频的亮度范围,同时也关注于提供更加丰富的色彩。因此&#xff…

数据库MYSQL——表的设计

文章目录 前言三大范式:几种实体间的关系:一对一关系:一对多关系:多对多关系: 前言 之前的博客中我们讲解的是关于数据库的增删改查与约束的基本操作, 是在已经创建数据库,表之上的操作。 在实…

C++自动化测试:GTest 与 GitLab CI/CD 的完美融合

在现代软件开发中,自动化测试是保证代码质量和稳定性的关键手段。对于C项目而言,自动化测试尤为重要,它能有效捕捉代码中的潜在缺陷,提高代码的可维护性和可靠性。本文将重点介绍如何在C项目中结合使用Google Test(GTe…

备忘笔记-工具:JetBrains友好工具安装配置

1、配置/脚本文件下载 1、校验地址:https://3.jetbra.in/ 打开选择可用链接,点击跳转可用页面。 2、下载文件 左上角点击下载jetbra.zip文件 下载对应全家桶软件版本号,版本号在对应卡票右上角可见。 2、安装包下载 官网地址&#xff1a…

Flask 基于wsgi源码启动流程

1. 点击 __call__ 进入到源码 2. 找到 __call__ 方法 return 执行的是 wsgi方法 3. 点击 wsgi 方法 进到 wsgi return 执行的是 response 方法 4. 点击response 方法 进到 full_dispatch_request 5. full_dispatch_request 执行finalize_request 方法 6. finalize_request …

Linux 下进程基本概念与状态

文章目录 一、进程的定义二、 描述进程-PCBtask_ struct内容分类 三、 进程状态 一、进程的定义 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定…

IDEA使用tips(LTS✍)

一、查找项目中某个外部库依赖类的pom来源 1、显示图 2、导出Maven 项目依赖的可视化输出文件 3、点击要查找的目标类,项目中定位后复制依赖名称 4、在导出的依赖的可视化文件中搜索查找 5、综上得到,Around类来自于pom中的spring-boot-starter-aop:jar…

【shell编程】函数、正则表达式、文本处理工具

函数 系统函数 常见内置命令 echo打印输出 #!/bin/bash # 输出普通文本 echo "Hello, World!"# 输出变量值 name"Alice" echo "Hello, $name"# 输出带有换行符的文本 echo -n "Hello, " # -n 选项不输出换行 echo "World!&quo…

如何选择服务器

如何选择服务器 选择服务器时应考虑以下几个关键因素: 性能需求。根据网站的预期流量和负载情况,选择合适的处理器、内存和存储容量。考虑网站是否需要处理大量动态内容或高分辨率媒体文件。 可扩展性。选择一个可以轻松扩展的服务器架构,以便…

LeetCode 904.水果成篮

LeetCode 904.水果成篮 思路🧐: 求水果的最大数目,也就是求最大长度,我们是单调的向前求解,则能够想到使用滑动窗口进行解答,可以用hash表统计每个种类的个数,kinds变量统计当前种类&#xff0c…

初始Python篇(7)—— 正则表达式

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 正则表达式的概念 正则表达式的组成 元字符 限定符 其他字符 正则表达式的使用 正则表达式的常见操作方法 match方法的…

小程序免备案:快速部署与优化的全攻略

小程序免备案为开发者提供了便捷高效的解决方案,省去繁琐的备案流程,同时通过优化网络性能和数据传输,保障用户体验。本文从部署策略、应用场景到技术实现,全面解析小程序免备案的核心优势。 小程序免备案:快速部署与优…

L14.【LeetCode笔记】返回倒数第k个节点

目录 1.题目 2.分析 思路 代码 提交结果 1.题目 面试题 02.02. 返回倒数第 k 个节点 实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。 注意:本题相对原题稍作改动 示例: 输入: 1->2->3->4->5 和 …

深入解析 EasyExcel 组件原理与应用

✨深入解析 EasyExcel 组件原理与应用✨ 官方:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网 在日常的 Java 开发工作中,处理 Excel 文件的导入导出是极为常见的需求。 今天,咱们就一起来深入了解一款非常实用的操作 Exce…

基于Java Springboot高校教室资源管理系统

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库:…

k8s1.31版本最新版本集群使用容器镜像仓库Harbor

虚拟机 rocky9.4 linux master node01 node02 已部署k8s集群版本 1.31 方法 一 使用容器部署harbor (1) wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y install docker-ce systemctl enable docker…

C语言数据结构学习:循环队列

C语言 数据结构学习 汇总入口: C语言数据结构学习:[汇总] 1. 循环队列 队列的博客:C语言数据结构学习:队列 循环队列会预先定义最大队列空间,然后定义一个数组,通过队列头和队列尾指针分别指向开头和结尾&…