【计算机网络】VLAN及IPVLAN技术解析

系列综述:

💞目的:本系列是个人整理为了学习VLAN相关知识的,整理期间苛求每个知识点,平衡理解简易度与深入程度。

🥰来源:材料主要源于 使用VMware组建VLAN网络实验环境 进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验自证。

🤭结语:如果有帮到你的地方,就点个赞和关注一下呗,谢谢🎈🎄🌷!!!
请先收藏!!!,后续继续完善和扩充👍(●'◡'●)


文章目录


😊点此到文末惊喜↩︎


VLAN基础知识

概述

  1. 广播帧和广播域
    • 定义
      • 广播帧:一种以太网数据帧,其目的MAC地址全为1(即FF:FF:FF:FF:FF:FF),表示该帧是发送给网络中所有设备
      • 广播域:指网络中一组相互接收广播消息的设备,也即网络中所有能接收到同样广播消息的设备集合
    • 特点
      • 共享信息:广播域内的所有设备共享接收到的广播帧
      • 限制范围:通常由路由器等设备限定边界(路由器不会转发广播帧),防止广播扩散到其他网络
      • 特殊地址:广播帧使用特殊的地址,目的MAC地址设置为1表示发送给网络中所有设备
      • 网络性能:过多的广播流量会占用大量带宽,导致网络性能下降,甚至引起"广播风暴"
      • 安全性:广播域内的设备可以相互监听和干扰,增加了潜在的安全风险
    • 作用:
      • 网络管理:常用于网络设备的发现和信息收集等任务。例如,当一台新设备加入网络时,它可能会发送一个广播帧来询问网络中的其他设备,以便了解网络结构和配置。
      • 地址解析:在IP网络中,ARP(地址解析协议)使用广播帧来将IP地址解析为MAC地址。当一个设备需要发送数据给另一个设备,但只知道目标设备的IP地址时,它会发送一个ARP请求的广播帧,询问拥有该IP地址的设备的MAC地址。
      • 服务通告:某些服务和应用程序使用广播帧来通告自身的存在。例如,网络打印机或文件服务器可能会定期发送广播帧,以便让网络中的其他设备知道它们可以提供服务。
      • 故障诊断:在网络故障诊断中,广播帧可以用来测试网络连通性。例如,使用Ping命令发送到广播地址可以帮助确定网络中哪些设备是活动的。
      • 数据传输:在某些网络协议中,如UDP(用户数据报协议),广播帧被用来向多个接收者同时发送数据。
      • 安全性和攻击:广播帧也可能被用于网络攻击,如广播风暴攻击,其中恶意设备发送大量广播帧以消耗网络资源,导致网络拥塞甚至瘫痪。
  2. 广播域分割
    • 原因:若整个网络只有一个广播域,一旦发出广播信息,就会传遍整个网络,并对域中主机带来额外的负担
    • 解决方法:路由器能够通过网络接口(LAN Interface)分割广播域,但通常路由器接口数量有限
    • 实例:ARP协议中在一个广播域中广播导致的网络带宽和大量设备的无用开销,如下:
  3. VLAN技术
    • 背景:路由器进行广播域的分割不够灵活,而二层交换机只能构建单一的广播域
    • 作用:VLAN技术能够将一台物理交换机逻辑上划分成多个广播域
    • 优缺点:利用VLAN技术有网络构成灵活多变这个优点,同时也伴随着网络构成复杂化这个缺点
  4. VLAN原理
    • 未设置VLAN的二层交换机:任何广播帧都会被转发给除接收端口外的所有其他端口(Flooding)
    • 设置VLAN的二层交换机:VLAN通过限制广播帧转发的范围分割了广播域,如图所示,通常不同颜色的VLAN使用VLAN ID进行区分
    • 本质:将一台物理交换机在逻辑上分割成了数台交换机,如果未做其他处理,VLAN间是无法通信的。
  5. VLAN间的通信
    • 问题:同一台物理交互机上,不同VLAN间居然无法进行直接通信
    • 解决:通过VLAN间路由实现VLAN间的通信的数据中继服务,可以使用普通的路由器或三层交换机
  6. VLAN标识信息
    • 作用:使得设备能够分辨汇聚链接发送的不同VLAN的数据帧
    • 原理:IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag)
    • 字段解释
