当前位置: 首页 > news >正文

super_vlan

Super VLAN产生的背景

就经典的酒店例子来说,若是将101房和102房的网络划分在同一个vlan下面,那么101房出现了一个懂得某些安全技术的大佬,就会使得102房的隐私得到严重的隐患

所以这时我们就需要将二层给隔离开,但又要去保证101房和102房之间的基本通信,所以我们就需要使得101房和102房之间二层隔离,而三层互通

方法1:将101房划分一个vlan并分配一个IP地址段,在102房划分另一个vlan并分配另一个IP地址段,这样也能使得两房之间的网络互通,但是一旦酒店规模增大,vlan的id还好说,但就会显得非常地浪费IP地址

方法2:为了解决方法1中浪费IP地址的问题,我们可以使用super vlan技术来解决,如给101房在物理层面上分配一个sub vlan 10,给102房在物理层面上分配一个sub vlan 20 ,而对于sub vlan 10/20,逻辑层面上,它们都属于super vlan 2。即可达到这些sub vlan都属于同一个子网和网关,而又二层隔离,节约IP地址段的目的

image-20250101120213433

super vlan概述

通过上面对super vlan的基本应用介绍,我们大致了解了super vlan和sub vlan的用途是怎么样的,但还是对super vlan怎么建,用什么建等理论问题有所欠缺

super vlan:用于创建SVI接口,但不包含物理接口

sub vlan:只包含物理接口,没有SVI接口

只是将sub vlan创建出来是没有办法让sub vlan之间的主机通信的,要想是sub vlan之间通信,则需要通过super vlan上开启ARP代理

相同sub vlan的通信

相同sub vlan通信的时候,由于PC3发出的ARP报文中携带vlan 10 的标签,这个vlan 10的标签被交换机看到之后,会将ARP报文泛洪到所有被绑定为vlan 10的端口

当PC4收到ARP报文后,会进行一个应答包的发送,以同样的方式发送给PC3

image-20250101235711913

不同sub vlan的通信

这里super vlan已经开启了ARP代理功能,而在整个转发的过程中,PC是并没有跨二层的概念的,虽然说两者通信的方式都是通过交换机SW1的MAC地址,但是对于PC3和PC4而言,它们两个一直是在一个广播域内的

image-20250102000120547

为什么要开启ARP代理

对于PC而言,根本没有VLAN的概念,PC3和PC4会认为自己和对方都处在同一个广播域,所以当发生PC3访问PC4的时候,PC3会直接发ARP包给SW,让SW去给PC4

但在没有开启ARP代理之前,SW去不会去给ARP包给PC4的,因为只是PC上没有VLAN的概念,一旦到了交换机上,就有VLAN的概念,交换机发现没有和PC3处于同一个VLAN物理接口,就不会在进行ARP包的转发

开启ARP代理之后,super vlan就会向所有的sub vlan发送ARP包,即一个为广播形式的ARP包,但前提是super vlan需要到达目的网段,才能进行数据的发送

交换机发送完广播形式的ARP包后,就可以寻找到PC4,PC4收到这个ARP包后,将会发送一个应答包

交换机收到应答之后,在交换机SW上会产生一个MAC地址汇总表,存储了所有PC的MAC地址的汇总表,如果下次有访问的请求,就可以直接根据该表进行转发

随后由交换机在发送PC3自己的MAC地址,而PC3和PC4学到的MAC地址实际上都是交换机的,只不过在PC的眼中没有VLAN的概念

所以PC3和PC4都会认为这是对方的MAC地址,再次由PC3访问PC4的情况,就会将数据交给交换机SW,由交换机SW来根据MAC地址表处理后面的转发

image-20250102002250671

sub vlan与其它普通vlan的二层通信

由于super vlan是不存在任何的成员接口的,即super vlan没有任何的物理接口,所以但SW1给SW2发送报文的时候,是不包含任何super vlan的信息的

