告别VLAN孤岛,两招让你轻松实现互访

news2024/11/27 19:49:42

实际网络中,经常会有VLAN之间互访的需求。

很多网工通常会选择一些方法,来实现不同VLAN间主机的相互访问,比如说Vlanif、单臂路由

今天就教你轻松实现VLAN间互访。


01-通过子接口实现 VLAN 间的互访


在二层交换环境下,一个VLAN就是一个广播域。


相同VLAN内的节点如果配置相同网段的IP地址即可直接通信,我们将这种通信称为二层通信。


602cebb58b29354cb375dce53cd4c501.jpeg


不同VLAN是不同的广播域,一般也是不同的逻辑子网,而且相互隔离,无法直接互访,这样能起到隔绝广播的作用,如上图所示。


但是实际网络中往往VLAN之间有互访的需求。


例如同一公司不同的部门划分在不同的VLAN,那么如果这些部门之间有数据往来的需求呢?


此时二层交换机就无法实现了,需要借助三层设备(路由设备)。


一个最简单的方法,就是使用路由器:


8d80b6600f9cb135b32cb1058e38302b.jpeg


在上图中,交换机将GE0/0/1及GE0/0/23口都配置为access类型并都加入VLAN10。


将GE0/0/2及GE0/0/24都配置为access类型并都加入VLAN20。


然后将路由器Router的GE0/0/1口作为VLAN10用户的网关,GE0/0/2作为VLAN20用户的网关,从而利用路由器的路由功能实现两个VLAN之间的互访。


这么做看似可行,但是一个VLAN就需要路由器拿出一个接口,那么如果内网有10个VLAN呢?


路由器表示鸭梨很大。


所以另一种稍微改进点的方法是:


在路由器的一个物理接口上,配置逻辑的子接口(Sub-interface)来实现同样的需求,这种解决方案叫单臂路由


340ce25031ffa2c63582e10fad35c1e4.jpeg


在上图中,交换机与路由器之间仅需一根物理链路即可。


这段链路由于要承载多VLAN的数据,因此在交换机上就要将与路由器对接的接口(GE0/0/24)设置为Trunk类型。


路由器这边呢,虽然只有一个物理接口(GE0/0/1)与交换机相连,但是我们可以基于这个物理接口创建多个子接口。


子接口GE0/0/1.10对应VLAN10,它能够识别VLAN10的标记,并且能够处理带VLAN10标记的数据帧,同理GE0/0/1.20对应VLAN20。


如此一来,在路由器上仅使用一个物理接口,即可支持多个VLAN的数据。


子接口是一个软件的、逻辑的接口,是基于物理接口创建的。路由器会把子接口当成是一个普通接口来对待。


通过子接口的方式我们可以大大节省硬件成本。


具体的配置如下:


99d753b239594d71f98512cfddeb5426.jpeg


完成如上配置后,交换机连接PC的接口添加到相应的VLAN则PC即可互通。


从上面这个碉堡的图可以更加形象地理解子接口的概念,其实就是相当于在一个大管道里套着两个小管道。


值得注意的是,一旦我们在物理接口上创建了子接口,那么后续的配置将不会再在物理接口上做,而是在子接口上进行。


我们只要保证物理接口没有被shutdown即可。


以太网子接口技术可部署在路由器上,也可以部署在防火墙上,我们来看一个例子。


9b18af71f3d96fc8004c94c17e90ed89.jpeg


上面是一个非常简单的组网场景,站点内网有两个VLAN,VLAN10及VLAN20。


现在的需求是,要求VLAN10及VLAN20能够实现互访,而且互访流量必须经过防火墙做安全检查。


VLAN10内的网元非常重要,属于高安全级别的网络,而VLAN20内的网络则安全级别更低。


解决的办法:


上图中的交换机工作在二层模式,连接终端的接口配置为access类型并且分别加入到相应的VLAN。


同时交换机连接防火墙的接口GE0/0/24配置为Trunk类型并且放通VLAN10及VLAN20。


随后在防火墙的GE0/0/1口上创建两个子接口:GE0/0/1.10及GE0/0/1.20。


子接口的配置如图所示,这两个子接口分别对应VLAN10及VLAN20。


最后别忘了,要将子接口添加到相应的安全域中。


例如VLAN10这个网络如果比较重要,则可将防火墙的GE0/0/1.10接口添加到高安全级别的区域。


