专栏:《计算机网络基础》
对应总览: 第五篇 链路层与物理层:邻站交接与真正的「介质」
本篇角色: VLAN 专章——广播域怎么被切开、Tag 怎么走、跨 VLAN 何时要上三层
承接:《ARP / ND:IP 地址如何变成邻站门牌 MAC》
读完你能: 用广播域解释 VLAN;分清 Access / Trunk / Native;说明 SVI 如何做跨 VLAN;把「IP 都对却 ARP 无回复」接到 VLAN;用对照实验验证隔离;把云上「虚拟网络」映射回二层直觉

导读:线插着,却像不在一个局域网

上一章说:同网段通信要靠 ARP「喊一嗓子」。
ARP 请求是广播——它能传到多远,取决于广播域有多大。

现场里常有这种怪事:

两台电脑:
  A: 192.168.10.8/24
  B: 192.168.10.9/24
掩码一样、地址同网段、线都插在「同一台」交换机上
→ 就是 ping 不通
→ tcpdump 看见自己在发 ARP Request,永远等不到 Reply

很多人会先怀疑网卡驱动、防火墙、甚至重装系统。更常见的真相是:

它们被划进了不同的 VLAN——逻辑上根本不在同一个二层广播域。

VLAN(Virtual LAN)要解决的,正是在同一套交换设备、同一根上行链路上,把局域网切成多片「彼此听不见广播」的逻辑网络。物理拓扑可以共用;广播与未知单播的洪泛边界,由 VLAN 重新画。

一、概念:VLAN 在切什么?

1.1 它是什么、解决什么痛点

VLAN:在二层把端口(或帧)划分到不同广播域,使不同 VLAN 默认二层隔离——广播、未知单播洪泛通常互不可达。

没有 VLAN 时

有 VLAN 时

一台交换机 ≈ 一个大广播域

一台交换机可切成多个广播域

ARP 能吵到所有口

ARP 通常只吵到同 VLAN 的口

部门隔离往往靠「换设备 / 换线」

可在同一物理网上做逻辑隔离

广播风暴影响面更大

故障与吵闹可被限制在片内

它解决的不是「给主机再发一个 IP」,而是:

同一物理交换平面上,
如何让办公、访客、服务器「共用机柜与上行」,
却在二层上彼此听不见。

1.2 VLAN 不等于「换 IP 段」,但常常一起规划

工程上常见配套:

VLAN 10 ↔ 网段 10.10.10.0/24
VLAN 20 ↔ 网段 10.10.20.0/24

这是运维约定,方便人脑记忆与防火墙对象命名,并不是协议规定「VLAN 号必须等于网段第三段」。
真正让「同网段却不通」的,是二层没在一起;IP 规划只是让人好记。

反过来也会踩坑:

硬把不同 VLAN 的口配成同一 IP 网段
→ 仍然 ARP 不到(二层隔离)
→ 看起来像「掩码对了但局域网坏了」

所以排障时要同时问两件事:地址前缀是否对齐(网络层),以及是否同 VLAN / Trunk 是否放行(链路层)。只改掩码救不了 VLAN 切错。

1.3 和子网、SVI、安全组的边界

概念

主要在哪一层直觉

典型动作

VLAN

二层广播域隔离

切广播、限制洪泛范围

IP 子网

三层地址规划

决定「谁算邻居、谁走网关」

路由器 / SVI

让不同 VLAN 三层互通

跨网段转发

安全组 / ACL

常在三层/四层再过滤

许不许说、对哪些端口说

可以这样记节奏:

VLAN 让你们「听不见」
路由器 / SVI 让你们「跨网段说话」
防火墙 / 安全组再决定「许不许说」

云上常见的「子网互通了却业务被挡」,多半已经走出 VLAN,走到了安全组;「同网段 ARP 都失败」,则更该先回二层。

1.4 冲突域、广播域,VLAN 动的是哪一个?