换一句话说,对于除了sub vlan 来说,将没有任何人知道super vlan的任何信息

所以当数据sub vlan 10要去访问SW2下的vlan10时,由于SW2不知道super vlan 的存在,就只会将sub vlan 10看作普通的vlan 10

从而,我们得出结论,sub vlan 与普通vlan的通信方式与普通vlan 和普通vlan 的通信方式是一致的

image-20250102003245353

image-20250102003254625

sub vlan与其它的三层网络通信

刚刚已经说过了,除了sub vlan,在整个网络体系中,就没有其它人知道super vlan这个概念了

所以若是sub vlan与其它的三层网络进行通信,也是走普通的IP网络转发

image-20250102141558125

super vlan的配置

image-20250102181107722

既然是高级的vlan,那么基础也是从vlan开始,所以第一步,我们要做的应该是创建vlan

SW(config)#vlan range 10,20,30,2

告诉vlan2,它是super vlan,并关联它的sub vlan为10,20,30

SW(config)#vlan 2
SW(config-vlan)#SW(config)#vlan 2
SW(config-vlan)#subvlan 10,20,30

创建SVI接口,这一步也是为sub vlan们配置网关

SW(config)#int vlan 2
SW(config-if-VLAN 2)#ip add 192.168.1.2 24

给sub vlan定义地址范围,这一步是可选的,当存在DHCP服务器的时候,这一步就是非必要的

重点:因为如果dhcp分配的给vlan 10中其中一台主机的地址为192.168.1.120,而我们却定义vlan 10 的地址段为192.168.1.10~192.168.1.40

这样会造成DHCP分配地址成功,但是该主机不能与外界通信的后果

SW(config)#vlan 10
SW(config-vlan)#subvlan-address-range 192.168.1.10 192.168.1.50
SW(config-vlan)#ex
SW(config)#vlan 20
SW(config-vlan)#subvlan-address-range 192.168.1.60 192.168.1.100
SW(config-vlan)#ex
SW(config)#vlan 30
SW(config-vlan)#subvlan-address-range 192.168.1.110 192.168.1.160
SW(config-vlan)#ex

将vlan划入到对应的接口

SW(config)#int g0/0 
SW(config-if-GigabitEthernet 0/0)#switchport mode access 
SW(config-if-GigabitEthernet 0/0)#switchport access vlan 10
SW(config-if-GigabitEthernet 0/0)#int g0/1
SW(config-if-GigabitEthernet 0/1)#switchport mode access 
SW(config-if-GigabitEthernet 0/1)#switchport access vlan 20
SW(config-if-GigabitEthernet 0/1)#int g0/2
SW(config-if-GigabitEthernet 0/2)#switchport mode access 
SW(config-if-GigabitEthernet 0/2)#switchport access vlan 30
SW(config-if-GigabitEthernet 0/2)#ex

super vlan 的限制

super vlan虽然解决了IP地址浪费的问题,但是还是存在着不少的缺陷的

1、super vlan往下后,没有成员接口,只有sub vlan,换句话说super vlan不属于任何一个物理接口,只有sub vlan才有物理接口,如果super vlan绑定到接口下,将会出现如下的报错

image-20250102201119899

2、super vlan不能作为其它super vlan的sub vlan,即在super vlan中是没有层级概念的

3、vlan1不能属于super vlan,因为在默认情况下,每个物理接口下都打上了vlan 1的标签,又因为super vlan不可能被绑定到物理接口下,所以vlan 1就更不可能成为super vlan了

4、在sub vlan上不能配置IP地址,sub vlan 没有路由口,即无SVI接口

5、一个sub vlan只能属于一个super vlan,我们可以将super vlan看作sub vlan下联成员的网关,而一个设备不能存在两个网关,自然不能存在属于两个super vlan

6、sub vlan的删除不能直接使用no vlan命令来删除,需要先将sub vlan转换成普通的vlan才能正常地删除