如Trust,而VLAN20可能需要接受来自外部的访问,因此规划在DMZ域,故将子接口GE0/0/1.20添加到DMZ区域。接下去就可以部署域间包过滤规则了。



02-通过vlan-interface实现 VLAN 间的互访



在理解了子接口之后,再来看看三层交换机是如何实现VLAN间的数据互访的


 01  从这里切入,开始理解并部署三层交换 


我们知道二层交换机是可以实现二层交换的,它关心的是数据帧,对帧头的二层信息进行读取并且根据自己的MAC地址表进行转发。


而三层交换机相当于在二层交换机的基础上,多了个路由模块,于是乎它就能支持路由功能了:


支持路由选择协议、支持三层数据转发、支持IP路由查找、支持三层接口等等。


ea419faa90c7fca47d648333dc65a927.jpeg


先来认识一下vlan-interface(简称vlanif)。


这是一个逻辑接口,也就是说这并不是一个真实的物理接口。


当我们在交换机上创建了一个VLAN之后,紧接着就可以创建一个与这个VLAN对应的vlanif。


例如我们创建了VLAN10,那么VLAN10对应的vlanif就是interface vlanif 10,这个vlanif10是一个三层接口。


你可以为这个vlanif10配置IP地址,与VLAN10内的PC用户的IP地址同一网段。


这样一来,VLAN10内的用户就能够将网关指向这个vlanif。


当VLAN10的PC需要访问本网段以外的网络时,它们将数据交给网关,也就是vlanif10,再由三层交换机去做路由查找及数据转发。


实际上,在这个理解过程中,我们可以拿单臂路由那个模型对类比。


所以看上面这图,在三层交换机上创建了两个VLAN:


10和20,同时为两个VLAN的vlanif分配了地址作为各自VLAN的用户网关。


这样一来,这台交换机的路由表里就有了两个VLAN网段的路由。


那么当两VLAN之间要互访时,VLAN10的用户将数据丢给自己的网关。


也就是vlanif10,数据到了vlanif10之后,三层交换机查看数据包的目的地址IP并在路由表中进行匹配。


发现目的地是VLAN20的所在网段,因此将数据从VLAN20扔出去,最终抵达目的地的VLAN20的PC。


Vlanif的基础配置:


2efb74a3af1c5de5f13c5e5708e969ee.jpeg


实验拓扑如上图所示。


PC1及PC2分别位于VLAN10及VLAN20,现在要求完成三层交换机SW的配置,使得两个VLAN的用户能够相互通信。


SW的配置如下:


#创建VLAN10及20,将GE0/0/1划分到vlan10,GE0/0/2划分到vlan20:

[SW] vlan batch 10 20
[SW] interface GigabitEthernet 0/0/1
[SW-GigabitEthernet0/0/1] port link-type access
[SW-GigabitEthernet0/0/1] port default vlan 10
[SW] interface GigabitEthernet 0/0/2
[SW-GigabitEthernet0/0/2] port link-type access
[SW-GigabitEthernet0/0/2] port default vlan 20


#为vlanif10及vlanif20配置IP地址,作为vlan10及vlan20用户的网关

[SW] interface vlanif 10
[SW-vlanif10] ip address 192.168.10.254 24
[SW] interface vlanif 20
[SW-vlanif10] ip address 192.168.20.254 24


完成上述配置后,PC1将自己的IP地址设置在192.168.10.0/24 网段;


同时将网关配置为192.168.10.254;PC2的IP地址则配置在192.168.20.0/24,网关设置为192.168.20.254,两者就能够互相通信了。

 02  三层交换机、路由器简单组网

46d35fe8341878d5a5a46ab5d7f8517c.jpeg


实验拓扑如上图所示。


PC1及PC2分别处于VLAN10及VLAN20,它们的缺省网关都设置在三层交换机SW2上。


SW1是接入层交换机,只具备二层交换功能。SW2与路由器Router实现三层对接,用于两者对接的VLAN是VLAN99。


上述拓扑,我们可以画一个逻辑图来帮助理解:


75f88077cec931d811049f2d4e425764.jpeg


SW1的配置如下:


[SW1] vlan batch 10 20

[SW1] interface GigabitEthernet 0/0/1
[SW1-GigabitEthernet0/0/1] port link-type access
[SW1-GigabitEthernet0/0/1] port default vlan 10
[SW1] interface GigabitEthernet 0/0/2
[SW1-GigabitEthernet0/0/2] port link-type access
[SW1-GigabitEthernet0/0/2] port default vlan 20


