VLAN与Trunk的原理及配置

VLAN 与 Trunk 原理及配置详解

VLAN(Virtual Local Area Network,虚拟局域网)和 Trunk 是计算机网络中用于分割网络和高效传输数据的核心技术,广泛应用于企业级交换机(如 Cisco、华为)以提高网络安全性、灵活性和管理效率。本文将详细讲解 VLAN 和 Trunk 的原理、作用、配置方法,并结合华为 eNSP 模拟器提供实践步骤和 Wireshark 抓包验证示例。本内容基于最新网络技术标准(截至 2025 年 10 月),假设您有基本的网络知识(如 IP、MAC、交换机)。


1. VLAN 原理

定义

VLAN 是一种二层(数据链路层)技术,通过在交换机上逻辑分割网络,将一个物理 LAN 分成多个虚拟 LAN。每个 VLAN 是一个独立的广播域,隔离不同 VLAN 的广播流量,提高网络效率和安全性。VLAN 定义于 IEEE 802.1Q 标准。

核心原理

  • 广播域隔离:同一 VLAN 内的主机共享广播域,不同 VLAN 间广播隔离。
  • 示例:VLAN 10 的广播不会到达 VLAN 20。
  • 标记(Tagging):IEEE 802.1Q 在以太网帧中插入 4 字节 VLAN 标签(Tag),包含:
  • TPID(Tag Protocol Identifier):2 字节,固定为 0x8100。
  • TCI(Tag Control Information):2 字节,包括:
    • VID(VLAN ID):12 位,范围 0-4095(1-4094 常用,0 和 4095 保留)。
    • Priority:3 位,优先级(CoS,服务质量)。
    • CFI:1 位,兼容性标志(通常 0)。
  • 端口模式
  • Access 端口:连接终端设备(如 PC),只属于一个 VLAN,不加标签(Untagged)。
  • Trunk 端口:连接交换机或路由器,允许多个 VLAN 流量,带标签(Tagged)。
  • Hybrid 端口(华为特有):灵活配置,兼具 Access 和 Trunk 特性。
  • VLAN ID:每个 VLAN 有唯一 ID,数据帧根据 VID 转发到对应 VLAN。

作用

  • 网络隔离:不同部门(如财务、销售)分配不同 VLAN,防止未经授权访问。
  • 广播控制:减少广播风暴,提高带宽利用率。
  • 安全性:隔离敏感数据(如服务器 VLAN)。
  • 灵活性:逻辑分组,无需物理重新布线。

工作机制

  1. 交换机接收帧:
  • Access 端口:无标签,自动分配到端口的 VLAN(PVID)。
  • Trunk 端口:检查标签,匹配 VLAN ID 转发。
  1. 转发规则:
  • 同 VLAN:转发到对应端口。
  • 不同 VLAN:需三层路由(如路由器或三层交换机)。
  1. 标签处理:
  • 入:Access 端口添加 PVID,Trunk 端口检查标签。
  • 出:Access 端口剥离标签,Trunk 端口保留(或按配置)。

2. Trunk 原理

定义

Trunk(中继)是一种链路模式,允许交换机之间或交换机与路由器传输多个 VLAN 的流量。Trunk 端口基于 IEEE 802.1Q,使用 VLAN 标签标识不同 VLAN 的帧,通常用于互联设备。

核心原理

  • 多 VLAN 传输:Trunk 端口允许配置的 VLAN 列表(Allowed VLAN List)流量通过。
  • 标签处理
  • Tagged 帧:携带 802.1Q 标签,包含 VID,Trunk 端口直接转发。
  • Untagged 帧:Trunk 端口可配置 PVID(默认 VLAN),接收未标记帧时添加 PVID。
  • 原生 VLAN(Native VLAN)
  • 默认 VLAN(通常 VLAN 1),未标记帧分配到此 VLAN。
  • Cisco 默认 VLAN 1,华为需手动配置。
  • 封装协议
  • IEEE 802.1Q:标准封装,插入 4 字节标签。
  • ISL(Cisco 专有,过时):老设备可能使用,包裹整个帧(不推荐)。

作用

  • 跨设备 VLAN 扩展:连接交换机,确保 VLAN 流量跨设备传输。
  • 高效带宽利用:单条链路承载多个 VLAN,减少物理端口需求。
  • 灵活性:支持动态 VLAN 分配(如通过 DHCP)。

工作机制

  1. 发送端:Trunk 端口为帧添加 VLAN 标签(除 Native VLAN)。
  2. 接收端:检查标签,匹配 Allowed VLAN List 转发或丢弃。
  3. Native VLAN:未标记帧分配到 Native VLAN,发送时剥离标签。