image-20250102204759204

7、基于super vlan所在设备的接口ACL和QOS,对于sub vlan来说是无效的

super vlan实验

image-20250102215257245

目的1:PC3和PC4都为一个sub vlan,PC5为另一个sub vlan,PC6不为sub vlan,但是处于vlan 10下

基础IP配置

PC3上,192.168.1.30

VPCS> ip 192.168.1.30 255.255.255.0 192.168.1.2

PC4上,192.168.1.40

VPCS> ip 192.168.1.40 255.255.255.0 192.168.1.2

PC5上,192.168.1.50

VPCS> ip 192.168.1.50 255.255.255.0 192.168.1.2

PC6上,192.168.1.60

VPCS> ip 192.168.1.60  255.255.255.0 192.168.1.2

配置SW1和SW2上的接口类型为trunk,并且允许所有vlan通过

SW1上

SW1(config)#int g0/3
SW1(config-if-GigabitEthernet 0/3)#switchport mode trunk 
SW1(config-if-GigabitEthernet 0/3)#switchport trunk allowed vlan all

SW2上

SW2(config)#int g0/1
SW2(config-if-GigabitEthernet 0/1)#switchport mode trunk 
SW2(config-if-GigabitEthernet 0/1)#switchport trunk allowed vlan all

配置super vlan

在SW1上创建所需要的vlan

SW1(config)#vlan range 10,20,2 
SW1(config-vlan-range)#ex

在SW1上配置super vlan,并划分sub vlan

SW1(config)#vlan 2
SW1(config-vlan)#supervlan
SW1(config-vlan)#subvlan 10,20
SW1(config-vlan)#ex

为sub vlan划分物理接口

SW1(config)#int g0/0 
SW1(config-if-GigabitEthernet 0/0)#switchport mode access 
SW1(config-if-GigabitEthernet 0/0)#switchport access vlan 10
SW1(config-if-GigabitEthernet 0/0)#int g0/1
SW1(config-if-GigabitEthernet 0/1)#switchport mode access 
SW1(config-if-GigabitEthernet 0/1)#switchport access vlan 10
SW1(config-if-GigabitEthernet 0/1)#int g0/2
SW1(config-if-GigabitEthernet 0/2)#switchport mode access 
SW1(config-if-GigabitEthernet 0/2)#switchport access vlan 20
SW1(config-if-GigabitEthernet 0/2)#ex

在我们没有配置SVI,即没有开启ARP代理之前,由于PC3和PC4都是处于sub vlan10,所以PC3与PC4是互通的,而PC5却是处于sub vlan 20下,所以此时PC3/PC4去pingPC5是ping不通的

image-20250102220339015

现在在SW1上将SVI配上,会默认自动开启ARP代理,此时PC3/PC4应该是能ping通PC5的

SW1(config)#int vlan 2
SW1(config-if-VLAN 2)#ip add 192.168.1.2 24
SW1(config-if-VLAN 2)#ex

PC3ping通PC5图片

image-20250102220425179

此时若是手动将ARP代理给关掉,则会返回刚刚PC3/PC4去pingPC5是ping不通的现象

SW1(config)#vlan 2
SW1(config-vlan)#no proxy-arp 

PC3再次ping不通PC5图片,如果出现ping的现象,那说明刚刚SW1发个PC3的MAC地址缓存还存在

image-20250102220806429

目标2:验证sub vlan 10与普通vlan 10之间的通信是三层还是二层

现在我们已经将ARP代理手动关闭了,如果由处于sub vlan 10的PC3去ping处于普通vlan 10 的PC6能ping通的话,那么就说明sub vlan 10与普通vlan 10之间的通信走的是二层,因为开启ARP代理才能代表走三层

在SW2上创建vlan 10并为vlan 10划分物理接口

SW2(config)#vlan 10
SW2(config-vlan)#ex