现代交换以太网里,每个交换端口大致是自己的冲突域;VLAN 主要动的是广播域边界。
ARP、DHCP Discover、部分服务发现,都爱广播。VLAN 把这些噪声关进「自己的房间」,也顺便把「误插口」的影响关小。

若有人跟你说「VLAN 是为了减少冲突」——在今天的交换网络里,这话过时了;更准确的说法是:VLAN 管理广播与二层可达范围。

二、原理:802.1Q、Access、Trunk、Native、SVI

2.1 802.1Q Tag:帧上多贴一张「VLAN 纸条」

需要在链路上携带 VLAN 信息时,以太网帧会插入 VLAN Tag(IEEE 802.1Q):

目的MAC | 源MAC | [Tag: TPID + PCP/DEI + VLAN ID] | EtherType | 载荷 | FCS

常见直觉点:

字段相关

你要知道的

TPID

常见 0x8100,表示后面是 802.1Q Tag

VLAN ID(VID)

常用 1~4094(保留值视设备/标准细节)

优先级位

可做简单 QoS 分类;本篇不展开

帧变长

Tag 让帧多 4 字节;抓包与部分 MTU 讨论会碰到

带 Tag 的帧多在 Trunk 链路上走;对端交换机靠 Tag 知道它属于哪个 VLAN。
主机网卡通常发出的是无 Tag 帧;Tag 多半由交换机口规则加上或剥掉。终端「无感」,是设计目标,不是偶然。

抓包时若在主机口上很少看见 Tag,不代表 VLAN 不存在——更常见的是 Access 口已经剥干净了。

2.2 Access 口:终端侧「只属于一个 VLAN」

电脑 —— Access口(VLAN 10) —— 交换机

行为直觉:

  • 电脑发来的无 Tag 帧,交换机视为属于该口的 Access VLAN(例如 10)

  • 从该口送给电脑的帧,通常剥掉 Tag,电脑无感

  • 适合办公电脑、打印机、摄像头等「单一业务」终端

Access 配错的经典样子:两台机器 IP 同网段,线都亮,就是 ARP 无 Reply——因为它们各自 Access VLAN 不同。

2.3 Trunk 口:上行「一条线跑多个 VLAN」

接入交换机 ====Trunk==== 汇聚交换机
(VLAN 10、20、30… 的帧用 Tag 区分)

行为直觉:

  • 多 VLAN 流量复用同一根物理线

  • 两端「允许通过的 VLAN 列表」必须对齐

  • 列表漏了某个 VLAN,就会出现「接入侧有、汇聚侧无」的 VLAN 孤岛

Trunk 不是「更高级的 Access」,而是给交换机之间、交换机与能理解 Tag 的设备之间用的多路复用通道。把服务器口随手开成 Trunk、又忘了限制允许列表,有时会引入意外的二层连通或安全面扩大——生产上要按规范收紧。

2.4 Native VLAN:不打 Tag 的那一位「熟人」

Trunk 上常约定:某一 VLAN 的帧不打 Tag(称为 Native VLAN)。
历史兼容、部分管理流量、或厂商默认行为都会用到它。

坑在一致性:

交换机 A:Native = VLAN 1
交换机 B:Native = VLAN 99
→ 无 Tag 帧被双方理解成不同 VLAN
→ 难查的二层异常、意外互通或不通

排障清单里建议留一条:查 Trunk 时,顺带确认 Native VLAN 是否一致,以及生产是否把 Native 从「默认 1」改成了明确规划值。
不同厂商命令不同,记意图即可:Native 是「无 Tag 时算谁」。

2.5 不同 VLAN 如何通信?——要上三层(SVI / 路由)

仅二层交换机、又没有路由设备时:

不同 VLAN = 永久二层隔离
(这是特性,不是故障)

需要互通时,常见做法:

VLAN10 主机 ──► 接入/汇聚
                 │
                 ▼
        三层交换机 SVI(如 vlan10 = 10.10.10.1/24
                        vlan20 = 10.10.20.1/24)
                 │
                 ▼
