VLAN 是什么意思:一台交换机怎样分出多个广播域
VLAN(Virtual LAN,虚拟局域网)是在交换机上用编号把端口分组,每组是一个独立的广播域:同一 VLAN 的端口之间正常二层通信,不同 VLAN 之间互不可见,就像接在不同的交换机上。这个编号就是 VLAN ID,取值 1–4094;帧经过多个 VLAN 共用的链路时,靠 802.1Q 标签(tag)携带它。
VLAN 是什么意思?VLAN 是 Virtual Local Area Network 的缩写,中文叫虚拟局域网。它在一台物理交换机上划出多个逻辑上的局域网:交换机给每个端口指定一个编号,也就是 VLAN ID,只在编号相同的端口之间转发帧,广播也只发给同一 VLAN 的端口。于是一台 48 口交换机可以同时承载业务网、管理网和 IPMI 网,彼此在二层上互不相通,效果和用三台交换机分别组网一样。VLAN 的标准是 IEEE 802.1Q,VLAN ID 是一个 12 位的二进制数,可用范围 1–4094。
没有 VLAN 时,一台交换机就是一个广播域
交换机转发靠 MAC 地址表:每收到一个帧,先记下源 MAC 来自哪个端口,再按目的 MAC 查表,查到了就只从对应端口发出。查不到的目的 MAC(未知单播),以及目的地址为 FF:FF:FF:FF:FF:FF 的广播帧,会被泛洪到除来源端口以外的所有端口。
ARP 请求、DHCP 发现报文都是广播。在一台出厂配置的交换机上,所有端口默认都在 VLAN 1,24 个端口就是一个广播域:任何一台服务器发出的 ARP 请求,其余 23 个端口都会收到,服务器之间在二层上完全可见。想把数据库服务器和对外的 Web 服务器隔开,或者把 BMC 管理口单独组一个网,在没有 VLAN 的年代只能多买交换机、分开布线。
交换机怎样用 VLAN 把广播域切开
划了 VLAN 之后,交换机多做了三件事:
- 给每个端口分配 VLAN:例如 1–4 口属于 VLAN 10,5–8 口属于 VLAN 20。
- 给每个进入的帧确定所属 VLAN:从 3 口进来的帧,在交换机内部就属于 VLAN 10。
- 按 VLAN 查表、按 VLAN 泛洪:MAC 地址表以“VLAN + MAC”为索引,广播和未知单播只发往同一 VLAN 的其他端口。
以一台 8 口交换机为例,假设 1 口的服务器已经知道其他服务器的 MAC:
| 来源 | 帧 | 交换机怎么处理 | 送到哪些端口 |
|---|---|---|---|
| 1 口(VLAN 10) | ARP 广播 | 在 VLAN 10 内泛洪 | 2、3、4 口 |
| 5 口(VLAN 20) | ARP 广播 | 在 VLAN 20 内泛洪 | 6、7、8 口 |
| 1 口(VLAN 10) | 发给 2 口服务器的单播 | 在 VLAN 10 的表项里查到 2 口 | 只有 2 口 |
| 1 口(VLAN 10) | 发给 6 口服务器的单播 | 这个 MAC 只学在 VLAN 20 里,VLAN 10 查不到,按未知单播在 VLAN 10 内泛洪 | 2、3、4 口,6 口永远收不到 |
最后一行说明了隔离从何而来:交换机根本不会把 VLAN 10 的帧送到 VLAN 20 的端口上。在思科交换机上看 MAC 地址表,第一列就是 VLAN:
Switch# show mac address-table dynamic
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
10 0050.56a1.0001 DYNAMIC Gi1/0/1
10 0050.56a1.0002 DYNAMIC Gi1/0/2
20 0050.56a1.0005 DYNAMIC Gi1/0/5
华为、H3C 用 display mac-address 查看,输出里同样有 VLAN 一列。同一个 MAC 如果同时出现在两个 VLAN 里,会是两条互不相干的表项。
VLAN 10 和 VLAN 20 的服务器要通信,只能离开二层,由三层设备转发:在三层交换机上为每个 VLAN 建一个虚拟接口作网关,或者交给路由器、防火墙。所以划分 VLAN 时,每个 VLAN 要配一个独立的子网。
VLAN ID 和 tag 是什么关系
这两个词经常混用,其实是两回事:VLAN ID 是 VLAN 的编号,是交换机给每个端口、每个帧定下的归属;tag 是把这个编号写进以太网帧的方式,只有帧经过一条承载多个 VLAN 的链路时才需要。
设想两台交换机之间只有一根线,VLAN 10 和 VLAN 20 都要从这根线过去。对端收到一个帧,凭什么判断它属于哪个 VLAN?办法是发送方在帧的源 MAC 之后插入 4 字节的 802.1Q 标签,其中 12 位就是 VLAN ID,对端读出编号,再把帧归入对应的 VLAN。帧在不同位置的状态如下:
| 位置 | 帧上有没有 tag | VLAN 归属从哪来 |
|---|---|---|
| 服务器网卡发往交换机的 access 口 | 没有 | 交换机按端口所属的 VLAN 指定 |
| 交换机内部 | 每个帧都带着内部的 VLAN 归属 | 来自端口或 tag |
| 交换机与交换机之间(trunk) | 有,写着 VLAN ID | 读 tag |
| 交换机与虚拟化宿主机之间(trunk) | 有 | 宿主机按 tag 把帧分给不同的虚拟机网络 |
| 交换机 access 口发往服务器 | 没有,发出前去掉 | — |
所以普通服务器根本不需要知道自己在哪个 VLAN,它收发的是普通以太网帧,VLAN 完全由交换机端口决定;只有交换机之间、交换机与宿主机之间的链路才“说” 802.1Q。至于每种端口具体怎样收发带标签和不带标签的帧,属于 access、trunk、hybrid 端口模式的话题,这里不展开。
VLAN ID 的取值也有讲究:
| VLAN ID | 用途 |
|---|---|
| 0 | 不代表任何 VLAN,tag 里只携带优先级 |
| 1 | 缺省 VLAN,所有端口出厂都在其中,不能删除,不建议承载业务 |
| 2–1001 | 普通范围,可以自由使用 |
| 1002–1005 | 思科保留给早期的 FDDI 和令牌环,不能使用;华为、H3C 没有这个限制 |
| 1006–4094 | 思科称为扩展范围,早期 IOS 要在 VTP 透明模式或 VTP v3 下才能创建,以设备版本为准 |
| 4095 | 保留,不能使用 |
另外,部分型号会占用一段 VLAN 作内部用途,例如思科 Nexus 系列默认保留从 3968 开始的一段 VLAN;一些 Catalyst 平台会从 1006 起给三层口分配内部 VLAN,可用 show vlan internal usage 查看。具体范围随型号和版本而定。规划全网 VLAN 编号前,先查清楚每种设备有没有这类保留段。
VLAN 和物理网段有什么区别
“物理网段”指一个网段独占一台或一组交换机,谁和谁在一起由物理连接决定;VLAN 则由配置决定。机房里两种做法都有,区别如下:
| 对比项 | 物理网段(一个网一套交换机) | VLAN(一台交换机分多个网) |
|---|---|---|
| 隔离方式 | 物理上不相连 | 交换机按 VLAN ID 隔离,由配置决定 |
| 设备与布线 | 每个网段一套交换机、一套线 | 共用交换机,跨交换机靠一条 trunk 承载多个 VLAN |
| 调整网段归属 | 到现场换线、换交换机 | 改端口的 VLAN 配置 |
| 同一网段跨机柜、跨楼层 | 要为这个网段单独拉线 | 在 trunk 上放行该 VLAN 即可延伸 |
| 带宽 | 每个网段独享自己的交换机和上联 | 多个 VLAN 共享端口、上联和交换容量 |
| 故障影响 | 一台交换机坏了只影响一个网段 | 交换机坏了,上面所有 VLAN 一起断 |
| 配置出错的后果 | 很难误连 | 端口划错 VLAN、trunk 放行错,网段就串了 |
| 适合 | 必须物理隔离的网络 | 绝大多数业务网络 |
机房里常见的折中是:业务网用 VLAN 划分;带外管理网(服务器 IPMI 口、交换机管理口)至少放进独立的 VLAN,条件允许时用独立的交换机,保证业务网出问题时还能远程进去处理。
VLAN 和子网也不是一回事
VLAN 是二层概念,决定帧能到达哪些端口;子网是三层概念,决定主机认为谁和自己在同一网段、要不要经过网关。两者通常一一对应,但交换机不会替你检查。常见的两种错配:
- 一个 VLAN 里放两个子网:10.0.10.0/24 和 10.0.20.0/24 的服务器都在 VLAN 10。它们之间要经过网关才能通信,看上去像是隔离了,但仍在同一个广播域里,彼此的 ARP、DHCP 广播照收不误,一台私设的 DHCP 服务器就能让另一个子网的机器拿错地址。
- 一个子网拆到两个 VLAN:10.0.10.0/24 的服务器一半在 VLAN 10、一半在 VLAN 20。主机认为对方和自己在同一网段,直接发 ARP 找对方,而 ARP 广播过不了 VLAN 边界,结果互相不通,也不会转去找网关。
VLAN 交换机:什么样的交换机能划 VLAN
“VLAN 交换机”不是一种单独的设备,指的是支持 802.1Q 的交换机。按能力可以分成四类:
| 交换机类型 | 能否划分 802.1Q VLAN | 能否在 VLAN 之间路由 | 机房里的位置 |
|---|---|---|---|
| 非网管交换机(傻瓜交换机) | 不能,没有配置界面 | 不能 | 只适合临时扩口,不建议放进生产网络 |
| 简易网管、智能交换机 | 多数支持;部分只提供本机有效的“端口 VLAN”,不打 802.1Q 标签,不能跨交换机延伸 | 不能 | 小型办公、监控网 |
| 二层网管交换机 | 支持,有 access、trunk 等端口模式 | 不能,VLAN 之间要上联到三层设备 | 机柜接入层 |
| 三层交换机 | 支持 | 能,用 VLANIF(SVI)作网关 | 汇聚层、核心层 |
选型时除了看支不支持,还要看规格:单台交换机能同时启用多少个 VLAN、能建多少个 VLANIF、MAC 表有多大,各型号不同,以产品规格书为准。非网管交换机串在网络里时,它无法识别 VLAN,接在它下面的设备不论原本该属于哪个 VLAN,都会挤在同一个广播域里,这是机柜里私接小交换机的常见隐患。
在管理系统里怎么落地
理解了 VLAN 和子网的关系,就会发现日常出问题的往往不是概念,而是对应关系:某个端口划进了哪个 VLAN、这个 VLAN 配的是哪个网段,台账和设备上的实际配置是否一致。Toplink DCIM 的交换机管理在服务器列表里显示每台机器所接的交换机端口、速率和 VLAN,客户上线或迁移时在网页上修改端口 VLAN,系统按厂商指令集翻译成命令下发;IP 地址管理为每个地址段登记所在的 VLAN 和网关所在的交换机。端口的 VLAN 和地址段的 VLAN 两边一对照,上面说的“一个 VLAN 两个子网”“一个子网拆进两个 VLAN”这类错配就容易发现。
常见问题
为什么不建议把业务放在 VLAN 1?
VLAN 1 是兜底的 VLAN:没做配置就接上的设备会直接落进来,思科的 CDP、VTP、DTP 等二层协议报文默认也在 VLAN 1 上收发。业务混在里面,误接入的设备就能看到业务广播,所以业务和管理都应放进单独创建的 VLAN,让 VLAN 1 保持空闲。
VLAN 不够用怎么办?
802.1Q 的 VLAN ID 只有 12 位,可用 4094 个。运营商和机房常用 QinQ(IEEE 802.1ad)在原有标签外再套一层外层标签,内外两层组合可以区分约 1,676 万(4094 × 4094)个网络;云平台则多用 VXLAN,以 24 位的 VNI 标识网段。
VLAN 和 VLANIF 是什么关系?
VLAN 是二层的广播域;VLANIF 是三层交换机为某个 VLAN 建的虚拟三层接口,思科叫 SVI(接口名形如 Vlan10),配上 IP 地址后充当这个 VLAN 的网关。一个 VLAN 如果既没有 VLANIF,也没有接到路由器或防火墙上的网关,内部能互通,但出不了这个 VLAN。