☁️ 第四章 构建云服务的技术
📄 一句话概括

VLAN 做的事只有一件:在同一套物理网络里,划出互不相通的逻辑分区——交换机还是那些交换机、线还是那些线,只是被逻辑地分成了几片;它是【网络虚拟化】这条线的起点,但它有两个天花板(跨 VLAN 要过路由、数量到几千就吃不住),下一节的 SDN 就是冲着这两个天花板去的。

📝 本节和前面几节的关系

前面十节讲的是【计算怎么被虚拟化】:把机器切开(4-3)、把应用隔开(4-6)。从这一节起,换到第三样东西:网络。

顺序上有讲究:计算虚拟化做完之后,问题就跑到网络上来了。原来一台物理机一个 IP,现在一台物理机里跑着几十台虚拟机——它们之间怎么通信、怎么隔离、怎么不被互相的广播干扰,就成了必须解决的问题。教材用三节(4-11 ~ 4-13)讲这一条线,VLAN 是起点。

一、它解决的是什么问题

先把要解决的麻烦说具体。二层网络(交换机连起来的那一片)有一个特点:广播会到达所有端口。

所以一片网络越大,问题越明显:

网络规模 会出现什么
几十台 无所谓
几百台 广播流量开始占带宽
上千台 一台机器的异常广播能让整片网络变慢
混合了不同部门 隔离全靠【不接到同一台交换机上】这种物理办法

VLAN 的答案:不靠物理隔离,靠给每个端口打个标签,让交换机按标签来决定【这个包能不能从这个口出去】。

注意最后一条——这个【不通】是 VLAN 安全性的来源:它是结构上的不通,不是靠规则拦下来的(这个思路和 3-14 里【私有子网的安全来自路不通】是同一个道理)。

二、动手 Demo:广播域从 1000 降到 100

看到什么算成功:

==================================================================================================
【Demo 11】VLAN:把一个大广播域切成几个小广播域
==================================================================================================
  VLAN 做的事只有一件:在同一个物理网络里,划出互不相通的逻辑分区。

  场景:一个二层网络里挂了 1000 台设备,全都在同一个广播域。

  做法                    广播域大小      结果
  --------------------------------------------------------------------------------------------
  不划分                  1000 台         任一台的广播,其余 999 台都要处理
  按部门划 4 个 VLAN      各 250 台       每台的广播只影响 249 台,降到 1/4
  按用途划 10 个 VLAN     各 100 台       广播量降到 1/10,故障被圈在 VLAN 里
  --------------------------------------------------------------------------------------------
  一个 VLAN 标签占 12 位(802.1Q 标准),所以编号上限是:

    2 的 12 次方 = 4096 个
    其中 0 和 4095 保留(有特殊用途)
    实际可用 = 4094 个(1~4094)

  教材把 VLAN 放在【网络的虚拟化】第一位置,是因为它是同一套思路的起点:
  交换机还是那台交换机、线还是那些线,只是被逻辑地分成了几片。

  但它有两个天花板:
    ① 跨 VLAN 通信要走路由器(或三层交换机),配置要一台台做
    ② VLAN 数量到几千个时,交换机的转发表就吃不住了
  下一节的 SDN,就是冲着这两个天花板去的。

读结果:

30 秒实验

在 Windows 上执行(PowerShell 或 CMD):

ipconfig /all

在 Linux 或 macOS 上执行:

ip link show

看两件事:① 网卡的 MAC 地址;② 有没有出现形如 eth0.10、vlan10 这样的接口(那表示网卡上划了 VLAN 子接口)。

做完这个你会看到一个具体的事实:VLAN 标签是打在数据帧上的——同一块物理网卡,可以同时属于好几个 VLAN(就是那些带 .10、.20 的接口)。这就是【虚拟化】这个词在网络上的含义:一块物理网卡,被逻辑地分成了多个各不相同的通道。

常见误区

  1. 错误:VLAN 是加密的,所以它能保护数据安全。——纠正:VLAN 不做加密,它只做隔离。它保证的是【这个包不会流到那个网段去】,至于包里面的内容,在链路上仍然是明文可读的。所以跨 VLAN 的数据要保密,还得靠加密(VPN、TLS 这些)。把 VLAN 当成安全措施、以为数据在里面就是安全的,是很常见的误解。

  2. 错误:VLAN 划分是网络管理员的事,跟应用和系统设计无关。——纠正:划分方式直接决定系统能怎么部署。比如【数据库和 Web 服务器分在不同的 VLAN】,那么它们之间的通信就要过三层设备,延迟和带宽都会受影响;如果某个安全设计依赖【这两个网段不通】,那它就是一个架构约束,必须写进设计文档,而不是等上线时才发现不通。判断标准是:VLAN 的边界会变成一次跨网段调用,而跨网段调用是有代价的。

  3. 错误:既然 VLAN 能隔离,那把每个应用都划一个 VLAN 最安全。——纠正:数量有上限,管理成本也随数量上升。4094 个 VLAN 的硬上限,加上【每增加一个 VLAN,就要在相关交换机上配一遍、跨 VLAN 的路由规则就要多一条】——上千个 VLAN 的网络,配置本身就是巨大的维护负担。所以现实做法是按【隔离需求】划,而不是按【应用数量】划:真正需要互相不可见的才分开,其他的共用。

  4. 错误:VLAN 是云时代的东西,是老技术了。——纠正:它仍然是云数据中心里最基础的一层,云服务商控制台里的【子网】概念,底层往往就是 VLAN 或它的扩展(VXLAN)。新东西是叠在它上面或替代它的封装方式,而不是把它丢掉。 教材把它放在【网络虚拟化】的第一条,也说明它是理解后面 SDN、扁平网络的前提。

自测三问(点开对答案) 1. 为什么说 VLAN 提供的隔离【比一堆防火墙规则更可靠】? —— 因为**它是结构上的不通,不是规则上的过滤**。规则是人配的,会配错、会漏掉、会随着人员更替而失效;而**【不在同一个 VLAN 里】这件事是交换机转发逻辑决定的**——没有配置跨 VLAN 的路由,包就是过不去,**不依赖任何人记得什么**。安全设计里有一条通用经验:**能用结构保证的,就别用规则保证。** 2. 4094 个 VLAN 的上限,为什么在云数据中心里会成为问题? —— 因为**计算虚拟化把【网络的数量需求】放大了**。物理时代,一台机器一个网段,几千个网段能撑起几千台机器;虚拟化之后,**一台物理机里可能同时跑着几十个租户或几十套环境的虚拟机,每套都要独立的网络**——于是几千个网段很快就不够了。**这正好说明了计算、存储、网络三条线是连着的**:计算这一层变了,网络那一层的上限就会被顶到。 3. VLAN 划分的粒度,怎么判断才合适? —— 回到问题的来源:**VLAN 解决的是【广播域太大】和【需要互相隔离】这两件事**。所以判断标准是两条:① 广播或者说故障影响范围,是否已经大到影响体验?② 两部分之间是否【真的不能让对方看到】?**两条都不成立的,就不用分。** 按部门分、按环境分(开发/测试/生产)、按安全等级分,都是围绕这两条来的;而【每个应用一个 VLAN】是过度设计。

相关笔记