VLAN、Access、Trunk 到底是什么?用一个办公室组网例子讲清楚
很多人学网络,背了一堆“Access 是接入链路、Trunk 是干道链路”,但一到真机上还是搞不清:为什么 PC 要接 Access?为什么交换机之间要插 Trunk?为什么同一个交换机上的两个口会 ping 不通?
这篇不堆术语,用一个办公室组网的例子把这三个概念讲明白。
先给结论
- VLAN:把一台物理交换机在逻辑上切成多个虚拟局域网,不同 VLAN 默认互相隔离;
- Access 口:接电脑、打印机等终端,一个口只属于一个 VLAN,出端口不带标签;
- Trunk 口:接交换机、路由器、防火墙,一个口可以同时跑多个 VLAN,出端口带标签。
一句话:电脑接 Access,交换机之间接 Trunk。
先看一个没有 VLAN 的办公室
假设你公司有一个 24 口交换机,行政部、财务部、技术部的电脑都插在这台交换机上:
- 行政部:3 台电脑
- 财务部:3 台电脑
- 技术部:4 台电脑
如果什么都不配,这 10 台电脑默认都在一个广播域里。意思是:
- 任何一台电脑发广播包(比如 ARP 找网关),其他 9 台都能收到;
- 财务部发的包,技术部的网卡理论上也能看到;
- 人一多,广播包越来越多,网络就容易卡。
这时候你就需要 VLAN。
VLAN 是什么?
VLAN(Virtual Local Area Network,虚拟局域网)的作用很简单:把一台物理交换机,在逻辑上切成好几台“虚拟交换机”。
还是上面那个例子,你可以在交换机上划 3 个 VLAN:
- VLAN 10:行政部
- VLAN 20:财务部
- VLAN 30:技术部
虽然这些电脑都插在同一台物理交换机上,但:
- VLAN 10 内部的电脑可以互相通信;
- VLAN 20 内部的电脑可以互相通信;
- VLAN 10 默认不能直接访问 VLAN 20 和 VLAN 30,就像它们接在不同交换机上一样。
这样广播包只在自己 VLAN 里转发,财务部的数据也不会被技术部电脑随便抓到。
Access 口是什么?
Access 口是交换机上接终端设备的口,比如电脑、打印机、服务器。
它有两个特点:
- 这个口只能属于一个 VLAN;
- 从这个口出去的数据包,是不带 VLAN 标签的(Untagged)。
为什么电脑要接 Access?因为普通电脑网卡根本看不懂 VLAN 标签。你把 IP 地址、子网掩码、网关填好就能上网,电脑不知道自己在哪个 VLAN 里——这个“归类”的工作是交换机替它做的。
举例:
- 行政部 PC1 插在交换机 G1/0/1 口;
- 你把 G1/0/1 划进 VLAN 10;
- PC1 发出的包是不带标签的;
- 交换机一查:这个口属于 VLAN 10,好,那它发出的包就按 VLAN 10 转发。
Trunk 口是什么?
Trunk 口是交换机连交换机、连路由器、连防火墙的口。
它和 Access 最大的区别:
- 一个 Trunk 口可以同时跑多个 VLAN;
- 从 Trunk 口出去的数据包,会带上 VLAN 标签(Tagged),让对端交换机知道这个包属于哪个 VLAN。
为什么需要 Trunk?
假设你办公室有两台交换机:
- 一楼交换机:接行政部和财务部;
- 二楼交换机:接技术部和部分财务部电脑。
你希望:一楼的财务部电脑和二楼的财务部电脑在同一个 VLAN 20 里,能互相通信。
如果两台交换机之间用 Access 口连,那这根线就只能跑一个 VLAN,你财务、行政、技术三个部门就没法跨交换机了。
所以交换机之间必须用 Trunk 口:一根线同时带着 VLAN 10、20、30 的标签数据过去,对端交换机收到包后,一看标签是 VLAN 20,就知道转发给财务部的电脑。
一张表对比 Access 和 Trunk
|
对比项 |
Access |
Trunk |
|
连接对象 |
电脑、打印机、服务器等终端 |
交换机、路由器、防火墙 |
|
所属 VLAN |
只能属于 1 个 |
可以同时放行多个 VLAN |
|
带不带标签 |
出端口不带标签(Untagged) |
出端口带标签(Tagged) |
|
典型用途 |
接终端 |
设备之间级联 |
|
电脑能不能直接接 |
能,通常就是这么接 |
普通电脑直接接 Trunk 通常上不了网 |
一个最简单的配置例子(H3C Comware 风格)
不同厂商命令不一样,但逻辑是一样的。下面以 H3C 为例:
# 进入系统视图
system-view
# 创建 VLAN 10
vlan 10
name Xingzheng
# 创建 VLAN 20
vlan 20
name Caiwu
# 把 G1/0/1 口设为 Access,并划进 VLAN 10
interface GigabitEthernet1/0/1
port link-type access
port access vlan 10
# 把 G1/0/2 口设为 Access,并划进 VLAN 20
interface GigabitEthernet1/0/2
port link-type access
port access vlan 20
# 假设 G1/0/24 是连到另一台交换机的口,设为 Trunk,放行 VLAN 10 和 20
interface GigabitEthernet1/0/24
port link-type trunk
port trunk permit vlan 10 20
华为 VRP 命令写法类似,只是把 port link-type access 写成 port link-type access、port trunk allow-pass vlan 10 20 这种形式。逻辑完全一样:Access 口定 VLAN,Trunk 口放多个 VLAN 通过。
新手最容易问的三个问题
1. 为什么我把电脑接在 Trunk 口上,就上不了网?
因为普通电脑网卡不会给数据包打 VLAN 标签。Trunk 口收到一个不带标签的包,不知道它该属于哪个 VLAN,就会丢掉。接终端请用 Access 口。
2. 不同 VLAN 之间怎么通信?
默认不能直接通信。如果要让行政部访问财务部的某台服务器,需要靠三层设备(路由器或三层交换机)做 VLAN 间路由,或者靠防火墙做策略放行。这就是为什么网络里经常听到“三层交换”“单臂路由”这些词。
3. Trunk 口上的 PVID / 默认 VLAN 是什么?
Trunk 口也有一个默认 VLAN(通常是 VLAN 1),收到不带标签的包时,就把它归到这个默认 VLAN 里。不同厂商对默认 VLAN 的处理细节不一样,真机配置时要注意两端保持一致,不然会出现“偶尔能通、偶尔不通”的诡异问题。
FAQ
Q1:VLAN 是干什么用的?
A:把一台物理交换机逻辑上分成多个虚拟局域网,隔离广播、隔离不同部门之间的访问。
Q2:Access 和 Trunk 怎么选?
A:接电脑、打印机、服务器用 Access;交换机之间、交换机连路由器/防火墙用 Trunk。
Q3:同一个 VLAN 能不能跨两台交换机?
A:能,前提是两台交换机之间级联的口配成 Trunk,并放行这个 VLAN。
Q4:VLAN 之间默认能不能 ping 通?
A:不能。需要三层路由或三层交换机做 VLAN 间转发。
本文以 H3C Comware 命令为例说明原理,不同厂商、不同版本命令细节有差异,实际配置请以设备官方配置指南为准。
参考资料
- H3C 技术认证体系官方介绍:https://www.h3c.com/cn/My_H3C/Examinee/Certification_System/Technology_Certification/
- 新华三大学培训与认证体系:https://www.h3c.com/cn/Training/Training_and_Certification/
- H3CNE-RS+ 官方课程:https://www.h3c.com/cn/Training/Boutique_Activities/open_class_list/H3CNE_RS/
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)