【计算机网络】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. 待定引用
相关推荐
小馒头学python1 分钟前
Python绘图全景式教程:提升你的数据表达力
开发语言·python·信息可视化
领头羊leo6 分钟前
【计算机网络】HTTP,DHCP, NTP&NAT
网络协议·计算机网络·http
小白学大数据19 分钟前
ScrapySharp下载器:配置代理以访问受限网站
开发语言·网络·python·数据分析·php
小佟25 分钟前
postman-9.12.2–安装包及汉化
开发语言·lua
@Sunset...32 分钟前
热更新解决方案3 —— xLua
开发语言·unity·c#·游戏引擎·lua
易辰君34 分钟前
【Python爬虫实战】深入解析 Scrapy 管道:数据清洗、验证与存储的实战指南
开发语言·爬虫·python
咖猫1 小时前
Guava 库中的 `Multiset` 是一个允许元素重复的集合
开发语言·python·guava
多客软件佳佳1 小时前
校园交友app/校园资源共享小程序/校园圈子集合二手物品交易论坛、交友等综合型生活服务社交论坛
小程序·前端框架·uni-app·php·生活·交友
zmd-zk1 小时前
spark读取普通文件
大数据·开发语言·学习·spark
only-lucky1 小时前
C++11并发与多线程(线程传参详解)
开发语言·c++