VLAN20 主机 ◄── 路由转发(跨网段)

SVI(Switch Virtual Interface):交换机上的 VLAN 三层接口,常作为该 VLAN 内主机的默认网关。
主机 A(VLAN10)访问主机 B(VLAN20)时:

  1. A 发现目的不在本网段 → 把包交给网关(SVI10)

  2. 交换机/路由器查路由,从 SVI20 转发出去

  3. B 所在 VLAN 内再做一次邻居解析(ARP/ND)

也有「路由器单臂」(一个物理口 Trunk 多个 VLAN,路由器上建子接口)等老派拓扑;骨架相同:VLAN 负责切开,跨 VLAN 是路由问题。

跨 VLAN 仍 ping 不通时,别只盯 Tag——还要查:

SVI 是否 up、地址是否对
主机网关是否指向对应 SVI
ACL / 防火墙是否默丢
路由表是否有对端网段

2.6 和 ARP 章的咬合

同 VLAN + 同 IP 网段 → ARP 广播能到达 → 可能学到邻居
不同 VLAN             → ARP 到不了     → ip neigh 常 FAILED / 无 Reply
Trunk 漏放行          → 某段路径「像不同 VLAN」→ 同样无 Reply

所以「IP 都对却 ARP 无回复」的决策树要多几根枝:

ARP 无 Reply
  ├─ 对端关机 / 主机防火墙丢 ICMP(先区分:ARP 有没有 Reply)
  ├─ 线/口故障(link down、NO-CARRIER)
  ├─ Access VLAN 不一致
  ├─ 中间 Trunk 未允许该 VLAN
  └─ 端口隔离 / PVLAN / 无线客户端隔离(表现类似)

抓包口诀:若本机狂发 ARP Request、网线上同 VLAN 却永远没有 Reply,优先怀疑「广播域没拼上」,而不是先怀疑 IP 算术。

2.7 Tag 在路径上的「加」与「剥」(心里要有动画)

主机A(无Tag) → Access(VLAN10):打上/归入 10
     → Trunk:带 Tag 10 送往汇聚
     → 对端 Trunk:按 Tag 10 进入 VLAN10 管道
     → Access 到主机B:剥 Tag,主机B 仍无感

任一步 VLAN 映射错,动画就演砸:最常见是 Access 口划错,或 Trunk 允许列表漏号。

三、应用:园区、家用、云上你都会碰到

3.1 公司园区:部门 / 访客隔离

员工有线接入 → VLAN 办公
访客 Wi‑Fi   → VLAN 访客(常只能出公网)
服务器区     → VLAN 服务器
打印机/IoT   → 更窄的 VLAN + ACL

同一楼层交换机,靠 VLAN 而不是「人手一交换机」做隔离。
访客能上网却进不了文件服务器,经常是:无线关联成功 + 访客 VLAN + ACL,而不是「信号差」。

3.2 语音与数据共线

IP 电话与电脑有时共享一个口:数据 VLAN + 语音 VLAN(口上支持 Voice VLAN 时)。
电话注册失败、电脑却正常时,除了看 SIP/服务器,也要问:语音 VLAN 有没有在上行 Trunk 放行?口上有没有把电话帧归错 VLAN?

3.3 数据中心与多租户

机柜交换机上行 Trunk 承载大量 VLAN;再往上可能是 VXLAN 等叠加。
对主机同学:不必先啃完整数据中心架构,只要记住——多租户隔离在二层语义上,仍是「广播别漏到别人家」。

3.4 家用光猫:藏起来的业务 VLAN

家用设备常把 VLAN 藏进「IPTV 口 / 桥接 / 光猫多业务」配置里。
电视口和上网口隔离,本质也是不同业务 VLAN。插错口 = 进错广播域:电脑插进 IPTV 口,表现可以是「有链路灯却上不了网」或拿到奇怪地址。

3.5 云上的「VLAN 式」直觉