#连接SW2的接口,配置为Trunk类型

[SW1] interface GigabitEthernet 0/0/22  
[SW1-GigabitEthernet0/0/22] port link-type trunk
[SW1-GigabitEthernet0/0/22] port trunk allow-pass vlan 10 20


SW2的配置如下:


[SW2] vlan batch 10 20 99

[SW2] interface GigabitEthernet 0/0/22  #连接SW2的接口
[SW2-GigabitEthernet0/0/22] port link-type trunk
[SW2-GigabitEthernet0/0/22] port trunk allow-pass vlan 10 20
[SW2] interface GigabitEthernet 0/0/24  #连接路由器的接口
[SW2-GigabitEthernet0/0/24] port link-type access
[SW2-GigabitEthernet0/0/24] port default vlan 99
#
[SW2] interface vlanif 10
[SW2-vlanif10] ip address 192.168.10.254 24
[SW2] interface vlanif 20
[SW2-vlanif20] ip address 192.168.20.254 24
[SW2] interface vlanif 99
[SW2-vlanif99] ip address 192.168.99.1 24


#为SW2配置默认路由,下一跳是路由器

[SW2] ip route-static 0.0.0.0 0.0.0.0 192.168.99.2


Router的配置如下:


[Router] interface GigabitEthernet 0/0/0

[Router-GigabitEthernet0/0/0] ip address 192.168.99.2 24

#记得为路由器配置静态路由指向vlan10及vlan20对应的网段,否则回程数据就会有问题:

[Router] ip route-static 192.168.10.0 24 192.168.99.1

[Router] ip route-static 192.168.20.0 24 192.168.99.1


本文转载网络工程师俱乐部,侵删。




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

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

相关文章

线程是什么

目录 一、教材观点 二、简述进程是如何运行的 简述进程切换原理: 三、线程是什么 线程底层是如何被管理的 四、重讲线程概念理解 一、教材观点 教材观点: 线程是一个执行分支,执行分支更细,调度成本更低。线程是进程内部的…

Android SystemServer 启动流程分析

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、SystemServer 启动的服务有哪些二、SystemServer启动总体流程概述三、SystemServer 如何启动,是谁启动的?四、 SystemServe…

解决哈希冲突

1、HashMap引入了链式寻址法来解决hash冲突,冲突的key,HashMap把这些key组成一个单向链表,然后采用尾插法把key保存到链表的尾部。 使用二次扰动函数(hash函数)来降低哈希冲突的概率,使数据平均分布。 pu…

【VUE】Unterminated template literal:拼接字符串包括<script></script>时报错误

vue拼接字符串包括时报错误提示Unterminated template literal vue拼接字符串包括script标签时报错误提示Unterminated template literal解决方法加反斜杠就可以&#xff0c;在script结束标签里边加反斜杠<\/script> 代码 htmlData: <div id"b0e5c00cc51e4a4…

svg图标颜色随父元素变换

给svg加上一下样式 fill: currentColor;注&#xff1a;为什么有的svg设置了fill: currentColor;还是一样不生效&#xff1f; 用电脑自带的txt或者代码开发工具&#xff08;如&#xff1a;HbuilderX&#xff09;打开svg文件 全局搜索 fill 把fill指定颜色去掉 保存就OK了

存储函数,存储过程的应用

查看触发器 mysql> show triggers \G *************************** 1. row ***************************Trigger: student_insert_triggerEvent: INSERTTable: studentStatement: BEGINupdate student_total set totaltotal1;ENDTiming: AFTERCreated: 2023-07-11 16:13:51…

msvcp71.dll丢失怎样修复,msvcp71.dll丢失的三个解决方法

在运行游戏&#xff0c;软件程序的时候&#xff0c;电脑提示msvcp71.dll丢失怎样修复&#xff1f;下面小编就开始介绍msvcp71.dll在电脑系统中的的目录&#xff0c;作用&#xff0c;以及丢失后三个解决方法。 目录 msvcp71.dll通常位于系统目录里&#xff1a; msvcp71.dll丢失…

本地git 提交代码时 报错 [session-4d40e187] Access denied

1、首先执行以下命令查看本地是否绑定仓库 git remote -v2、如果没有执行以下命令添加 git remote add name(仓库名) git地址 // 添加成功后执行git remote -v 检查3、提交代码到新仓库&#xff0c;执行以下代码即可 git add . git commit -m fix:init git push name(于第二…