字段 长度 含义 取值
TPID 2Byte Tag Protocol Identifier(标签协议标识符),表示数据帧类型。 表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。各设备厂商可以自定义该字段的值。当邻居设备将TPID值配置为非0x8100时,为了能够识别这样的报文,实现互通,必须在本设备上修改TPID值,确保和邻居设备的TPID值配置一致。
PRI 3bit Priority,表示数据帧的802.1Q优先级。 取值范围为0~7,值越大优先级越高。当网络阻塞时,设备优先发送优先级高的数据帧。
CFI 1bit Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网。 CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0。
VID 12bit VLAN ID,表示该数据帧所属VLAN的编号。 VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。
  1. 根据设备工作OSI层次的VLAN技术类型划分
    • L2(Layer 2):主要是二层交换机,工作在OSI模型的第二层(数据链路层),根据MAC地址转发帧,以实现网络内部的通信。
    • L3(Layer 3):主要是路由器,工作在OSI模型的第三层(网络层),负责在不同网络之间传输数据包,并根据IP地址进行路由选择。
    • L3s(Layer 3 Switching):主要是三层交换机,工作在OSI模型的第三层(网络层),L3s交换机包含了l2交换模块和l3路由模块,通过交换模块在数据链路层进行VLAN划分,通过路由模块在网络层进行VLAN间的路由,有助于减少网络延迟,并提高大型网络的效率。

L2(Layer 2)交换机

  1. 基本概念
    • 定义:交换机是一种用于电信号转发的网络设备,能够为连接的设备提供数据交换服务。工作在数据链路层,能够识别帧中的MAC地址信息,根据这些信息将数据帧转发到正确的端口。
    • 作用:
      • 数据转发:交换机能够根据数据帧中的MAC地址,将数据转发到正确的目的地。
      • 网络隔离:通过VLAN(虚拟局域网)技术,交换机可以将一个物理网络划分为多个逻辑网络,提高安全性。
      • 带宽管理:交换机可以为不同的端口分配不同的带宽,优化网络资源的使用
    • 原理
      • MAC地址表:交换机学习并建立MAC地址表,用于决定如何转发数据帧。
      • 交换策略:当交换机会缓存收到的数据帧,检查帧的目的MAC地址和内容完整性,并根据MAC地址表决定是直接转发到特定端口,还是广播到所有端口。
  2. 交换机器的端口类型
    • 访问链接(Access Link):只属于一个VLAN,且仅向该VLAN转发数据帧的端口,设备插入后即固定其VLAN
    • 汇聚链接(Trunk Link):通过对数据帧实现VLAN识别信息的附加,从而通过一个端口能够实现不同VLAN间通信的转发
  3. 访问链接的类型
    • 静态VLAN
      • 定义:基于端口的VLAN(PortBased VLAN),明确指定各端口属于哪个VLAN的设定方法
      • 缺点:配置操作在大量设备的网络中繁杂无比,不适合那些需要频繁改变拓扑结构的网络。
    • 动态VLAN
      • 定义:根据每个端口所连的设备信息,随时改变端口所属的VLAN
      • 特点:决定端口所属VLAN时利用的信息在OSI中的层面越高,就越适于构建灵活多变的网络。
  4. 根据OSI参照模型决定端口所属的动态VLAN类型
    • 基于MAC地址的VLAN(MAC Based VLAN):基于OSI的第二层设定访问链接,通过查询并记录端口所连设备网卡上的MAC地址来决定端口的所属,即该设备无论连接哪个端口都会被划分到指定VLAN中,但是网卡变更可能导致连接失败。
    • 基于子网的VLAN(Subnet Based VLAN):基于OSI的第三层设定访问连接,通过所连计算机的IP地址,来决定端口所属VLAN的,只要它的IP地址不变,就仍可以加入原先设定的VLAN。
    • 基于用户的VLAN(User Based VLAN):基于OSI第四层以上 设定访问连接,根据交换机各端口所连的计算机上的登录用户,来决定该端口属于哪个VLAN
  5. 如何实现跨越交换机间的VLAN信息转发
    • 原因:如果对不同交换机间相同VLAN进行接口并联,会极大降低交换机端口的利用效率和扩展性
    • 解决方法:通过汇聚链接让交换机间互联的网线集中到一根上,可认为所有交互机设备的拥有一个共享VLAN域