云控制台里的 VPC、子网、交换机、端口组、安全组,并不总是字面意义上的 802.1Q,但排障语言很像:

云上说法(示意)

可用的二层/隔离直觉

不同 VPC

强隔离,默认二层/三层都不通

同 VPC 不同子网

常要路由;安全组再过滤

同一子网两台 ECS

更像「同广播域邻居」;仍可能被安全组挡

弹性网卡 / 辅助私网 IP

改的是「口与地址绑定」,不是随便改掩码就能跨域

当你在云上看到「安全组已放行仍不通」,先区分:是邻居解析/路由问题,还是策略丢包。VLAN 章练的就是前半段肌肉——「到底有没有在同一个二层可达域里」。

3.6 虚拟机与 Linux 桥上的 VLAN 子接口

实验或虚拟化环境可用 VLAN 子接口建立直觉(需权限与网卡/驱动支持):

# 示意:在 eth0 上建 VLAN 10 子接口
sudo ip link add link eth0 name eth0.10 type vlan id 10
sudo ip addr add 192.168.10.8/24 dev eth0.10
sudo ip link set eth0 up
sudo ip link set eth0.10 up

这让你在主机侧「看见」Tag 与隔离。生产配置仍以交换机/云平台策略为准;乱在办公网口上建子接口,可能把实验流量送进不该进的 Trunk——只在实验室或明确允许的环境做。

清理示意:

sudo ip link delete eth0.10

四、问题定位:VLAN 配错长什么样?

4.1 经典症状清单

现象

常见 VLAN 向原因

同网段 ping 不通,ARP 无 Reply

两端 Access VLAN 不同;或其一插错口

部分业务不通、其它同楼正常

Trunk 未放行该 VLAN

某楼层整片不通

上行 Trunk 断 / VLAN 列表被改 / 汇聚故障

间歇性古怪、难复现

Native 不一致;环路叠加 VLAN;链路闪断

能通网关不能通邻桌

查是否同 VLAN;是否端口隔离 / AP 客户端隔离

跨部门访问失败但「网关能 ping」

可能二层正常,卡在跨 VLAN 路由/ACL

4.2 决策树

「局域网同网段不通」
  │
  ├─ link down / NO-CARRIER → 物理/线缆(以太网章、物理层章)
  │
  ├─ ARP 无 Reply
  │     ├─ 确认双方 IP/掩码真的同网段
  │     ├─ 确认是否同一 Access VLAN
  │     └─ 中间若有 Trunk:该 VLAN 是否允许通过
  │
  ├─ ARP 正常,上层不通 → 主机防火墙 / 对端服务 / 安全组
  │
  └─ 不同 VLAN 却期望互通 → 查 SVI/路由/ACL(三层问题)

4.3 终端侧能做的验证

ip link show
ip addr show
ip neigh show
ping -c 3 <同网段邻居>
sudo tcpdump -ni eth0 arp

观察要点:

  • Request 是否持续重发

  • 有没有对应 Reply

  • 邻居表是 REACHABLE 还是 FAILED

若 Request 狂发无 Reply,把「VLAN / 口 / Trunk / 隔离」列入怀疑,而不是只重装系统。

在有管理权限的交换机上(命令因厂商而异,记意图):

看口:该口 Access VLAN 是多少?是否 up?
看 Trunk:允许列表含不含业务 VLAN?Native 是否一致?
看 MAC 表:对端 MAC 是否出现在预期 VLAN
看 SVI:跨 VLAN 场景下三层口是否 up、有无地址

4.4 「孤岛」两种含义

孤岛类型

含义

常见抓手

VLAN 孤岛

某 VLAN 在接入有,却到不了汇聚

Trunk 漏放行、中间设备剥错 Tag

三层孤岛

二层通,但没路由 / ACL 挡住跨 VLAN

SVI、路由表、防火墙对象

排障时先问:是 ARP 级不通,还是跨网段不通——分别对应二层 VLAN 与三层策略。
把两件事混在一张工单里,最容易「改了一下午掩码」。