sub vlan 10的PC3去ping处于普通vlan 10 的PC6能ping通图片如下,说明sub vlan 10与普通vlan 10之间的通信是走三层的

image-20250102221328334

相关文章:

super_vlan

Super VLAN产生的背景 就经典的酒店例子来说,若是将101房和102房的网络划分在同一个vlan下面,那么101房出现了一个懂得某些安全技术的大佬,就会使得102房的隐私得到严重的隐患 所以这时我们就需要将二层给隔离开,但又要去保证10…...

前端CSS3学习

学习菜鸟教程 火狐-moz- 谷歌 Safari -webkit- 前面都加这个,可能才生效 边框 border: 1px solid #ddd 粗细 样式 样色 经常和border-radius 一块用 border-radius: 50px 20px 第一个左右 第二个右左 border-top-left-radius … box-shadow: 10px 5px 10px 0 #88…...

HTML——58.value和placeholder

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>value和placeholder属性</title></head><body><!--input元素的type属性&#xff1a;(必须要有)1.指定输入内容的类型2.默认为text,单行文本框-->&l…...

STM32单片机芯片与内部57 SPI 数据手册 寄存器

目录 一、SPI寄存器 1、SPI控制寄存器 1(SPI_CR1)(I2S模式下不使用) 2、SPI控制寄存器 2(SPI_CR2) 3、SPI 状态寄存器(SPI_SR) 4、SPI 数据寄存器(SPI_DR) 5、SPI CRC多项式寄存器(SPI_CRCPR)(I2S模式下不使用&#xff09; 6、SPI Rx CRC寄存器(SPI_RXCRCR)(I2S模式下不…...

前端异常处理合集

文章目录 前言&#xff1a;思考&#xff1a;一、为什么要处理异常&#xff1f;二、需要处理哪些异常&#xff1f; js 代码处理基本的try...catch语句 Promise 异常Promise 错误处理async/await 全局处理错误捕获window.onerrorwindow.onunhandledrejectionwindow.addEventListe…...

求职:求职者在现场面试中应该注意哪些问题?

求职者在现场面试中需要注意诸多方面的问题 面试前的准备 了解公司信息&#xff1a; 提前通过公司官网、社交媒体账号、新闻报道等渠道&#xff0c;熟悉公司的发展历程、业务范围、企业文化、主要产品或服务等内容。例如&#xff0c;如果是应聘一家互联网科技公司&#xff0c…...

第2章波动光学引论—抓本质,本质必定简单

1波动光学的电磁理论 1.1波动方程 1&#xff09;波动方程是通过描述波函数随时间和空间的变化来表达波动的传播和演化。 2&#xff09;一维波动方程&#xff1a; a.一维波动方程描述了沿着一条直线传播的波动。它的一般形式为&#xff1a; ∂u/∂t v ∂u/∂x 其中&#xff…...

分类模型评估利器-混淆矩阵

相关文章 地理时空动态模拟工具介绍&#xff08;上&#xff09; 地理时空动态模拟工具介绍&#xff08;下&#xff09;地理时空动态模拟工具的使用方法 前言 混淆矩阵&#xff08;Confusion Matrix&#xff09;是机器学习领域中用于评估分类模型性能的一种工具。它通过矩阵的…...

算法题(23):只出现一次的数字

初级&#xff1a; 审题&#xff1a; 需要输出只出现了一次的数据&#xff0c;其他数据均出现了两次 思路&#xff1a; 若不限制空间复杂度&#xff1a; 方法一&#xff1a;哈希表 用哈希映射循环一次&#xff0c;把对应数字出现的次数记录到数组里面&#xff0c;然后再遍历一次…...

@RestController与@Controller区别

区别1&#xff1a; RestController是Controller的升级版 区别2&#xff1a; RestController用于标识一个类作为控制器&#xff0c;并且可以处理HTTP请求。控制器类通常用于接收用户输入并决定返回响应的内容。 RestController通常用于返回JSON或XML数据 区别3&#xff1a;…...

使用ExecutorService和@Async来使用多线程

文章目录 使用ExecutorService和Async来使用多线程采用ExecutorService来使用多线程多线程过程的详细解释注意事项优点 使用Async来使用多线程对比Async和ExecutorService的多线程使用方式使用 ExecutorService 的服务类使用 Async 的服务类异步任务类自定义线程池主应用类解释…...

计算机网络 (19)扩展的以太网

前言 以太网&#xff08;Ethernet&#xff09;是一种局域网&#xff08;LAN&#xff09;技术&#xff0c;它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网技术不断演进&#xff0c;从最初的10Mbps到如今的10Gbps、25Gbps、40Gbps、100Gbps等&#xff0c;已成…...

构造器/构造方法

1. 构造器 1.1 概述 先浏览下面简单代码&#xff1b; class Cons{ // 属性int age;String name; // 方法public void show(){System.out.println("age"age);} } class ConsTest{public static void main(String[] args) {Cons c new Cons();// Cons() 就是…...

异常

目录 1. 异常的概念及使用 1.1 异常的概念 1.2 异常的抛出和捕获 1.3 栈展开 1.4 查找匹配的处理代码 1.5 异常的重新抛出 1.6 异常安全问题 1.7 异常规范 2. 标准库的异常 1. 异常的概念及使用 1.1 异常的概念 异常处理机制允许程序中独⽴开发的部分能够在运⾏时就…...

MySQL中distinct和group by去重的区别

MySQL中distinct和group by去重的区别 在MySQL中&#xff0c;我们经常需要对查询结果进行去重&#xff0c;而DISTINCT和GROUP BY是实现这一功能的两种常见方法。虽然它们在很多情况下可以互换使用&#xff0c;但它们之间还是存在一些差异的。接下来&#xff0c;我们将通过创建测…...

Qt判别不同平台操作系统调用相应动态库读取RFID

本示例使用的读卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b8jdyXi&ftt&id562957272162 #include <QDebug> #include "mainwindow.h" #include "./ui_mainwindow.h" #include "QLibrary"…...

vue2+echarts实现水球+外层动效

实现效果 安装echarts-liquidfill 需要安装echarts-liquidfill&#xff01;&#xff01;&#xff01;需要安装echarts-liquidfill&#xff01;&#xff01;&#xff01;需要安装echarts-liquidfill&#xff01;&#xff01;&#xff01; 安装命令 npm install echarts-liqui…...

C++ 基础思维导图(一)

目录 1、C基础 IO流 namespace 引用、const inline、函数参数 重载 2、类和对象 类举例 3、 内存管理 new/delete 对象内存分布 内存泄漏 4、继承 继承权限 继承中的构造与析构 菱形继承 1、C基础 IO流 #include <iostream> #include <iomanip> //…...

【gopher的java学习笔记】依赖管理方式对比(go mod maven)

什么是go mod go mod是Go语言官方引入的模块管理工具&#xff0c;旨在简化项目依赖管理&#xff0c;提高构建的可重复性和稳定性。以下是关于go mod的详细介绍&#xff1a; 在go mod之前&#xff0c;Go语言主要依赖GOPATH和vendor目录来管理项目依赖。然而&#xff0c;这种方式…...

CTFshow—远程命令执行

29-35 Web29 代码利用正则匹配过滤了flag&#xff0c;后面加了/i所以不区分大小写。 可以利用通配符绕过 匹配任何字符串&#xff0f;文本&#xff0c;包括空字符串&#xff1b;*代表任意字符&#xff08;0个或多个&#xff09; ls file * ? 匹配任何一个字符&#xff08;不…...

Qt之简易音视频播放器设计(十五)

Qt开发 系列文章 - MediaPlayer&#xff08;十五&#xff09; 目录 前言 一、QMediaPlayer 二、实现方式 1.添加multimedia 2.创建类vedioplayer 3.UI设计 4.用户使用 5.效果演示 总结 前言 利用Qt进行音视频播放器设计&#xff0c;首先比较方便使用的是Qt自带的音视…...

ArrayList 和LinkedList的区别比较

前言 ‌ArrayList和LinkedList的主要区别在于它们的底层数据结构、性能特点以及适用场景。‌ArrayList和LinkedList从名字分析&#xff0c;他们一个是Array&#xff08;动态数组&#xff09;的数据结构&#xff0c;一个是Linked&#xff08;链表&#xff09;的数据结构&#x…...

Wallpaper壁纸制作学习记录13

骨骼物理模拟 Wallpaper Engine还允许您为人偶变形骨骼配置某些物理模拟。选择骨骼时&#xff0c;点击编辑约束来配置骨骼这些属性。 警告 请记住&#xff0c;物理模拟可能会根据用户的最大FPS设置略微改变其行为。 Wallpaper Engine编辑器将始终以高帧速率渲染。您可以将壁纸…...

Visual Studio 2022安装教程

1、下载网址 Visual Studio 2022 IDE安装网址借助 Visual Studio 设计&#xff0c;具有自动完成、构建、调试、测试功能的代码将与 Git 管理和云部署融为一体。https://visualstudio.microsoft.com/zh-hans/vs/ 点击图片所示 双击运行 2、安装 点击C桌面开发&#xff08;右边…...

std__invoke 的使用

std__invoke 的使用 文章目录 std__invoke 的使用1. std::invoke 的功能2. 语法3. 使用场景1. 调用普通函数2. 调用成员函数3. 调用成员函数&#xff08;通过指针或引用&#xff09;4. 调用函数对象&#xff08;仿函数&#xff09;5. 调用 Lambda 表达式 4. std::invoke 的优势…...

2501d,d.109

原文 2.109.0带来了15个主要更改和26个修复的Bugzilla问题.非常感谢39位贡献者,是他们使2.109.0变成可能. 更改编译器 1,[下一版]现在,为类型实例的成员设置别名是个错误 2,添加位字段内省功能 3,添加了从CTFE写入消息的__ctfeWrite 4,现在-verrors也限制弃用警告 5,dtoh为e…...

1、蓝牙打印机环境搭建

本项目采用stm32f103c8T6芯片&#xff0c;通过库函数实现打印功能&#xff0c;并配置有小程序蓝牙通信上位机。 1、创建文件夹目录 core文件夹存放核心库文件 LIB文件夹存放标准库函数文件 这里可以删减&#xff0c;用不到的可以不要。 obj存放编译后的文件 project存放项目…...

Axure RP11安装学习

安装&#xff1a; 官网下载地址&#xff1a;Axure RP - UX Prototypes, Specifications, and Diagrams in One Tool 设置自己的安装目录&#xff0c;一步步安装即可。 汉化&#xff1a; 汉化包下载地址&#xff1a; 链接: https://pan.baidu.com/s/1eIRoGkVqAY3u3I27lgDJ6A…...

axios和fetch的实现原理以及区别,与XMLHttpRequest的关系,并结合react封装统一请求示例

Axios 和 Fetch 对比及统一请求封装 1. Axios 基础用法 1.1 安装和引入 // 安装 npm install axios// 引入 import axios from axios;1.2 基本请求方法 // GET 请求 axios.get(/api/users).then(response > console.log(response.data)).catch(error > console.error…...

矩阵运算提速——玩转opencv::Mat

介绍:用Eigen或opencv::Mat进行矩阵的运算&#xff0c;比用cpp的vector或vector进行矩阵运算要快吗? 使用 Eigen 或 OpenCV 的 cv::Mat 进行矩阵运算通常比使用 std::vector<int> 或 std::vector<double> 更快。这主要有以下几个原因&#xff1a; 优化的底层实现…...