一个很常见的现场
一家小公司,一台 24 口交换机,前台和财务要分开。把前台两台电脑划进 VLAN 10、财务划进 VLAN 20,IP 也都配好了:前台 192.168.10.x,财务 192.168.20.x,掩码都是 255.255.255.0。
结果:前台两台互相能通,财务两台互相能通,两边都能正常上网,但前台 ping 财务——目标主机不可达。
这时候最容易犯的错是回头查 IP、换网线、关防火墙,查一晚上也查不出来。因为问题根本不在三层。
VLAN 到底做了什么
一句话:VLAN 把一台交换机在逻辑上切成多台交换机。每个 VLAN 是一个独立的二层广播域,VLAN 之间的广播不会互相串。
在交换机内部,每个端口被分配一个 VLAN 号(PVID,Port VLAN ID)。收到一个不带标签的帧,就给它在入口打上这个端口的 PVID,再按 VLAN 转发。这就是 access 口的行为。
VLAN 号放在帧里。IEEE 802.1Q 在源 MAC 之后插一个 4 字节标签:
| 字段 | 长度 | 作用 |
|---|---|---|
| TPID | 2 字节,固定 0x8100 |
告诉设备这个帧带 VLAN 标签 |
| PCP | 3 位 | 优先级,QoS 用 |
| DEI | 1 位 | 丢弃资格 |
| VID | 12 位 | VLAN 号,1–4094 可用 |
所以 VLAN 上限是 4094 个(0 和 4095 保留)。插上标签后,以太网最大帧从 1518 字节变成 1522 字节——很多老设备要专门放开这个长度才不丢包。
为什么跨 VLAN 就是 ping 不通
关键一句话:VLAN 隔离的是二层,不负责三层;而 ping 的第一步必须先用 ARP 拿到对端或网关的 MAC,ARP 是广播,广播出不了 VLAN。
把那台前台电脑(192.168.10.2)ping 财务(192.168.20.2)的过程拆开:
- 算掩码:目的 192.168.20.2 不在 192.168.10.0/24 里,判定为不同网段。
- 于是不看对端,转去查网关,假设网关是 192.168.10.1。
- 发 ARP 广播问“谁是 192.168.10.1”。
- 这个网关地址如果没配在 VLAN 10 里,广播只在 VLAN 10 内循环,没有任何设备应答。
- ARP 失败 → 帧封不出来 → 报“目标主机不可达”,或者干脆超时。
这就是最容易误判的地方:现象在二层,根因是“没人做三层”。财务那台电脑物理上只隔几个端口,就在同一台交换机上,逻辑上却隔着一整个必须靠路由器才能跨越的边界。
十分钟内定性:三条命令
# Linux
ip neigh
ip route
# Windows
arp -a
route print
ipconfig /all
如果 ARP 表里网关那条是 INCOMPLETE 或 FAILED(Windows 上表现为网关 MAC 是 00-00-00-00-00-00),说明连网关的 MAC 都拿不到,问题在二层,不在路由。
交换机侧看 MAC 地址表也能佐证:同一个 MAC 只会出现在它所属的那一个 VLAN 里。如果财务那台机器的 MAC 在 VLAN 20 里,而你在 VLAN 10 里找它,说明配置本身就是对的——只是缺一台做路由的设备。
让两个 VLAN 通起来的三条路
前提只有一个:必须有一台设备同时属于两个 VLAN 并做三层转发。只有一台二层交换机是做不到的。
1. 单臂路由(router-on-a-stick)
交换机用一个 trunk 口连路由器的物理口,路由器在这个物理口上做两个子接口,一个对应 VLAN 10、一个对应 VLAN 20,各配一个网关 IP。VLAN 间流量在一条线上来回,所以叫“单臂”。
优点:不用买三层交换机,老设备也能做。缺点:这条线是瓶颈,VLAN 间所有流量都挤在一个口上。
2. 三层交换机的 SVI
在三层交换机上给每个 VLAN 建一个虚拟接口(SVI),配上网关 IP,再打开 ip routing。VLAN 间流量在交换机内部直接转发,不出线。
这是现在企业网的标准做法,也是“为什么机房里看不到路由器”的原因。
3. 家用 / 软路由
OpenWrt、iKuai 这类软路由可以直接在 LAN 上建 VLAN 感知的虚拟接口,每个 VLAN 一个网关。家里想把 IoT 设备和电脑分开,用的就是这套。
最容易踩的五个坑
- 两台机器 IP 同网段,却分在不同 VLAN。它们会互相发 ARP,但广播被隔离,永远收不到回应。现象和“IP 配错”“防火墙拦了”一模一样,只能查交换机配置。
- trunk 两端 native VLAN 不一致。不带标签的帧会落到错误的 VLAN 里,表现为时通时不通。抓包能看到标签号对不上,甚至出现两层标签。
- trunk 没放行某个 VLAN。VLAN 在交换机 A 上建了,中间 trunk 口的允许列表里没有它,跨交换机就不通。这类问题在“新建了一个 VLAN”的当天特别常见。
- 两端配置不对称。一端 trunk 允许 10,20,另一端只允许 10,那 VLAN 20 就是单通——一个方向能过、回程过不来,表现是 ping 时通时断。
- 管理 VLAN 和业务 VLAN 混用。一旦业务侧广播风暴或 ARP 欺骗爆发,你连交换机都登不进去——等于自己把后路堵死。
两个常被忽略的细节
第一,access 口出来的帧是不带标签的。因为终端网卡不认识 802.1Q。所以交换机必须在出口剥标签、在入口打 PVID。这解释了两件事:把电脑直接插在 trunk 口上通常上不了网(收到的帧带标签,网卡丢掉);支持 802.1Q 的网卡可以在系统里配 VLAN 子接口,那就能接 trunk。
第二,VLAN 不是安全边界。它只把广播隔开,防的是广播风暴和误配置,不防攻击。真要做隔离得配合 ACL 和防火墙策略。把“划了 VLAN”当成“安全了”是很常见的误解。
小结
VLAN 只做一件事:把广播域切开。切完之后每个 VLAN 是独立的二层世界,跨 VLAN 一律需要三层设备,而三层的第一步 ARP 又依赖二层广播——所以没有网关的两个 VLAN,永远通不了。
排查顺序:先确认到底同不同网段(用 IPv4 子网计算器 算,别手算),再看网关的 ARP 通不通,最后才去翻交换机配置。想先把交换机和路由器的分工弄清,看 交换机与路由器;ARP 本身的机制在 ARP 与 MAC 地址 里。
相关:端口聚合 LACP——trunk 口上再绑第二条线之前,先搞清楚单流上限不会变。
相关:802.1X 准入认证——动态 VLAN 下发的原理和 VLAN 划分是同一套东西,只是由 RADIUS 决定你进哪个 VLAN。









暂无评论内容