4.5 和环路、风暴的叠加

VLAN 能限制广播域,但不是环路免疫。错误的冗余连线加上生成树未按预期工作,仍可能在某个 VLAN 里打出风暴。
症状:某 VLAN 内主机全卡死,其它 VLAN 相对正常——这时别只重启接入交换机,要查是否二层环、是否某 VLAN 被错误透传。

五、动手:对照实验把隔离「摸实」

理想环境:两台 PC(或两台虚拟机)+ 一台可配 VLAN 的交换机/虚拟交换机。
只有 Linux 桥/VLAN 子接口时,也可做「思想实验 + 有限验证」。不要在生产办公网口上乱改 Trunk。

实验 A:同 VLAN 应通

  1. 两口都划 Access VLAN 10

  2. 两机配置同网段地址,例如 192.168.10.8/24192.168.10.9/24

  3. 互相 ping,并观察:

ip neigh show
sudo tcpdump -ni eth0 arp or icmp

预期:ARP 有 Reply,邻居可达,ping 通。

实验 B:改 VLAN,IP 不动——应断

  1. 保持 IP 不变

  2. 将其中一口改成 Access VLAN 20

  3. 再 ping、再抓 ARP

预期:ARP Request 可见(本机侧),无 Reply;ip neigh 趋向 FAILED。
这一步专门用来建立肌肉记忆:同网段是必要非充分条件。

实验 C:恢复同 VLAN——应立刻恢复

把口改回 VLAN 10,通常无需重装、无需改 IP,连通性回来。
若「改回后仍不通」,再查是否缓存了奇怪邻居状态、是否还有端口安全/隔离策略——但大多数实验室对照到这一步已经够用。

实验 D(可选):Trunk 漏放行思想实验

若有两台交换机:

  1. 中间 Trunk 先允许 VLAN 10、20

  2. 确认跨交换机的同 VLAN 主机互通

  3. 从 Trunk 允许列表去掉 VLAN 20

  4. VLAN 20 主机应变「孤岛」;VLAN 10 仍可通

把现象记成一句话留给自己:Trunk 漏放行的用户侧观感,常常就是「这层楼这业务全挂,别的业务还好」。

实验 E(可选):跨 VLAN 需要 SVI

  1. PC-A 在 VLAN10,10.10.10.8/24,网关 10.10.10.1

  2. PC-B 在 VLAN20,10.10.20.8/24,网关 10.10.20.1

  3. 三层交换机配置对应 SVI 并确保路由/转发开启

  4. 先 ping 各自网关,再互 ping

若网关通、互 ping 不通:查 ACL 与防火墙。
若网关就不通:先回到 Access/Trunk/SVI up 状态,别先怪应用。

实验 F:把一次现场写成笔记

现象:________
双方 IP/掩码:________
ARP 有无 Reply:________
Access VLAN(若可知):________
中间是否有 Trunk / 是否怀疑漏放行:________
是否本应跨 VLAN(若是,SVI/网关/ACL):________
结论落在:二层隔离 / 三层策略 / 物理链路 / 其它:________

本章小结

若只能带走几句,就带走这些:VLAN 切的是广播域;Access 给终端、Trunk 给多 VLAN 上行;Tag 在链路上说话,Native 要两端对齐;同网段却 ARP 无 Reply,优先怀疑 VLAN/口/Trunk;跨 VLAN 是路由(SVI)问题,不是改掩码能解决的。云上的隔离语言,很多仍可映射回这套二层直觉。

VLAN = 逻辑切开的广播域(二层隔离)
Access 给终端;Trunk 给上行多 VLAN
Tag(802.1Q)在链路上携带 VLAN ID;Native 两端一致
同网段却 ARP 无 Reply → 优先怀疑 VLAN/口/Trunk/隔离
跨 VLAN 通信靠三层(SVI/路由),再叠 ACL/安全组
云上的网络隔离,很多仍可用 VLAN 直觉理解
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