VLAN 协议

发布时间: 更新时间: 总字数:2216 阅读时间:5m 作者: IP上海 分享 网址

VLAN(Virtual Local Area Network) 虚拟局域网,一个带有 VLAN 功能的 Switch 能够同时处于多个 LAN 中,把一个交换机变成多个虚拟的交换机,VLAN 用来隔离broadcast domain(广播域)

基本概念

  • LAN(Local Area Network) 本地局域网,通常使用 HubSwitch 来连接 LAN 中的计算机。 一个 LAN 表示一个广播域,该 LAN 中的所有成员都会收到 LAN 中一个成员发出的广播包。
  • VLAN,即虚拟局域网,是一种在物理上连接到同一网络的设备(比如同一台交换机,或多台连接在一起的交换机),可以根据逻辑(而非物理位置)划分成多个独立的广播域的技术。

VLAN 解决了什么问题?

传统网络(无 VLAN) VLAN 网络
广播风暴: 整个网络是一个大广播域。任一台设备发出的广播帧,所有设备都会收到,效率低,且易造成网络拥堵(广播风暴)。 隔离广播: 将一个大广播域逻辑上分成多个小广播域。广播只在各自 VLAN 内部传播,有效抑制广播风暴。
安全问题: 属于同一物理网络的设备可以直接通信,缺乏隔离性。 提高安全: 属于不同 VLAN 的设备默认不能直接通信。只有通过**三层设备(路由器或三层交换机)**才能进行路由,增强了安全性和控制性。
移动性差: 更改部门或组别需要重新插线和改 IP 地址。 提高灵活性: 设备的物理位置不变,只需要在交换机上更改其所属的 VLAN ID 即可实现网络组的变更。

作用

  • 广播控制
  • 带宽利用
  • 降低延迟
  • 安全性(非设计作用,本身功能所附加出的)
  • 隔离性:不同 VLAN 之间的机器互相看不到

VLAN 的实现原理

VLAN 通过在以太网帧中插入一个称为 VLAN 标签(Tag,一般指 802.1Q 标签) 的字段来实现标识和隔离。这个标签包含了 VLAN ID (VID),交换机就是根据这个 ID 来判断数据包应该转发到哪个 VLAN 区域。

  • VLAN ID 12bits,VLAN ID 的最大值是 4096, 但是有效值范围是 1- 4094。

什么是 Access 口 (访问端口) 和 Trunk 口 (干道端口)?

以太网端口有三种链路类型:

  • Access:只能属于一个 VLAN,一般用于连接计算机的端口
  • Trunk:可以属于多个 VLAN,可以接收和发送多个 VLAN 的报文,一般用于交换机之间连接的接口
    • 在 OpenStack 环境中,如果让物理交换机使用 VLAN 的方式来隔离租户的话,必须将所有的端口都设置为 trunk port
  • Hybrid:属于多个 VLAN,可以接收和发送多个 VLAN 报文,既可以用于交换机之间的连接,也可以用户连接用户的计算机

Hybrid 端口和 Trunk 端口的不同之处在于 Hybrid 端口可以允许多个 VLAN 的报文发送时不打标签,而 Trunk 端口只允许缺省 VLAN 的报文发送时不打标签。

在支持 VLAN 的交换机上,所有的端口都需要被配置为特定的类型,其中最主要的两种就是 Access (访问)Trunk (干道) 端口。

1. Access 口 (访问端口)

Access 口通常用于连接终端设备,如电脑、服务器、打印机、IP 电话等。

特点 说明
连接对象 终端设备(如 PC、服务器)
VLAN 数量 只能属于一个 VLAN(即 Untagged 端口)。
数据帧 不带 VLAN 标签 (Untagged)
工作方式 入: 接收到来自终端的无标签帧后,交换机为其打上 Access 口所属 VLAN 的标签。 出: 转发数据给终端设备前,交换机剥掉 VLAN 标签,发送无标签帧。
作用 将终端设备接入到唯一的、特定的 VLAN 中。

2. Trunk 口 (干道端口)

Trunk 口用于连接网络设备,如交换机与交换机之间、交换机与路由器/防火墙之间

特点 说明
连接对象 网络设备(如交换机、路由器、防火墙)
VLAN 数量 可以同时承载一个或多个 VLAN 的流量。
数据帧 大部分数据帧必须带 VLAN 标签 (Tagged)
工作方式 透明传输: 交换机接收和发送数据时,会保留所有承载 VLAN 的标签,以区分数据包属于哪个 VLAN。 注意: Trunk 口通常也允许一个Native VLAN的流量不打标签通过。
作用 允许不同 VLAN 的数据流,只通过一根物理链路在网络设备间传输。

3. 对比总结

特性 Access 口 (访问端口) Trunk 口 (干道端口)
用途 连终端 (PC, Server) 连设备 (Switch-Switch, Switch-Router)
支持 VLAN 数 1 个 多个
数据包标签 不带标签 (Untagged) 带标签 (Tagged)
核心功能 接入特定 VLAN 跨越链路传输多个 VLAN 流量

什么是本征 VLAN (Native VLAN)?

本征 VLAN (Native VLAN) 是在 Trunk 链路(中继链路,用于在交换机之间传输多个 VLAN 流量的链路)上一个非常重要的概念。

  • 作用: 在 Trunk 链路上,大多数 VLAN 的数据帧都会被标记上 VLAN ID (例如使用 802.1Q 协议)。然而,本征 VLAN 的数据帧在 Trunk 链路上不会被标记(Untagged)
  • 默认值: VLAN 1 通常是默认的本征 VLAN
  • 数据处理:
    • 当一个交换机在 Trunk 端口上接收到一个未标记的数据帧时,它会认为这个数据帧属于本征 VLAN。
    • 如果 Trunk 端口配置了本征 VLAN,所有属于该本征 VLAN 的流量通过 Trunk 链路时不会被添加 VLAN 标签
  • 安全建议: 出于安全考虑,建议:
    1. 将本征 VLAN (Native VLAN) 从默认的 VLAN 1 更改为另外一个不使用的 VLAN ID(例如 VLAN 999)。
    2. 确保这个本征 VLAN 不用于任何用户或管理流量

简而言之:VLAN 1 特殊在于它是默认管理和控制平面 VLAN,并且通常是默认的本征 VLAN。本征 VLAN 特殊在于它的流量在 Trunk 链路上不带标签

VLAN 1 的特殊意义

  • 默认 VLAN: 在许多网络设备(尤其是交换机)上,VLAN 1 是默认的管理和控制平面 VLAN
    • 默认配置: 设备的所有端口通常默认都在 VLAN 1 中。
    • 控制流量: 许多控制平面协议(如 STP、CDP、LLDP、LACP 等)的流量在默认情况下都与 VLAN 1 相关联。
    • 管理 VLAN: 早期或在没有特殊配置的情况下,VLAN 1 经常被用作交换机的管理 VLAN。
  • 安全风险: 正因为它具有默认和特殊的地位,出于安全考虑,最佳实践通常是避免将 VLAN 1 用于用户数据或管理流量
    • 许多安全攻击(例如 VLAN 跳跃攻击)都利用了 VLAN 1 的默认设置和本征 VLAN 的特性。
    • 因此,建议将管理 VLAN 和用户 VLAN 改为 1 以外的其他 VLAN ID,并且将本征 VLAN 也改为 1 以外的其他 ID。

VLAN 的不足

  • 数量少:最多只支持 4096 个 VLAN 网络
  • 灵活性差:很难跨越 L2 的边界
  • 配置复杂
本文总阅读量 次 本站总访问量 次 本站总访客数
Home Archives Categories Tags Statistics