有趣的命令——————用shell脚本实现(石头剪刀布)小游戏

vim games。sh 输入以下内容&#xff1a;#!/bin/bash echo "这是一个小游戏(石头0 剪刀1 布2)&#xff0c;放松一下:" pc$(expr $RANDOM % 3) read -p "请输入你的选择:" user if [ $pc -eq 0 -a $user -eq 2 ] || [ $pc -eq 1 -a $user -eq 0 ] || [ $pc …

单个电源模块带电感的直流压降仿真(三)

单个电源模块带电感的直流压降仿真(三) 接单个电源模块带电感的直流压降仿真(二) 设置负载Sink,按照向导逐步设置

C++好难(9):C++的多态

目录 1.多态的概念 2.多态的定义及实现&#xff1a; &#x1f349;多态的构成条件 &#x1f349;虚函数 &#x1f349;虚函数的重写 &#x1f349;虚函数重写的三个例外 &#x1f352;子类虚函数可以不加vector &#x1f352;析构函数的重写 &#x1f352;协变&#xf…

开源铸剑,五载匠心!Zilliz Cloud云服务盛装登场,引领向量数据库云时代!

2023 年注定是属于大模型和向量数据库的巅峰时刻。国内大模型的发展也迎来前所未有之机遇&#xff0c;“百模”激战正酣。在刚闭幕的世界人工智能大会上&#xff0c;国内外科技公司全线加入&#xff0c;三十余款大模型集中亮相&#xff0c;“国家队”尘埃落定&#xff0c;并正式…

接口测试(二) 优化项目分层及cookies值带入

整个项目分层如图 然后上代码 #data_test.py from openpyxl import load_workbook import json import osclass Date_test():filepath os.path.dirname(os.path.dirname(__file__))def __init__(self):self.case_id Noneself.url Noneself.data Noneself.Method Noneself…

模拟实现C++的string库的改进

之前写过&#xff0c;(8条消息) 模拟实现C的string库_Qianxueban的博客-CSDN博客 比较简单&#xff0c;我就直接截图的。我要改进一下。 1.改进string类中可以在字符串中存储\0 但我写的没有这项功能&#xff0c;究其根本就是代码我用的都是strcpy等等函数&#xff0c;应该用…

5G理论概述

文章目录 SA组网架构及协议栈4-5G核心网侧融合交互5G与4G用户标识5G网络网元和设备类型&#xff0c;接口1、AMF(Access and Mobility Management Function)&#xff0c;接入和移动管理功能2、SMF&#xff08;Session Management function&#xff09;&#xff0c;会话管理功能3…

MQTT快速入门

官网文档 前言&#xff1a; MQTT 是用于物联网连接的 OASIS 标准&#xff0c;它是一种基于发布订阅模式的、轻量级的消息传输协议&#xff0c;专为受限设备和低带宽、高延迟和不可靠的网络设计&#xff0c;并且能够提供一定的消息可靠性保证。得益于这些特性&#xff0c;MQTT…

在vite创建的vue3项目中使用Cesium标记地点(基于加载建筑样式,划分区域)

在vite创建的vue3项目中使用Cesium标记地点&#xff08;基于加载建筑样式&#xff0c;划分区域&#xff09; 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 vite.config.js文件&#…

通过平均列比较两组迭代次数

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由6张二值化的图片组成&#xff0c;让差值结构中有6个1, 行分布是0&#xff0c;1&#xff0c;1&#xff0c;1&#xff0c;1&#xff0c;2列分布是2&#xff0c;2&#xff0c;2.统计迭代次…

Java-多线程编程——基础篇及相关面试题

这里写目录标题 一、前言二、进程与线程的基本概念三、为什么Java中引入多线程&#xff1f;3.1 并行处理3.2 提高性能3.3 提高响应能力3.4 资源共享3.5 异步编程 四、Java多线程-创建多线程的类和接口4.1 Thread类4.2 Runnable接口 五、示例代码5.1 使用Thread类创建多线程六、…

【Django学习】(十二)GenericAPIView_过滤_排序_分页

上篇文章初步接触了GenericAPIView&#xff0c;这次来更加深入的学习它&#xff0c;了解里面的一些使用和方法 get_object&#xff1a;源码中&#xff1a;处理查询集&#xff0c;并含有所需要得pk值,lookup_fieldget_queryset&#xff1a;源码中&#xff1a;先判断queryset是否…