3. VLAN 与 Trunk 配置(基于华为 eNSP)

eNSP 是华为企业网络模拟平台,适合学习 VLAN 和 Trunk 配置。以下基于 eNSP 配置一个简单场景:两台交换机(S5700)通过 Trunk 互联,连接 PC 分配到 VLAN 10 和 VLAN 20。

实验拓扑

PC1 (VLAN 10) -- GE0/0/1 [S1] GE0/0/24 -- GE0/0/24 [S2] GE0/0/1 -- PC2 (VLAN 10)
PC3 (VLAN 20) -- GE0/0/2 [S1]                GE0/0/2 -- PC4 (VLAN 20)
  • 目标
  • PC1 和 PC2 在 VLAN 10,互通。
  • PC3 和 PC4 在 VLAN 20,互通。
  • VLAN 10 和 20 隔离。
  • S1 和 S2 通过 Trunk 传输 VLAN 10 和 20。

配置步骤

  1. 启动 eNSP,搭建拓扑
  • 拖入 2 台 S5700(S1、S2),4 台 PC(PC1-PC4)。
  • 连接如上拓扑:PC1-PC4 分别连 S1 和 S2 的 GE0/0/1、GE0/0/2,S1 和 S2 的 GE0/0/24 互联。
  1. 配置 S1
   <S1> system-view
   [S1] sysname Switch1
   [Switch1] vlan batch 10 20  # 创建 VLAN 10 和 20
   [Switch1] interface GigabitEthernet 0/0/1
   [Switch1-GigabitEthernet0/0/1] port link-type access
   [Switch1-GigabitEthernet0/0/1] port default vlan 10  # PC1 分配 VLAN 10
   [Switch1-GigabitEthernet0/0/1] quit
   [Switch1] interface GigabitEthernet 0/0/2
   [Switch1-GigabitEthernet0/0/2] port link-type access
   [Switch1-GigabitEthernet0/0/2] port default vlan 20  # PC3 分配 VLAN 20
   [Switch1-GigabitEthernet0/0/2] quit
   [Switch1] interface GigabitEthernet 0/0/24
   [Switch1-GigabitEthernet0/0/24] port link-type trunk
   [Switch1-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20  # 允许 VLAN 10 和 20
   [Switch1-GigabitEthernet0/0/24] port trunk pvid vlan 1  # Native VLAN 1(可选)
   [Switch1-GigabitEthernet0/0/24] quit
  1. 配置 S2
   <S2> system-view
   [S2] sysname Switch2
   [Switch2] vlan batch 10 20
   [Switch2] interface GigabitEthernet 0/0/1
   [Switch2-GigabitEthernet0/0/1] port link-type access
   [Switch2-GigabitEthernet0/0/1] port default vlan 10  # PC2 分配 VLAN 10
   [Switch2-GigabitEthernet0/0/1] quit
   [Switch2] interface GigabitEthernet 0/0/2
   [Switch2-GigabitEthernet0/0/2] port link-type access
   [Switch2-GigabitEthernet0/0/2] port default vlan 20  # PC4 分配 VLAN 20
   [Switch2-GigabitEthernet0/0/2] quit
   [Switch2] interface GigabitEthernet 0/0/Arizona
   [Switch2-GigabitEthernet0/0/24] port link-type trunk
   [Switch2-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20
   [Switch2-GigabitEthernet0/0/24] port trunk pvid vlan 1
   [Switch2-GigabitEthernet0/0/24] quit
  1. 配置 PC IP(手动或 DHCP):
  • PC1: 192.168.10.1/24
  • PC2: 192.168.10.2/24
  • PC3: 192.168.20.1/24
  • PC4: 192.168.20.2/24
  • eNSP 中:双击 PC > Config > IP Address,设置 IP 和网关。
  1. 验证
  • PC1 ping PC2(成功,VLAN 10 互通)。
  • PC3 ping PC4(成功,VLAN 20 互通)。
  • PC1 ping PC3(失败,VLAN 隔离)。
  • 检查 VLAN 表:display vlan

4. Wireshark 抓包验证

Wireshark 可捕获 VLAN 标签流量,验证 Trunk 功能。

步骤

  1. 设置捕获
  • 在 eNSP 中,选择 S1 的 GE0/0/24(Trunk 端口)。
  • 启动 Wireshark,选对应网络接口(需配置 eNSP 网络适配器)。
  • 过滤器:eth.type == 0x8100(捕获 802.1Q 标签帧)。
  1. 触发流量
  • PC1 ping PC2,生成 VLAN 10 流量。
  • PC3 ping PC4,生成 VLAN 20 流量。
  1. 分析
  • 包结构:
    Ethernet II Type: 802.1Q Virtual LAN (0x8100) 802.1Q Virtual LAN Priority: 0 CFI: 0 VLAN ID: 10 (或 20)
  • 确认 VLAN ID 匹配(10 或 20)。
  • Native VLAN(1)帧无标签。
  1. 常见问题
  • 无 802.1Q 标签:检查端口是否为 Trunk 或交换机配置。
  • 流量丢失:检查 Allowed VLAN List 或 PVID 设置。

5. Cisco 配置对比(参考)

Cisco 交换机配置类似,但命令不同:

# S1 配置
Switch1> enable
Switch1# configure terminal
Switch1(config)# vlan 10
Switch1(config-vlan)# name SALES
Switch1(config-vlan)# vlan 20
Switch1(config-vlan)# name FINANCE
Switch1(config-vlan)# exit
Switch1(config)# interface GigabitEthernet0/1
Switch1(config-if)# switchport mode access
Switch1(config-if)# switchport access vlan 10
Switch1(config-if)# exit
Switch1(config)# interface GigabitEthernet0/2
Switch1(config-if)# switchport mode access
Switch1(config-if)# switchport access vlan 20
Switch1(config-if)# exit
Switch1(config)# interface GigabitEthernet0/24
Switch1(config-if)# switchport mode trunk
Switch1(config-if)# switchport trunk allowed vlan 10,20
Switch1(config-if)# switchport trunk native vlan 1
Switch1(config-if)# exit

差异

  • 华为:port link-type trunk,Cisco:switchport mode trunk
  • 华为:port trunk allow-pass vlan,Cisco:switchport trunk allowed vlan
  • Cisco 默认 Native VLAN 1,华为需手动配置。

6. 注意事项

  1. VLAN 规划
  • 避免过多 VLAN(4094 限制,实际建议 <100)。
  • 使用描述性名称:vlan 10 name SALES
  1. Trunk 配置
  • 确保两端 Allowed VLAN List 一致。
  • Native VLAN 一致性,避免标签丢失。
  1. 安全性
  • 配置 VLAN Access Control List(VACL)。
  • 启用 DHCP Snooping 防止未经授权 DHCP。
  1. 性能
  • Trunk 链路带宽需足够(建议千兆以上)。
  • 避免广播风暴:启用 STP(生成树协议)。
  1. eNSP 问题
  • 模拟器卡顿:增加 PC 内存,关闭无关设备。
  • 无 ping 响应:检查 IP 配置、VLAN 分配。

7. 结合前文主题

结合 DHCP

  • 配置 DHCP 服务器为 VLAN 分配 IP:
  [Switch1] dhcp enable
  [Switch1] ip pool vlan10
  [Switch1-ip-pool-vlan10] network 192.168.10.0 mask 255.255.255.0
  [Switch1-ip-pool-vlan10] gateway-list 192.168.10.1
  [Switch1-ip-pool-vlan10] quit
  [Switch1] interface vlanif 10
  [Switch1-Vlanif10] ip address 192.168.10.1 255.255.255.0
  [Switch1-Vlanif10] dhcp select global
  • Wireshark 验证:捕获 DHCP 包,检查 VLAN 10 的 DHCP Offer。

结合 Wireshark

  • 捕获 Trunk 端口流量,验证 VLAN 标签。
  • 过滤器:vlan.id == 10 查看 VLAN 10 流量。

结合 Python

  • 分析 Wireshark 导出的 CSV(含 VLAN 信息):
  import pandas as pd
  df = pd.read_csv('vlan_traffic.csv')
  vlan10 = df[df['vlan.id'] == 10]
  print(vlan10)  # VLAN 10 流量

8. 总结

  • VLAN:逻辑分割网络,隔离广播域,基于 802.1Q 标签。
  • Trunk:传输多 VLAN 流量,Tagged 帧,Native VLAN 无标签。
  • 配置:eNSP 配置 Access 端口(终端)、Trunk 端口(互联),设置 VLAN ID 和 Allowed VLAN List。
  • 验证:Wireshark 捕获 802.1Q 标签,检查 VLAN ID。
  • 结合前文:与 DHCP 集成分配 IP,与 Wireshark 验证流量,与 Python 分析数据。

如果您需要更复杂的拓扑配置(如多 VLAN 路由)、Wireshark 过滤规则或 Python 脚本,请提供细节,我可进一步定制!

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注