L3(Layer 3)VLAN间路由

  1. 概述
    • 原因:由于VLAN技术隔离二层广播域的同时,也限制了不同VLAN间的二层通信能力,导致连接在同一台交换机上的设备,只要所属的VLAN不同就无法实现直接通信。
    • 解决:VLAN间路由通过三层路由转发或交换机实现了不同VLAN间的数据包转发
  2. 不同VLAN间不通过路由就无法通信的原因
    • 在LAN内的通信,必须在数据帧头中指定通信目标的MAC地址。而TCP/IP协议通过ARP获取MAC地址
    • ARP获取MAC地址的方法是广播。VLAN对广播域进行了划分,所以导致无法解析MAC地址,进行直接通信。
  3. 在同一VLAN下设备的通信
  4. 不同VLAN下设备的通信(发送方------交换机------路由器------交换机------接收方
    • 发送方---交换机:设备A根据目标IP判断与本机不在同一网段,向所属的交换机VLAN内广播ARP请求获取默认网关的MAC地址。
    • 交换机---路由器:计算机A收到ARP响应获得路由器MAC地址R后,将数据帧发往路由器。由于路由器所连的汇聚链路端口被所有VLAN共享使用,所以交换机会根据MAC地址向路由器端口6转发附加VLAN 红 识别信息的数据帧
    • 路由器---交换机:路由器收到数据帧后,确认其所属VLAN,并交由负责对应的VLAN子接口接收。路由器根据内部路由表更改数据帧的目标MAC地址为计算机C的MAC地址,向交换器对应VLAN发送附加VLAN 蓝 识别信息的数据帧
    • 交换机---接收方:交换机收到路由器发送的数据帧后,根据VLAN识别信息检索后,去除VLAN识别信息通过端口3转发给接收方

L3s(Layer 3 Switching)三层交换机

  1. VLAN间路由的路由器速度瓶颈问题
    • 流量集中:VLAN间路的流量会集中到路由器和交换机互联的汇聚链路部分,可能导致路由器成为整个网络的瓶颈。
    • 处理较慢:相比交换机的专用数据帧硬件处理芯片,路由器通常基于软件处理,即使以缆线速度接收到数据包,也无法在不限速的条件下转发出去,因此会成为速度瓶颈
  2. 三层交换机(Layer 3 Switch)
    • 本质:增加路由功能的二层交换机,由于具备第三层路由功能,所以被称为"三层交换机"
    • 优化
      • 内置链接:在三层交换机中内置路由模块,并通过内部汇聚链路实现与交换模块的数据帧交换,从而确保相当大的带宽
      • 硬件路由:相比传统路由的软件处理,三层交换机的路由模块使用ASIC硬件处理路由,从而实现高速路由
    • 作用:通过识别IP地址实现不同VLAN之间的直接通信,从而不需要依赖外部路由器实现同一个设备上处理VLAN内的交换和VLAN间的路由,从而减少网络延迟和提高数据传输效率
  3. VLAN间路由的加速
    • 背景:在经过VLAN路由的数据帧传递过程中,并不是所有的数据都需要经过路由器(或路由模块)
    • 作用:三层交换机进行VLAN间路由时,通过查询缓存的第一次流的路由信息,实现同一流的后续数据绕过内部路由模块,从交换机内部直达转发端口
    • 示例
      • 当使用FTP传输大文件时,由于MTU(最大传输单元)的限制,IP协议会将数据分割成小块进行传输,并在接收方重新组合
      • 被分割的数据块具有相同的发送目标标识,如源IP地址、源端口号、目的IP和目的端口号
      • 流的初始数据被正确路由后,后续数据应遵循相同的路由路径。后续数据不再需要路由器进行路由处理,通过省略重复的路由操作,可以提高VLAN间路由的速度。
  4. 传统型路由器存在的意义
    • WAN连接:三层交换机大多数机型只配有LAN(以太网)接口,所以连接WAN通常还是需要路由器
    • 网络安全:用户可以通过路由器构建更为安全可靠的网络,如基于IPSec构建VPN(VirtualPrivate Network)、利用RADIUS进行用户认证等等。
    • 异构支持:路由器支持除TCP/IP协议外的多种网络协议

IP VLAN

概述

  1. 概述
    • 定义:基于网络层IP地址进行流量分离的VLAN技术,需要Linux内核版本>=4.2才能稳定实现(docker对接之前版本时存在bug)
    • 用途:主要用于大型企业或数据中心,以提高网络的灵活性和安全性。
  2. 原理
    • 核心:从一个主机接口虚拟出多个虚拟网络接口,但是所有的IPVLAN虚拟子接口都有相同的 mac地址,但可以配置不同的IP地址
    • 注意:当使用DHCP协议分配ip时,需要配置唯一的ClientID字段作为机器的标识, 所以如果使用IPVLAN则应该使用IP作为设备的唯一标识,而不是使用mac地址
  3. 作用
    • IP子网隔离:IP VLAN能够在一个物理交换机上创建多个拥有独立IP子网的虚拟局域网(VLAN),从而实现网络的逻辑分割。
    • 跨交换机通信:支持跨不同物理交换机的VLAN间通信,扩展了网络的覆盖范围
    • 灵活性:可以根据业务需求灵活地调整VLAN配置,适应动态变化的网络环境。
  4. 特点
    • 从一个主机接口虚拟出多个虚拟网络接口,但是所有的IPVLAN虚拟子接口都有相同的 mac地址,但可以配置不同的IP地址
    • 在IP层进行流量分离而不是基于MAC地址,因此,你可以看到,同属于一块宿主以太网卡的所有IPVLAN虚拟网卡的MAC地址都是一样的,因为宿主以太网卡根本不是用MAC地址来分流IPVLAN虚拟网卡的流量的。具体的流程如下图所示:
  5. 工作原理
    • VLAN Tagging:在以太网帧中插入VLAN标签(如IEEE 802.1Q标签),用于标识帧属于哪个VLAN。
    • 子网划分:在IP层面上,每个VLAN被分配一个独立的IP子网,实现网络的逻辑隔离。
    • 路由功能:交换机需要具备路由功能,以便在不同VLAN间转发带有VLAN标签的帧。
    • VLAN间路由:通过在交换机上配置VLAN间路由,实现不同VLAN间的通信。
    • VLAN管理:网络管理员可以通过管理VLAN的IP子网来控制网络流量和访问权限。
  6. 配置步骤
    • 创建VLAN:在交换机上创建VLAN,并为每个VLAN分配一个唯一的ID。
    • 分配IP子网:为每个VLAN分配一个独立的IP子网。
    • 配置VLAN接口:在交换机上配置VLAN接口,并为每个接口分配相应的IP地址。
    • 配置VLAN间路由:设置VLAN间路由规则,以允许不同VLAN间的通信。
    • 安全和访问控制:通过ACL(访问控制列表)等安全措施,控制不同VLAN间的访问权限。
  7. 类型
    • 共性:ipvlan的不同工作模式不可混用。一个父接口选择一种模式后,依附于它的所有虚拟子接口都会运行在这个模式下
    • L2模式:IPVLAN工作在数据链路层,类似于一个交换机
      • 内部转发:父接口(物理接口)作为交换机来转发同一个网络下的所有子接口(虚拟接口)的数据
      • 外部路由:如果需要发送到其他网络,报文会通过父接口的路由转发出去。
    • L3模式:IPVLAN工作在网络层,类似于路由器的功能。
      • 在各个虚拟网络和主机网络之间进行不同网络报文的路由转发工作
      • 只要父接口相同,即使虚拟机/容器不在同一个网络,也可以互相通信,因为IPVLAN会在中间做报文的转发工作。
      • 在L3模式下,不支持广播和多播流量
    • L3s模式:L3s模式与L3模式类似,区别在于启用了iptables(conn-tracking)
      • IPVLAN支持NAT和状态跟踪功能,因此被称为L3对称(L3s),性能可能略低于L3模式,但如果你选择L3s模式而不是普通的L3模式,通常是为了让conn-tracking工作
  8. 选择ipvlan还是macvlan?ipvlan和macvlan两个虚拟网络模型提供的功能,看起来差距并不大,那么什么时候需要用到ipvlan呢?要回答这个问题,我们先来看看macvlan存在的不足:1、需要大量mac地址。每个虚拟接口都有自己的mac地址,而网络接口和交换机支持的mac地址个数是有限的,在mac地址过多的情况下会造成严重的性能损失2、无法和802.11(wireless)网络一起工作
  9. ipvlan route show :查看l3的网络路由连接创建情况
  10. ip link show:查看网络连接的详细情况
  11. sudo ip netns exec netA ip link show :查看netA的网络情况
  12. 虚拟机桥接模式(https://blog.csdn.net/a__int__/article/details/111208626)
    • 桥接模式的虚拟机IP必须与主机在同一网段且子网掩码、网关与DNS也要与主机网卡一致。
  1. 在虚拟机A上,使用ip link命令创建一个IPVLAN接口,假设物理接口为eth0,IPVLAN接口命名为ipvA,并设置模式为L3:sudo ip link add ipvA link eth0 type ipvlan mode l3

网桥Bridge

  1. 早期的两端口二层通信设备
  2. Bridge 实际上就是一种旧式交换机,他们之间并没有很大的差别。Bridge 与交换机的区别在与市场,而不在与技术。交换机对网络进行分段的方式与 Bridge 相同,交换机就是一个多端口的网桥。

macVLAN

  1. 概述
    • 背景:在macvlan出现之前,通常使用接口别名ethx:y,但是实际上还是共享同一个物理网卡的MAC地址,即在数据链路层(Layer 2)上是不可区分的,从而导致所有流量仍通过同一个MAC地址进行
    • 定义:MacVLAN是一种MAC虚拟网络接口创建技术,

定义

Macvlan 是一种 Linux 内核技术,它允许你创建虚拟网络接口,这些接口在 MAC 层面表现得就像物理接口一样。它们拥有自己独立的 MAC 地址,并且可以直接连接到外部网络。

作用:在一个主机网络接口上配置多个MAC独立的虚拟网络子接口

类比:物理网卡也就相当于一个交换机,记录着对应的虚拟网卡和 MAC 地址,当物理网卡收到数据包后,会根据目的 MAC 地址判断这个包属于哪一个虚拟网卡。

问题:只要是从 Macvlan 子接口发来的数据包(或者是发往 Macvlan 子接口的数据包),物理网卡只接收数据包,不处理数据包,所以这就引出了一个问题:本机 Macvlan 网卡上面的 IP 无法和物理网卡上面的 IP 通信

Macvlan 下的虚拟机或者容器网络和主机在同一个网段中,共享同一个广播域

特点

  1. 独立的MAC地址:每个 Macvlan 接口都有自己唯一的 MAC 地址。
  2. 二层网络:Macvlan 接口工作在数据链路层(Layer 2),这意味着它们可以直接与同一局域网中的设备通信,就像物理接口一样。
  3. 无需NAT:与某些虚拟网络技术不同,Macvlan 不需要网络地址转换(NAT),因为每个接口都有全局唯一的IP地址。
  4. 网络隔离:每个 Macvlan 接口都提供了一定程度的网络隔离。
  5. 支持混杂模式:Macvlan 接口可以配置为混杂模式,以捕获所有经过的数据包。
  6. 适用于多种用途:适合于需要独立MAC地址的场景,如虚拟化、容器网络、测试环境等。

原理

Macvlan 通过在 Linux 内核中创建虚拟网络接口来实现。这些接口共享物理网络接口的硬件资源,但是每个虚拟接口都有自己的 MAC 地址。当数据包到达物理接口时,内核会根据数据包的 MAC 地址将其转发到正确的虚拟接口。

性质

  1. 桥接模式:Macvlan 可以工作在桥接模式下,其中物理接口作为桥接的一部分,虚拟接口直接连接到外部网络。
  2. 私有模式:在私有模式下,Macvlan 接口之间的通信需要通过物理接口进行,它们不可以直接相互通信。
  3. VEPA/VSMP:一些高级配置允许 Macvlan 接口在虚拟交换机中工作,如 VEPA(Vendor-Specific Path Bridging)和 VSMP(Virtual Standard Multi-Path)。
  4. 安全性:由于每个接口都有独立的 MAC 地址,Macvlan 提供了一定程度的安全性,因为每个接口的数据包都是隔离的。
  5. 性能:Macvlan 通常具有很好的性能,因为它直接利用了物理网络硬件,并且避免了像NAT这样的额外处理。
  6. 配置简单 :Macvlan 的配置相对简单,可以直接通过 Linux 的 ip 命令或网络管理工具进行配置。

总的来说,Macvlan 是一种强大的网络虚拟化技术,它提供了一种在单个物理主机上模拟多个独立网络接口的方法,这些接口在 MAC 层面上表现得就像独立的物理设备一样。

ipvlan可以ping通:https://blog.csdn.net/mr1jie/article/details/129173405

两个vlan可以ping通,在这两个vlan之上能够通过ipvlan实现通信https://blog.csdn.net/qq_38609565/article/details/127349648


少年,我观你骨骼清奇,颖悟绝伦,必成人中龙凤。 不如点赞·收藏·关注一波


🚩点此跳转到首行↩︎

参考博客

  1. 使用VMware组建VLAN网络实验环境
  2. 图文并茂讲VLAN,让你看一遍就理解VLAN
  3. Linux ipvlan详解(l2、l3、l3s和bridge、private和vepa模式)
  4. 虚拟网络技术:ipvlan
  5. 两个虚拟机创建IPVLAN互相ping通
  6. 待定引用
  7. 待定引用
  8. 待定引用
相关推荐
玉笥寻珍12 分钟前
筑牢信息安全防线:涉密计算机与互联网隔离的理论实践与风险防控
开发语言·计算机网络·安全·计算机外设·php·安全架构·安全性测试
蓝莓味柯基16 分钟前
Lodash isEqual 方法源码实现分析
开发语言
秋野酱26 分钟前
python项目参考文献
开发语言·python
uwvwko41 分钟前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
lsswear1 小时前
php fiber 应用
开发语言·php
(・Д・)ノ1 小时前
python打卡day28
开发语言·python
保利九里1 小时前
java中的方法详解
java·开发语言·python
灏瀚星空1 小时前
Python标准库完全指南:os、sys与math模块详解与实战应用
开发语言·python·microsoft
坐吃山猪1 小时前
Python-Flask-Dive
开发语言·python·flask
yyywoaini~1 小时前
序列化和反序列化hadoop实现
hadoop·eclipse·php