VLAN 配置与 Trunk 链路
一台 48 口物理交换机,通过 VLAN 可以运行 10 个完全隔离的逻辑网络——员工区、服务器区、访客 Wi-Fi、IP 电话、监控摄像头各走各的,互不干扰,共享同一物理设备。
VLAN 基本概念
没有 VLAN:
交换机上所有端口在同一广播域
员工电脑能看到服务器的广播
一台 PC 中病毒发广播风暴,影响所有设备
有 VLAN:
每个 VLAN = 独立的广播域
VLAN 10 的广播不会进入 VLAN 20
不同 VLAN 间通信需要三层路由(路由器或三层交换机)
常见 VLAN 规划:
VLAN 1 = 默认 VLAN(不建议使用,安全风险)
VLAN 10 = 员工办公
VLAN 20 = 服务器区
VLAN 30 = 访客 Wi-Fi
VLAN 40 = IP 电话(VoIP)
VLAN 50 = 监控摄像头
VLAN 100 = 网络管理
Access 端口 vs Trunk 端口
Access 端口:连接终端设备(PC、打印机、服务器)
- 只属于一个 VLAN
- 进出的帧不带 VLAN 标记(设备无感知)
Trunk 端口:连接交换机之间、或连接三层交换机/路由器
- 可以承载多个 VLAN 的流量
- 帧上添加 802.1Q 标记(4 字节)标识所属 VLAN
802.1Q 标记(嵌入以太网帧中):
目标MAC | 源MAC | 0x8100 | VLAN标记(12bit VLAN ID) | 类型 | 数据 | FCS
↑这个字段告诉设备"这是一个带VLAN标记的帧"
VLAN 配置(Cisco IOS)
# === 创建 VLAN ===
SW1(config)# vlan 10
SW1(config-vlan)# name Staff
SW1(config-vlan)# exit
SW1(config)# vlan 20
SW1(config-vlan)# name Servers
SW1(config-vlan)# exit
# === 配置 Access 端口(连接 PC)===
SW1(config)# interface GigabitEthernet 0/1
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 10
SW1(config-if)# spanning-tree portfast # 终端设备跳过STP监听/学习
SW1(config-if)# exit
# === 配置 Trunk 端口(连接另一台交换机)===
SW1(config)# interface GigabitEthernet 0/24
SW1(config-if)# switchport trunk encapsulation dot1q
SW1(config-if)# switchport mode trunk
SW1(config-if)# switchport trunk allowed vlan 10,20,30,100
SW1(config-if)# exit
# === 验证 ===
SW1# show vlan brief
SW1# show interfaces trunk
SW1# show interfaces GigabitEthernet 0/1 switchport
Linux 配置 VLAN(802.1Q)
# 安装 VLAN 工具
apt install vlan
# 加载内核模块
modprobe 8021q
# 创建 VLAN 子接口(eth0 上的 VLAN 10)
ip link add link eth0 name eth0.10 type vlan id 10
ip link set eth0.10 up
ip addr add 10.0.10.100/24 dev eth0.10
# 永久配置(/etc/network/interfaces 或 netplan)
# Netplan(Ubuntu 20.04+):
cat /etc/netplan/01-vlan.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: false
vlans:
eth0.10:
id: 10
link: eth0
addresses: [10.0.10.100/24]
gateway4: 10.0.10.1
eth0.20:
id: 20
link: eth0
addresses: [10.0.20.100/24]
# 应用配置
netplan apply
# 验证
ip addr show eth0.10
三层交换机:VLAN 间路由
不同 VLAN 间通信需要三层(路由)——用三层交换机比外接路由器更高效:
# 三层交换机配置 VLAN 间路由(SVI - Switched Virtual Interface)
# 开启三层路由功能
SW1(config)# ip routing
# 为每个 VLAN 创建 SVI(虚拟接口,作为该 VLAN 的网关)
SW1(config)# interface vlan 10
SW1(config-if)# ip address 10.0.10.1 255.255.255.0
SW1(config-if)# no shutdown
SW1(config-if)# exit
SW1(config)# interface vlan 20
SW1(config-if)# ip address 10.0.20.1 255.255.255.0
SW1(config-if)# no shutdown
SW1(config-if)# exit
# 此后 VLAN 10 和 VLAN 20 之间可以互相路由
# 员工 (10.0.10.x) 访问服务器 (10.0.20.x):
# PC → VLAN 10 → SVI 10.0.10.1 → 路由决策 → SVI 10.0.20.1 → VLAN 20 → 服务器
Native VLAN 与安全风险
Trunk 端口有一个 Native VLAN(默认 VLAN 1):
- Native VLAN 的帧不打标签就直接发送
- 如果两端 Native VLAN 配置不同 → VLAN 跳跃攻击(VLAN Hopping)
安全最佳实践:
1. 修改 Native VLAN 为未使用的 VLAN(如 VLAN 999)
2. 或者明确标记 Native VLAN:
SW1(config-if)# vlan dot1q tag native
3. 关闭未使用的端口并划入"隔离 VLAN":
SW1(config-if)# shutdown
SW1(config-if)# switchport access vlan 999
实战拓扑:办公室网络
graph TD
Internet[互联网] --> Firewall[防火墙/路由器\n公网IP]
Firewall --> CoreSW[核心三层交换机\nVLAN 10 GW: 10.0.10.1\nVLAN 20 GW: 10.0.20.1\nVLAN 30 GW: 10.0.30.1]
CoreSW -->|Trunk: VLAN 10,20| AccessSW1[接入交换机-1楼]
CoreSW -->|Trunk: VLAN 10,30| AccessSW2[接入交换机-2楼]
CoreSW -->|VLAN 20| ServerRack[服务器机柜]
AccessSW1 -->|Access VLAN 10| PC1[员工 PC]
AccessSW1 -->|Access VLAN 20| Printer[打印机]
AccessSW2 -->|Access VLAN 10| PC2[员工 PC]
AccessSW2 -->|Access VLAN 30| AP[无线 AP\n访客 Wi-Fi]
CCNA 对应考点
考纲位置:Domain 2.2 — Configure and verify VLANs (normal range) spanning multiple switches Domain 2.3 — Configure and verify interswitch connectivity
高频考题: - Access 端口和 Trunk 端口的区别 - 802.1Q 标记的位置(嵌入以太网帧) - Native VLAN 的作用和安全风险 - VLAN 间路由:需要三层设备(路由器或三层交换机)
下一章:路由基础:静态路由与动态路由——局域网内部用 VLAN 隔离,跨网络通信需要路由器。理解路由表和最长前缀匹配,是配置和排查路由的基础。